[PATCH] arm: ignore inapplicable .arch=no...
Richard Earnshaw
Richard.Earnshaw@arm.com
Tue Jun 3 15:20:02 GMT 2025
On 30/04/2025 15:20, Jan Beulich wrote:
> On 30.04.2025 16:10, Richard Earnshaw (lists) wrote:
>> On 30/04/2025 14:34, Jan Beulich wrote:
>>> Unlike for command line options, where a base architecture needs to be
>>> provided explicitly, the .arch directive doesn't have such a
>>> requirement. Therefore it is odd that disabling of an inapplicable
>>> extension isn't silently ignored; claiming "not allowed for the current
>>> base architecture" is at best misleading. Simply skip the error path,
>>> leveraging that in such a case ARM_CLEAR_FEATURE() is (supposed to be)
>>> a no-op.
>>>
>>> --- a/gas/config/tc-arm.c
>>> +++ b/gas/config/tc-arm.c
>>> @@ -32792,7 +32792,7 @@ s_arm_arch_extension (int ignored ATTRIB
>>> break;
>>> }
>>>
>>> - if (i == nb_allowed_archs)
>>> + if (i == nb_allowed_archs && adding_value)
>>> {
>>> as_bad (_("architectural extension `%s' is not allowed for the "
>>> "current base architecture"), name);
>>
>>
>> Sorry, I don't follow the logic you have in mind. Trying to enable, for example, MVE on an a-profile architecture is completely meaningless and should be diagnosed as an error in the source file.
>
> Of course; the change here is about disabling of extensions.
>
>> Can you give an example of what you're trying to permit here?
>
> The example I noticed this was with ".arch nocrypto" under -march=all. I
> simply don't think this needs diagnosing. And if there was a diagnostic,
> I think it shouldn't say "crypto", kind of suggesting that's being turned
> on, not off.
>
> Jan
Sorry for dropping the ball on this.
I agree the message is misleading. But you've also changed the
subsequent logic here as well, and I'm not sure if that would be 100% safe.
Perhaps a compromise would be a tsktsk along the lines:
disabling feature `%s' has no effect on the current base architecture.
so:
if (i == nb_allowed_archs)
{
if (adding_value)
as_bad (_("architectural extension `%s' is not allowed for the "
"current base architecture"), name);
else
as_tsktsk (_"(disabling feature `%s' has no effect on the "
"current base architecture"), name);
break;
}
R.
More information about the Binutils
mailing list