diff options
author | Jens Remus <jremus@linux.ibm.com> | 2025-07-11 10:29:40 +0200 |
---|---|---|
committer | Jens Remus <jremus@linux.ibm.com> | 2025-07-11 10:29:40 +0200 |
commit | 22472454fab8ce0596d68a78431864812d769dfb (patch) | |
tree | 0a975a7ef5ac52830f49ec51f68be11c8442e2c3 /gdb/python/python.c | |
parent | 955570f0973d5ba361d5e63d26439947270c7954 (diff) | |
download | binutils-22472454fab8ce0596d68a78431864812d769dfb.zip binutils-22472454fab8ce0596d68a78431864812d769dfb.tar.gz binutils-22472454fab8ce0596d68a78431864812d769dfb.tar.bz2 |
s390: Add SFrame stack trace information for .plt section
Enable SFrame stack tracing through PLT entries. Based on x86-64.
On s390x both PLT0 and PLTn entries are 32-bytes in size. Their code
neither alters the stack pointer (SP), frame pointer (FP), nor return
address (RA) registers. Therefore the PLT0 can be represented using
a SFrame FDE of type PCINC with a single SFrame FRE and the PLTn can
be represented using a SFrame FDE of type PCMASK, with a repetition
block size of 32 (PLTn size), and a single SFrame FRE.
Note that as both the PLT0 entry and the PLTn entries have equal size
and could both be represented using the identical SFrame FRE, the whole
.plt section on s390x could be represented using a single SFrame FDE of
type PCMASK, with a repetition block size of 32 (PLT0 and PLTn size),
and a single SFrame FRE. Keep the x86-64 logic with separate SFrame
FDEs for PLT0 and PLTn, to ease potential generalization of the .sframe
for .plt generation logic among architectures.
bfd/
* elf64-s390.c: Include sframe.h and sframe-api.h.
(PLT_SFRAME_FDE_START_OFFSET, SFRAME_PLT0_MAX_NUM_FRES,
SFRAME_PLTN_MAX_NUM_FRES, elf_s390x_sframe_plt_fre,
elf_s390x_sframe_plt): New .sframe template for .plt section.
(elf_s390_link_hash_table): Add plt_cfe_ctx, plt_sframe, and
sframe_plt fields.
(_bfd_s390_elf_create_sframe_plt): New function. Fill in
.sframe section for .plt section.
(_bfd_s390_elf_write_sframe_plt): New function. Write .sframe
section.
(elf_s390_create_dynamic_sections): Create .sframe section for
.plt section.
(elf_s390_late_size_sections): Call
_bfd_s390_elf_create_sframe_plt and
_bfd_s390_elf_write_sframe_plt.
(elf_s390_finish_dynamic_sections): Write .plt section start
into .sframe FDE covering .plt section. Call
_bfd_elf_merge_section_sframe on htab->plt_sframe.
ld/
* NEWS: Add news entry.
ld/testsuite/
* ld-s390/s390.exp: Add new test.
* ld-s390/sframe-plt-1.d: New linker-generated .sframe for .plt
test.
* ld-s390/sframe-simple-1.d: Adjust expected test output due to
linker-generated .sframe for .plt.
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Diffstat (limited to 'gdb/python/python.c')
0 files changed, 0 insertions, 0 deletions