[PATCH 1/3] gas: sframe: guard block with support_sframe_p

Jan Beulich jbeulich@suse.com
Tue Jul 8 06:46:55 GMT 2025


On 07.07.2025 22:43, Indu Bhagat wrote:
> On 7/6/25 11:19 PM, Jan Beulich wrote:
>> On 07.07.2025 08:10, Indu Bhagat via Binutils wrote:
>>> SFrame is generated for ELF targets only.  Guard the block with
>>> support_sframe_p like others for consistency.
>>
>> The block was guarded already, just not ...
>>
>>> @@ -2606,6 +2601,7 @@ cfi_finish (void)
>>>   	- .sframe in the .cfi_sections directive.  */
>>>     if (flag_gen_sframe || (all_cfi_sections & CFI_EMIT_sframe) != 0)
>>>       {
>>> +#ifdef support_sframe_p
>>
>> ... by a pre-processor conditional, just ...
>>
>>>         if (support_sframe_p () && !SUPPORT_FRAME_LINKONCE)
>>
>> ... the invocation (plus the stub that you now remove). Hence the
>> description doesn't really make clear what the problem as and why a
>> change would be needed.
>>
> 
> In a later commit, we would like to do a:
>    elf_section_type (sframe_seg) = SHT_GNU_SFRAME;
> 
> This cannot be done for non-ELF targets, hence the need to guard with 
> some pre-processor conditional to enable it for only OBJ_ELF.

This is the crucial detail that's missing from the description. With
that added the patch is okay. In particular ...

>  Guarding 
> with support_sframe_p works for now, because those targets that support 
> SFrame define support_sframe_p:
>    - x86_64 and aarch64 define support_sframe_p when OBJ_ELF is defined
>    - s390x has no non-LEF target.
> 
> The other option (B) is to be explicit and say
> #if defined(support_sframe_p) && defined(OBJ_ELF)
> 
> Also, we can absolutely just use (option C):
> 
> #ifdef OBJ_ELF
>    if (support_sframe_p ()...)
>    {
>      ...
>    }
>    else
> #endif

... I think we would be better off avoiding use of OBJ_ELF where an
alternative exists, just for the (seemingly remote at this point) case
of non-ELF wanting to gain support as well.

Jan

> the last one  (option C) has to to be with the initial definition in place:
> /* Targets which support SFrame format will define this and return true.  */
> #ifndef support_sframe_p
> # define support_sframe_p() false
> #endif
> 
> 



More information about the Binutils mailing list