forked from OSchip/llvm-project
da7b129b1b
Summary: Forcing Local Exec TLS requires the use of copy relocations. Copy relocations need special handling in the runtime linker when being used against TLS symbols, which is present in glibc, but not in FreeBSD nor musl, and so cannot be relied upon. Moreover, copy relocations are a hack that embed the size of an object in the ABI when it otherwise wouldn't be, and break protected symbols (which are expected to be DSO local), whilst also wasting space, thus they should be avoided whenever possible. As discussed in D70398, RISC-V should move away from forcing Local Exec, and instead use Initial Exec like other targets, with possible linker relaxation to follow. The RISC-V GCC maintainers also intend to adopt this more-conventional behaviour (see https://github.com/riscv/riscv-elf-psabi-doc/issues/122). Reviewers: asb, MaskRay Reviewed By: MaskRay Subscribers: emaste, krytarowski, hiraditya, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, llvm-commits, bsdjhb Tags: #llvm Differential Revision: https://reviews.llvm.org/D70649 |
||
---|---|---|
.. | ||
AsmParser | ||
Disassembler | ||
MCTargetDesc | ||
TargetInfo | ||
Utils | ||
CMakeLists.txt | ||
LLVMBuild.txt | ||
RISCV.h | ||
RISCV.td | ||
RISCVAsmPrinter.cpp | ||
RISCVCallLowering.cpp | ||
RISCVCallLowering.h | ||
RISCVCallingConv.td | ||
RISCVExpandPseudoInsts.cpp | ||
RISCVFrameLowering.cpp | ||
RISCVFrameLowering.h | ||
RISCVISelDAGToDAG.cpp | ||
RISCVISelLowering.cpp | ||
RISCVISelLowering.h | ||
RISCVInstrFormats.td | ||
RISCVInstrFormatsC.td | ||
RISCVInstrInfo.cpp | ||
RISCVInstrInfo.h | ||
RISCVInstrInfo.td | ||
RISCVInstrInfoA.td | ||
RISCVInstrInfoC.td | ||
RISCVInstrInfoD.td | ||
RISCVInstrInfoF.td | ||
RISCVInstrInfoM.td | ||
RISCVInstructionSelector.cpp | ||
RISCVLegalizerInfo.cpp | ||
RISCVLegalizerInfo.h | ||
RISCVMCInstLower.cpp | ||
RISCVMachineFunctionInfo.h | ||
RISCVMergeBaseOffset.cpp | ||
RISCVRegisterBankInfo.cpp | ||
RISCVRegisterBankInfo.h | ||
RISCVRegisterBanks.td | ||
RISCVRegisterInfo.cpp | ||
RISCVRegisterInfo.h | ||
RISCVRegisterInfo.td | ||
RISCVSubtarget.cpp | ||
RISCVSubtarget.h | ||
RISCVSystemOperands.td | ||
RISCVTargetMachine.cpp | ||
RISCVTargetMachine.h | ||
RISCVTargetObjectFile.cpp | ||
RISCVTargetObjectFile.h | ||
RISCVTargetTransformInfo.cpp | ||
RISCVTargetTransformInfo.h |