[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