[PATCH] aarch64: allow adding/removing just feature flags via .arch_extension

Marcus Shawcroft marcus.shawcroft@arm.com
Tue Nov 4 10:00:00 GMT 2014


Sorry, resending, previous attempt bounced by the list...

On 4 Nov 2014, at 07:47, Jan Beulich <JBeulich@suse.com> wrote:

>>>> On 03.11.14 at 18:44, <marcus.shawcroft@gmail.com> wrote:
>> On 24 October 2014 13:40, Jan Beulich <JBeulich@suse.com> wrote:
>>
>>> static int
>>> -aarch64_parse_features (char *str, const aarch64_feature_set **opt_p)
>>> +aarch64_parse_features (char *str, const aarch64_feature_set **opt_p,
>>> +                       char *ext)
>>
>> The new parameter here is being used as a boolean flag, represent it
>> with a bfd_boolean rather than a char *.
>
> While I was expecting a comment to that effect, I had the slight hope
> to get things accepted as is: This being an internal helper function,
> using the parameter as local variable at the same time seems more
> efficient to me. But if you insist, I'll have to convert it back.


The interface is confusing in the current form, I'd prefer it was 
written in the 'obvious' manner.

>>> @@ -7267,16 +7270,18 @@ aarch64_parse_features (char *str, const
>>>   while (str != NULL && *str != 0)
>>>     {
>>>       const struct aarch64_option_cpu_value_table *opt;
>>> -      char *ext;
>>>       int optlen;
>>>
>>> -      if (*str != '+')
>>> +      if (!ext)
>>>        {
>>> -         as_bad (_("invalid architectural extension"));
>>> -         return 0;
>>> -       }
>>> +         if (*str != '+')
>>> +           {
>>> +             as_bad (_("invalid architectural extension"));
>>> +             return 0;
>>> +           }
>>>
>>> -      str++;
>>> +         str++;
>>> +       }
>>>       ext = strchr (str, '+');
>>
>> The logic here is odd. I don;t think we want this in the case when ext
>> != NULL.  The effect is that:
>>
>> .arch_extension +crc
>>
>> ...will give a "missing extension" rather than an "unknown extension"
>> error message.
>
> Which is quite right: There is an extension name missing ahead of the
> + character. The other error message would be right too (on the
> grounds that no extension name starts with +).
>
> Jan
>

 From c-arm.texi:

.arch_extension NAME

there is no support for multiple + separated features.

Cheers
/Marcus









More information about the Binutils mailing list