Files
binutils-gdb/ld/testsuite/ld-s390
Jens Remus 22472454fa 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>
2025-07-11 10:29:40 +02:00
..
2025-01-27 16:47:10 +01:00