[PATCH, V2 2/2] gas: elf: binutils: add new section type SHT_GNU_SFRAME

Indu Bhagat indu.bhagat@oracle.com
Sat Jul 12 16:36:41 GMT 2025


On 7/10/25 12:20 AM, Jan Beulich wrote:
> On 09.07.2025 21:12, Indu Bhagat via Binutils wrote:
>> So far, SFrame sections were of type SHT_PROGBITS.
>>
>> As per ELF specification, SHT_PROGBITS indicates that the section holds
>> information defined by the program, whose format and meaning are
>> determined solely by the program.
>>
>> On the linker side, SHT_PROGBITS should be reserved for the simple "cat
>> contents after applying relocs" semantics.
>>
>> Currently, the only way to know that a section contains SFrame stack
>> trace data is if consumer checks for section name.  Such a check for
>> section name is not quite conformant to ELF principles.
>>
>> Some of this was discussed here
>> https://sourceware.org/pipermail/binutils/2025-March/140181.html
>>
>> With this change, the SFrame sections generated by gas, ld will have
>> section type set to SHT_GNU_SFRAME.   The new section type is defined in
>> the SHT_LOOS/SHT_HIOS space.  The SFrame parsing routine
>> _bfd_elf_parse_sframe () now admits sections only when the the section
>> type is SHT_GNU_SFRAME.
>>
>> No special handling / validation is done at the moment for the case of
>> manual creation of SFrame sections via obj_elf_section ().  Add function
>> level comments for now to add a note about this.
>>
>> Although the default handling for (sh_type >= SHT_LOOS && sh_type <=
>> SHT_HIOS) is sufficient when SHT_GNU_SFRAME is in that range, it makes
>> sense to add it as a case of its own.
>>
>> bfd/
>> 	* elf-sframe.c (_bfd_elf_parse_sframe): Check if section type is
>> 	SHT_GNU_SFRAME.
>> 	(_bfd_elf_set_section_sframe): Set SHT_GNU_SFRAME for output
>> 	SFrame section.
>> 	* elflink.c (obj_elf_section): Use section type for check
>> 	instead of section name.
>> 	* elfxx-x86.c: Set SHT_GNU_SFRAME for SFrame sections for
>> 	.plt* sections.
>> 	* elf.c (bfd_section_from_shdr): Add case for SHT_GNU_SFRAME.
>> binutils/
>> 	* readelf.c (get_os_specific_section_type_name): Add
>> 	SHT_GNU_SFRAME.
>> gas/
>> 	* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME
>> 	set.
>> 	* config/obj-elf.c (obj_elf_attach_to_group): Add comments to
>> 	indicate no special handling for SFrame yet.
>> 	* dw2gencfi.c (cfi_finish): Set SHT_GNU_SFRAME for emitted
>> 	SFrame section.
>> ld/
>> 	* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME
>> 	set.
>> gas/testsuite/
>> 	* gas/cfi-sframe/cfi-sframe.exp: Add new test.
>> 	* gas/cfi-sframe/cfi-sframe-common-1b.d: New test.
>> 	* gas/cfi-sframe/cfi-sframe-common-1b.s: New test.
>> include/
>> 	* elf/common.h (SHT_GNU_SFRAME): Add new section type for SFrame
>> 	stack trace information.
>> libsframe/doc/
>> 	* sframe-spec.texi: Add expected ELF section type.
>>
>> ---
>> Notes:
>> The addition of SHT_GNU_SFRAME has been proposed on the gabi mailing
>> list.  Ongoing discussion:
>> https://sourceware.org/pipermail/gnu-gabi/2025q3/000546.html
>>
>> The commit of patch 2/2 in this series is contingent on when
>> the gnu-gabi addition of SHT_GNU_SFRAME is done.  But sending the series
>> now to at least be prepared to commit these for 2.45 release if things
>> proceed well.
> 
> And just to make it explicit here - okay once that precondition is met.
> 

With the gnu-gabi addition for SHT_GNU_SFRAME now in place. this has 
been committed.

Thanks





More information about the Binutils mailing list