llvm-project/lld/ELF/Arch
Fangrui Song 4ce0a519c1 [ELF][RISCV] Treat R_RISCV_{ADD,SET,SUB}* as link-time constants
R_RISCV_{ADD,SET,SUB}* are used for local label computation.
Add a new RelExpr member R_RISCV_ADD to represent them.

R_RISCV_ADD is treated as a link-time constant because otherwise
R_RISCV_{ADD,SET,SUB}* are not allowed in -pie/-shared mode.
In glibc Scrt1.o, .rela.eh_frame contains such relocations.
Because .eh_frame is not writable, we get this error:

    ld.lld: error: can't create dynamic relocation R_RISCV_ADD32 against symbol: .L0 in readonly segment; recompil object files with -fPIC or pass '-Wl,-z,notext' to allow text relocations in the output
    >>> defined in ..../riscv64-linux-gnu/lib/Scrt1.o

With D63076 and this patch, I can run -pie/-shared programs linked against glibc.

Note llvm-mc cannot currently produce R_RISCV_SET* so they are not tested.

Reviewed By: ruiu

Differential Revision: https://reviews.llvm.org/D63183

llvm-svn: 363128
2019-06-12 07:53:06 +00:00
..
AArch64.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
AMDGPU.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
ARM.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
AVR.cpp [LLD][ELF] - Improve diagnostic about unrecognized relocations. 2019-05-23 09:50:18 +00:00
Hexagon.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
MSP430.cpp [LLD][ELF] - Improve diagnostic about unrecognized relocations. 2019-05-23 09:50:18 +00:00
Mips.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
MipsArchTree.cpp ELF: De-template ELFFileBase. NFCI. 2019-04-05 20:16:26 +00:00
PPC.cpp Revert "Revert r362867: [ELF][PPC] Simplify {read,write}FromHalf16" 2019-06-12 06:00:39 +00:00
PPC64.cpp Revert "Revert r362867: [ELF][PPC] Simplify {read,write}FromHalf16" 2019-06-12 06:00:39 +00:00
RISCV.cpp [ELF][RISCV] Treat R_RISCV_{ADD,SET,SUB}* as link-time constants 2019-06-12 07:53:06 +00:00
SPARCV9.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
X86.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00
X86_64.cpp [ELF] Make the rule to create relative relocations in a writable section stricter 2019-06-11 12:59:30 +00:00