aboutsummaryrefslogtreecommitdiff
path: root/gdb/data-directory
diff options
context:
space:
mode:
authorJens Remus <jremus@linux.ibm.com>2025-07-06 12:47:43 -0700
committerIndu Bhagat <indu.bhagat@oracle.com>2025-07-06 12:53:04 -0700
commitf851723e655f1bd58cdb4e92e1c09f222e16a494 (patch)
treee190bb88ef5364dd55adaabab2b01fb0d8e47ab1 /gdb/data-directory
parent54f153a345bc7dbab1e6ccddf604e900571119ca (diff)
downloadbinutils-master.zip
binutils-master.tar.gz
binutils-master.tar.bz2
ld: bfd: sframe: Update section size also for relocatable linksHEADmaster
For relocatable links the output .sframe section size may be wrong. This can be observed when dumping the SFrame information from the x86-64 sframe-reloc-1 test: Name Address Off Size .sframe 0000000000000000 000110 00007f Offset Type Symbol's Value Symbol's Name + Addend 000000000000001c R_X86_64_PC32 0000000000000000 .text + 1c 0000000000000030 R_X86_64_PC32 0000000000000000 .text + 65 0x00000000 e2de0201 0300f800 02000000 08000000 ................ 0x00000010 1e000000 00000000 28000000 00000000 ........(....... 0x00000020 35000000 00000000 04000000 00000000 5............... 0x00000030 00000000 25000000 0f000000 04000000 ....%........... offset 1st FRE---^^^^^^^^ ^^^^^^^^---number of FREs 0x00000040 00000000 00030801 0510f004 0410f034 ...............4 FDE info---^^ | begin of FDEs 0x00000050 0508f000 03080105 10f00404 10f02405 ..............$. 11111112222222223333333334444---FRE 1, 2, 3, 4 0x00000060 08f00000 00000000 00000000 00000000 ................ 4444^^^^... 0x00000070 00000000 00000000 00000000 000000 ............... ...^^^^^^---excessive section When running the x86-64 test cross build on a big-endian system, such as s390x, objdump and readelf fail to dump the SFrame information with the following error message: Error: SFrame decode failure: Buffer does not contain SFrame data. This is because the following check in flip_sframe() fails, which gets only invoked if the endianness of the SFrame data is different from the host system one: /* All FDEs and FREs must have been endian flipped by now. */ if ((j != ihp->sfh_num_fres) || (bytes_flipped != (buf_size - hdrsz))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ With: j=8, ihp->sfh_num_fres=8, bytes_flipped=70, buf_size=127, hdrsz=28 While at it, remove the incorrect code comment. There is no relationship between "do not update size" and the fact that the "contents have not been relocated". bfd/ * elf-sframe.c (_bfd_elf_write_section_sframe): Update section size also for relocatable links. Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Diffstat (limited to 'gdb/data-directory')
0 files changed, 0 insertions, 0 deletions