llvm-project/lld/test
Fangrui Song e11b709b19 [ELF][PPC32] Support --emit-relocs link of R_PPC_PLTREL24
Similar to R_MIPS_GPREL16 and R_MIPS_GPREL32 (D45972).

If the addend of an R_PPC_PLTREL24 is >= 0x8000, it indicates that r30
is relative to the input section .got2.

```
addis 30, 30, .got2+0x8000-.L1$pb@ha
addi 30, 30, .got2+0x8000-.L1$pb@l
...
bl foo+0x8000@PLT
```

After linking, the relocation will be relative to the output section .got2.
To compensate for the shift `address(input section .got2) - address(output section .got2) = ppc32Got2OutSecOff`, adjust by `ppc32Got2OutSecOff`:

```
addis 30, 30, .got2+0x8000-.L1+ppc32Got2OutSecOff$pb@ha
addi 30, 30, .got2+0x8000-.L1+ppc32Got2OutSecOff$pb@ha$pb@l
...
bl foo+0x8000+ppc32Got2OutSecOff@PLT
```

This rule applys to a relocatable link or a non-relocatable link with --emit-relocs.

Reviewed By: Bdragon28

Differential Revision: https://reviews.llvm.org/D73532
2020-01-28 11:04:04 -08:00
..
COFF [LLD][COFF] Enable linking of __declspec(selectany) symbols from Clang and GCC 2020-01-23 10:55:27 +02:00
Driver/Inputs
ELF [ELF][PPC32] Support --emit-relocs link of R_PPC_PLTREL24 2020-01-28 11:04:04 -08:00
MinGW Use error instead of fatal to report usage errors 2019-10-10 09:46:41 +00:00
Unit
darwin [Darwin] Do not error on '-lto_library' option 2018-06-13 18:59:14 +00:00
mach-o [LLD] - Fix a test after obj2yaml change. 2019-10-30 18:28:52 +03:00
wasm [WebAssembly] Track frame registers through VReg and local allocation 2020-01-17 17:23:56 -08:00
CMakeLists.txt build: reduce CMake handling for zlib 2020-01-02 11:19:12 -08:00
lit.cfg.py ELF: Change FileSize back to a uint64_t. 2019-03-01 18:53:41 +00:00
lit.site.cfg.py.in build: reduce CMake handling for zlib 2020-01-02 11:19:12 -08:00