Files
binutils-gdb/libsframe/testsuite/libsframe.decode/DATA2
Indu Bhagat c953fe86fa [SFrame-V3] include: gas: libsframe: add 8-bits of func_info2 for extensibility in FDE
The existing field func_info (in the SFrame FDE) is used to convey important
information around the encoding and interpretation of the rest of the
stack trace data for the respective SFrame FDE: the SFrame FRE type,
SFrame FDE PC type, etc.

Currently there is 1 bit left for AArch64, and 2 bits for AMD64, s390x
(and other future ABIs to be supported).  Provision some additional
space now (specifically an additional 8-bits) for future needs for V3
and beyond.

Compared to V2, this now increases the size of SFrame FDE by 1 byte in
V3.  In this patch, the additional func_info2 byte is not used
functionally yet.  Hence, rather mechanical changes in libsframe, bfd
and libsframe/testsuite accompany.  We will put func_info2 into use in a
later patch by reserving 5 of these bits for SFrame FDE types.

With the addition of a new byte for additional func info (func_info2),
add a new arg to allow usecases like textual dumper to get all data
members in one API: sframe_decoder_get_funcdesc_v3.  To keep the APIs
symmetric looking, add new arg to sframe_encoder_add_funcdesc_v3 too.

Since bfd uses these APIs, carry out the mechanical change in the
respective APIs too.  And of course, the testsuite which exercises these
APIs.

bfd/
	* elf-sframe.c (_bfd_elf_merge_section_sframe): Get and set
	func_info2.
	* elf64-s390.c (_bfd_s390_elf_create_sframe_plt): Pass 0 for
	func_info2 for SFrame FDE for PLT.
	* elfxx-x86.c (_bfd_x86_elf_create_sframe_plt): Likewise.
gas/
	* gen-sframe.c (output_sframe_funcdesc): Emit the uint8_t for
	func_info2.
libsframe/
	* sframe-dump.c (dump_sframe_func_with_fres):
	* sframe.c (sframe_fde_tbl_init): Handle the new additional
	member.
	(sframe_encoder_write_fde): Likewise.
	* sframe.c (sframe_decoder_get_funcdesc_v3): Update func_info2.
libsframe/testsuite/
	* libsframe.decode/DATA2: Update data file with SFrame section
	data.
	* libsframe.encode/encode-1.c: Pass 0 for func_info2 arg.
	* libsframe.find/findfre-1.c: Likewise.
	* libsframe.find/findfunc-1.c: Likewise.
	* libsframe.find/plt-findfre-1.c: Likewise.
	* libsframe.find/plt-findfre-2.c: Likewise.
include/
	* sframe.h: Add new uint8_t sfde_func_info2 to
	sframe_func_desc_entry_v3.
	* sframe-api.h (sframe_decoder_get_funcdesc_v3): New arg.
	(sframe_encoder_add_funcdesc_v3): Likewise.
2026-01-15 17:02:25 -08:00

100 B