[PATCH v2] gas: support --gsframe=no

Indu Bhagat indu.bhagat@oracle.com
Sat Jul 12 16:31:24 GMT 2025


On 7/11/25 9:45 AM, Sam James wrote:
> Being able to explicitly disable SFrames on the command line is useful,
> especially when looking at a gas that enables SFrames by default. The
> binutils testsuite will benefit from this as there's testcases that don't
> expect their presence.
> 
> 	PR gas/33125
> 	* gas/as.c (parse_args): Accept --gsframe=no, --gsframe=yes.
> ---
> v2: Make clear what the default is and tweak help text.
> 

One comment below for the help text for default.

> (Note: I do have another patch for controlling the default, but that
> will come later with testsuite adjustments and it exposed some bugs
> that Indu is looking at.)
> 
>   gas/as.c | 15 ++++++++++++---
>   1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/gas/as.c b/gas/as.c
> index 78970ff2714..5c56e0fd7eb 100644
> --- a/gas/as.c
> +++ b/gas/as.c
> @@ -311,7 +311,8 @@ Options:\n\
>     fprintf (stream, _("\
>                             generate GNU Build notes if none are present in the input\n"));
>     fprintf (stream, _("\
> -  --gsframe               generate SFrame stack trace information\n"));
> +  --gsframe=[no|yes]      whether to generate SFrame stack trace information\n\
> +                          (default: no)\n"));

(default: yes)

>   # if defined (TARGET_USE_SCFI) && defined (TARGET_USE_GINSN)
>     fprintf (stream, _("\
>     --scfi=experimental     Synthesize DWARF CFI for hand-written asm\n\
> @@ -539,7 +540,7 @@ parse_args (int * pargc, char *** pargv)
>       ,{"elf-stt-common", required_argument, NULL, OPTION_ELF_STT_COMMON}
>       ,{"sectname-subst", no_argument, NULL, OPTION_SECTNAME_SUBST}
>       ,{"generate-missing-build-notes", required_argument, NULL, OPTION_ELF_BUILD_NOTES}
> -    ,{"gsframe", no_argument, NULL, OPTION_SFRAME}
> +    ,{"gsframe", optional_argument, NULL, OPTION_SFRAME}
>   # if defined (TARGET_USE_SCFI) && defined (TARGET_USE_GINSN)
>       ,{"scfi", required_argument, NULL, OPTION_SCFI}
>   # endif
> @@ -1038,7 +1039,15 @@ This program has absolutely no warranty.\n"));
>   	  break;
>   
>   	case OPTION_SFRAME:
> -	  flag_gen_sframe = 1;
> +	  if (optarg)
> +	    if (strcasecmp (optarg, "no") == 0)
> +	      flag_gen_sframe = 0;
> +	    else if (strcasecmp (optarg, "yes") == 0)
> +	      flag_gen_sframe = 1;
> +	    else
> +	      as_fatal (_("Invalid --gsframe option: `%s'"), optarg);
> +	  else
> +	    flag_gen_sframe = 1;
>   	  break;
>   
>   #endif /* OBJ_ELF */



More information about the Binutils mailing list