[PATCH v1 2/4] aarch64 gas: use bool return type for sub-option parsing

Alice Carlotti alice.carlotti@arm.com
Sat Feb 28 18:10:28 GMT 2026


On Tue, Feb 24, 2026 at 04:26:15PM +0000, Matthieu Longo wrote:
> The signature of the functions used to decode sub-options mirrors that
> of md_parse_option(). They currently return an integer, but the return
> value is always set to 0 on failure and 1 on success, which exactly
> matches boolean semantics.
> These functions likely predate C99 as the minimum supported C standard
> in binutils. Today, there is no good reason to keep this legacy interface
> instead of using a proper boolean type.
> 
> This patch updates the sub-option parsing functions to return a boolean
> and adjusts the corresponding code accordingly.
> ---
>  gas/config/tc-aarch64.c | 34 +++++++++++++++++-----------------
>  1 file changed, 17 insertions(+), 17 deletions(-)

This patch is ok, thanks

Alice

> 
> diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
> index 56d97a91f5b..050826c0617 100644
> --- a/gas/config/tc-aarch64.c
> +++ b/gas/config/tc-aarch64.c
> @@ -11208,7 +11208,7 @@ aarch64_feature_enable_set (aarch64_feature_set set)
>    return set;
>  }
>  
> -static int
> +static bool
>  aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>  			bool ext_only)
>  {
> @@ -11221,7 +11221,7 @@ aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>      {
>        /* No extensions, so just set the virtual feature bits and return.  */
>        *ext_set = aarch64_update_virtual_dependencies (*ext_set);
> -      return 1;
> +      return true;
>      }
>  
>    /* We insist on extensions being added before being removed.  We achieve
> @@ -11241,7 +11241,7 @@ aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>  	  if (*str != '+')
>  	    {
>  	      as_bad (_("invalid architectural extension"));
> -	      return 0;
> +	      return false;
>  	    }
>  
>  	  ext = strchr (++str, '+');
> @@ -11274,7 +11274,7 @@ aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>        if (optlen == 0)
>  	{
>  	  as_bad (_("missing architectural extension"));
> -	  return 0;
> +	  return false;
>  	}
>  
>        gas_assert (adding_value != -1);
> @@ -11302,7 +11302,7 @@ aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>        if (opt->name == NULL)
>  	{
>  	  as_bad (_("unknown architectural extension `%s'"), str);
> -	  return 0;
> +	  return false;
>  	}
>  
>        str = ext;
> @@ -11323,10 +11323,10 @@ aarch64_parse_features (const char *str, const aarch64_feature_set **opt_p,
>      AARCH64_MERGE_FEATURE_SETS (*ext_set, *ext_set, sve_sve2);
>  
>    *ext_set = aarch64_update_virtual_dependencies (*ext_set);
> -  return 1;
> +  return true;
>  }
>  
> -static int
> +static bool
>  aarch64_parse_cpu (const char *str)
>  {
>    const struct aarch64_cpu_option_table *opt;
> @@ -11341,7 +11341,7 @@ aarch64_parse_cpu (const char *str)
>    if (optlen == 0)
>      {
>        as_bad (_("missing cpu name `%s'"), str);
> -      return 0;
> +      return false;
>      }
>  
>    for (opt = aarch64_cpus; opt->name != NULL; opt++)
> @@ -11352,10 +11352,10 @@ aarch64_parse_cpu (const char *str)
>        }
>  
>    as_bad (_("unknown cpu `%s'"), str);
> -  return 0;
> +  return false;
>  }
>  
> -static int
> +static bool
>  aarch64_parse_arch (const char *str)
>  {
>    const struct aarch64_arch_option_table *opt;
> @@ -11370,7 +11370,7 @@ aarch64_parse_arch (const char *str)
>    if (optlen == 0)
>      {
>        as_bad (_("missing architecture name `%s'"), str);
> -      return 0;
> +      return false;
>      }
>  
>    for (opt = aarch64_archs; opt->name != NULL; opt++)
> @@ -11381,7 +11381,7 @@ aarch64_parse_arch (const char *str)
>        }
>  
>    as_bad (_("unknown architecture `%s'"), str);
> -  return 0;
> +  return false;
>  }
>  
>  /* ABIs.  */
> @@ -11400,7 +11400,7 @@ static const struct aarch64_option_abi_value_table aarch64_abis[] = {
>  #endif
>  };
>  
> -static int
> +static bool
>  aarch64_parse_abi (const char *str)
>  {
>    unsigned int i;
> @@ -11408,25 +11408,25 @@ aarch64_parse_abi (const char *str)
>    if (str[0] == '\0')
>      {
>        as_bad (_("missing abi name `%s'"), str);
> -      return 0;
> +      return false;
>      }
>  
>    for (i = 0; i < ARRAY_SIZE (aarch64_abis); i++)
>      if (strcmp (str, aarch64_abis[i].name) == 0)
>        {
>  	aarch64_abi = aarch64_abis[i].value;
> -	return 1;
> +	return true;
>        }
>  
>    as_bad (_("unknown abi `%s'"), str);
> -  return 0;
> +  return false;
>  }
>  
>  struct aarch64_long_option_table
>  {
>    const char *option;			/* Substring to match.  */
>    const char *help;			/* Help information.  */
> -  int (*func) (const char *subopt);	/* Function to decode sub-option.  */
> +  bool (*func) (const char *subopt);	/* Function to decode sub-option.  */
>    char *deprecated;		/* If non-null, print this message.  */
>  };
>  
> -- 
> 2.53.0
> 


More information about the Binutils mailing list