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

Marcus Shawcroft marcus.shawcroft@gmail.com
Mon Nov 3 17:44:00 GMT 2014


Hi

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 *.

>  {
>    /* We insist on extensions being added before being removed.  We achieve
>       this by using the ADDING_VALUE variable to indicate whether we are
> @@ -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.

Cheers
/Marcus



More information about the Binutils mailing list