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

Jens Remus jremus@linux.ibm.com
Thu Oct 16 09:08:20 GMT 2025


On 10/15/2025 7:28 PM, Andreas Krebbel wrote:
> 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!

Thank you for the review and approval!  Committed to mainline.

Regards,
Jens
-- 
Jens Remus
Linux on Z Development (D3303)
+49-7031-16-1128 Office
jremus@de.ibm.com

IBM

IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM Data Privacy Statement: https://www.ibm.com/privacy/



More information about the Binutils mailing list