[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