[PATCH] s390: Rewrite emitted relocations when rewriting instructions

Andreas Krebbel krebbel@linux.ibm.com
Wed Oct 15 17:31:12 GMT 2025


On 10/15/25 6:02 PM, Jens Remus wrote:
> On 10/13/2025 1:27 PM, Andreas Krebbel wrote:
>> On 10/1/25 3:28 PM, Jens Remus wrote:
>>> 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.
>> Good catch. Ok, thanks for fixing this!
> Thank you!  Sorry for the hassle, but I just sent a v2 with a slightly
> reworded commit message.  Following is the git range-diff v1 against v2:

No need to wait for approval for these kind of changes to the approved 
patch. Feel free to do something like this on the fly.

Andreas


>
> 1:  07f5884c4146 ! 1:  3a6b19c0bf8e s390: Rewrite emitted relocations when rewriting instructions
>      @@ Commit message
>           - 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,
>      +      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
>      @@ Commit message
>           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.
>
> Regards,
> Jens


More information about the Binutils mailing list