mirror of
https://github.com/bminor/binutils-gdb.git
synced 2026-02-06 15:11:31 +00:00
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.
libsframe is a support library for the GNU Binutils collection (currently used by GNU ld, objdump, etc.) to read and write SFrame section data. Note: This library is currently intended for internal use by GNU Binutils only. Strict guarantees for ABI compatibility are not provided, and external projects should not rely on the stability of these interfaces.