[PATCH 1/5] gas: add --enable-default-sframe configure option

Jan Beulich jbeulich@suse.com
Fri Aug 22 06:47:07 GMT 2025


On 15.08.2025 16:56, Sam James wrote:
> SFrames make the most sense when userland as a whole is built with them,
> so add a --enable-default-sframe configure flag to facilitate distributors
> and vendors doing that.
> 
> The primary motivation for a configure-time flag is that we don't support
> SFrame for 32-bit x86 but some packaging uses the same flags (with some
> added on top) for multilib builds (to support old binaries like games),
> and simply adding `-Wa,--gsframe` to the standard build flags isn't an
> option (*).
> 
> That aside, I believe it'll be helpful for testing and eventual adoption
> in any case.
> 
> In summary, combined with the recent --gsframe=[yes|no] support:
> * Configured with --enable-default-sframe and nothing is passed
>   => SFrames (previously no SFrames)
> * Configured with --enable-default-sframe and --gsframe=yes is passed
>   => SFrames (no change from before)
> * Configured with --enable-default-sframe and --gsframe=no is passed
>   => No SFrames (no change from before)
> * Configured with --enable-default-sframe and --gsframe is passed
>   => SFrames (no change from before)
> 
> * Configured with --disable-default-sframe and nothing is passed
>   => No SFrames (no change from before)
> * Configured with --disable-default-sframe and --gsframe=yes is passed
>   => SFrames (no change from before)
> * Configured with --disable-default-sframe and --gsframe=no is passed
>   => No SFrames (no change from before)
> * Configured with --disable-default-sframe and --gsframe is passed
>   => SFrames (no change from before)

Since you mention them separately: Am I under the wrong impression that
--gsframe and --gsframe=yes are actually synonyms?

> I've introduced a sframe_as_bad macro on Indu's suggestion. A following
> patch uses its sibling sframe_as_warn heavily and having symmetry plus
> the macro as a form of documentation of intent seems useful.
> 
> (*) It gets added to multilib builds too and then we hit the
>     `.sframe not supported for target` error in gas/dw2gencfi.c.
> 
> gas/
> 	PR gas/33126
> 	* as.c (enum gen_sframe_option): Initialize if DEFAULT_SFRAME.
> 	* config.in (DEFAULT_SFRAME): New.
> 	* configure: Regenerate.
> 	* configure.ac: Add --enable-default-sframe.
> 	* doc/as.texi: Document --enable-default-sframe.
> 	* dw2gencfi.c (cfi_finish): Don't warn if SFrames are enabled
> 	by default but unavailable for this target.
> 	* gen-sframe.h (sframe_as_bad): New macro.

Looks okay to me, just one nit:

> --- a/gas/dw2gencfi.c
> +++ b/gas/dw2gencfi.c
> @@ -2598,9 +2598,10 @@ cfi_finish (void)
>  
>    /* Generate SFrame section if the user:
>  	- enables via the command line option, or
> +	- default-enabled at configure-time via --enable-default-sframe, or
>  	- specifies .sframe in the .cfi_sections directive and does not disable
>  	  via the command line.  */
> -  if (flag_gen_sframe == GEN_SFRAME_ENABLED
> +  if (flag_gen_sframe == GEN_SFRAME_ENABLED || flag_gen_sframe == GEN_SFRAME_CONFIG_ENABLED

Line too long.

Feel free to put in with this adjusted.

Jan


More information about the Binutils mailing list