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

Sam James sam@gentoo.org
Tue Jul 15 02:01:59 GMT 2025


"H.J. Lu" <hjl.tools@gmail.com> writes:

> On Tue, Jul 15, 2025 at 9:00 AM Sam James <sam@gentoo.org> 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.
>>
>> In summary:
>> * Nothing is passed       => no SFrames (no change from before)
>> * --gsframe is passed     => SFrames    (no change from before)
>> * --gsframe=yes is passed => SFrames    (previously rejected)
>> * --gsframe-no  is passed => no SFrames (previously rejected)
>>
>>         PR gas/33125
>>         * gas/as.c (parse_args): Accept --gsframe=no, --gsframe=yes.
>> ---
>> I've pushed this after discussing with Indu off-list and reaching
>> consensus. Thanks.
>>
>>  gas/as.c | 17 ++++++++++++++---
>>  1 file changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/gas/as.c b/gas/as.c
>> index 78970ff2714..ce89d6f5aa7 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"));
>>  # 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,17 @@ 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 */
>> --
>> 2.50.1
>>
>
> Should we apply this patch to properly indent the newly added lines?

Please do (or I can). Sorry about the mistake, it was because of a
last-minute change. Thanks.


More information about the Binutils mailing list