llvm-project/lld/ELF/Arch
Fangrui Song cf783be8d7 Reland D114783/D115603 [ELF] Split scanRelocations into scanRelocations/postScanRelocations
(Fixed an issue about GOT on a copy relocated alias.)
(Fixed an issue about not creating r_addend=0 IRELATIVE for unreferenced non-preemptible ifunc.)

The idea is to make scanRelocations mark some actions are needed (GOT/PLT/etc)
and postpone the real work to postScanRelocations. It gives some flexibility:

* Make it feasible to support .plt.got (PR32938): we need to know whether GLOB_DAT and JUMP_SLOT are both needed.
* Make non-preemptible IFUNC handling slightly cleaner: avoid setting/clearing sym.gotInIgot
* -z nocopyrel: report all copy relocation places for one symbol
* Make GOT deduplication feasible
* Make parallel relocation scanning feasible (if we can avoid all stateful operations and make Symbol attributes atomic), but parallelism may not be the appealing choice

Since this patch moves a large chunk of code out of ELFT templates. My x86-64
executable is actually a few hundred bytes smaller.

For ppc32-ifunc-nonpreemptible-pic.s: I remove absolute relocation references to non-preemptible ifunc
because absolute relocation references are incorrect in -fpie mode.

Reviewed By: peter.smith, ikudrin

Differential Revision: https://reviews.llvm.org/D114783
2021-12-14 16:28:41 -08:00
..
AArch64.cpp Reland D114783/D115603 [ELF] Split scanRelocations into scanRelocations/postScanRelocations 2021-12-14 16:28:41 -08:00
AMDGPU.cpp [ELF] Replace noneRel = R_*_NONE with static constexpr. NFC 2021-09-25 15:16:44 -07:00
ARM.cpp [ARM] implement support for ALU/LDR PC-relative group relocations 2021-11-27 10:26:37 +01:00
AVR.cpp [ELF] Replace noneRel = R_*_NONE with static constexpr. NFC 2021-09-25 15:16:44 -07:00
Hexagon.cpp [ELF] Rename hasStaticTlsModel to hasTlsIe 2021-11-24 21:06:04 -08:00
MSP430.cpp [ELF] Use namespace qualifiers (lld:: or elf::) instead of `namespace lld { namespace elf {` 2020-05-15 08:49:53 -07:00
Mips.cpp [ELF][Mips] Use R_DTPREL for R_MIPS_TLS_DTPREL* 2021-10-30 21:58:43 -07:00
MipsArchTree.cpp [lib/Object] - Refine interface of ELFFile<ELFT>. NFCI. 2020-09-15 11:38:31 +03:00
PPC.cpp [ELF] Replace noneRel = R_*_NONE with static constexpr. NFC 2021-09-25 15:16:44 -07:00
PPC64.cpp [ELF] Inline isPPC64SmallCodeModelTocReloc which is only called once. NFC 2021-11-09 20:41:05 -08:00
PPCInsns.def [LLD][PowerPC] Implement GOT to PC-Rel relaxation 2020-08-17 09:36:09 -05:00
RISCV.cpp [ELF] Rename hasStaticTlsModel to hasTlsIe 2021-11-24 21:06:04 -08:00
SPARCV9.cpp [ELF] Replace noneRel = R_*_NONE with static constexpr. NFC 2021-09-25 15:16:44 -07:00
X86.cpp [ELF] Rename hasStaticTlsModel to hasTlsIe 2021-11-24 21:06:04 -08:00
X86_64.cpp [ELF] Rename hasStaticTlsModel to hasTlsIe 2021-11-24 21:06:04 -08:00