[PATCH v2] s390: Rewrite emitted relocations when rewriting instructions

Andreas Krebbel krebbel@linux.ibm.com
Wed Oct 15 17:28:38 GMT 2025


On 10/15/25 5:57 PM, Jens Remus wrote:
> When the linker rewrites instructions it may need to rewrite the
> associated relocations, so that when emitted with option --emit-relocs,
> they make sense with the rewritten instructions.  Otherwise post link
> analysis and optimization tools may not be able to perform correct
> modifications of executables.
>
> Under certain conditions the linker rewrites:
> - GOT access using lgrl to larl, changing the GOTENT to a PC32DBL reloc
> - GOT access using lg to larl, changing the GOT20 to a PC32DBL reloc
> - Relative long addressing instructions of weak symbols, which
>    definitively resolve to zero, to either (1) load address of zero,
>    (2) a NOP, or (3) a trapping instruction.
>
> In case of a rewrite of GOT access using lgrl/lg to larl emit the
> PC32DBL relocation.  In case of a rewrite of relative long addressing
> instructions of weak symbols, which definitively resolve to zero, emit
> a NONE relocation and reset the symbol table index and addend.  Update
> the gotreloc* and weakundef* tests to check for the respective
> relocations.
>
> This aligns with how GNU linker behaves on x86-64, when rewriting
> instructions/relocations in elf_x86_64_convert_load_reloc().
>
> bfd/
> 	* elf64-s390.c (elf_s390_relocate_section): Rewrite emitted
> 	relocations when rewriting instructions.
> 	* elf32-s390.c (elf_s390_relocate_section): Likewise.
>
> ld/testsuite/
> 	* ld-s390/s390.exp: Link gotreloc* and weakundef* tests with
> 	option --emit-relocs.
> 	* ld-s390/gotreloc_31-1.dd: Expect rewritten instructions to be
> 	accompanied by a PC32DBL or NONE relocation respectively.
> 	* ld-s390/gotreloc_31-no-pie-1.dd: Likewise.
> 	* ld-s390/gotreloc_64-no-pie-1.dd: Likewise.
> 	* ld-s390/gotreloc_64-norelro-1.dd: Likewise.
> 	* ld-s390/gotreloc_64-relro-1.dd: Likewise.
> 	* ld-s390/weakundef-1.dd: Likewise.
> 	* ld-s390/weakundef-2.dd: Likewise.

Ok, thanks!


Andreas




More information about the Binutils mailing list