aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-06-20 13:53:11 +0000
committerFangrui Song <maskray@google.com>2019-06-20 13:53:11 +0000
commitffed2c96d9f1379a2af4b1b0827255da0be59d65 (patch)
treec308ed9e56773818d303ce168907dea713852fef /clang/lib/Frontend/CompilerInvocation.cpp
parentd91b1edf7b5d329e9533bebb6cfde07a10c9621d (diff)
downloadllvm-ffed2c96d9f1379a2af4b1b0827255da0be59d65.zip
llvm-ffed2c96d9f1379a2af4b1b0827255da0be59d65.tar.gz
llvm-ffed2c96d9f1379a2af4b1b0827255da0be59d65.tar.bz2
[ELF][ARM] Merge handleARMTlsRelocation() into handleTlsRelocation()
ARM and RISC-V do not support TLS relaxations. However, for General Dynamic and Local Dynamic models, if we are producing an executable and the symbol is non-preemptable, we know it must be defined and the R_ARM_TLS_DTPMOD32/R_RISCV_TLS_DTPMOD{32,64} dynamic relocation can be omitted because it is always 1. This may be necessary for static linking as DTPMOD may not be expected at load time. Merge handleARMTlsRelocation() into handleTlsRelocation(). This requires more logic to R_TLSGD_PC and R_TLSLD_PC. Because we use SymbolicRel to resolve the relocation at link time, R_ARM_TLS_DTPMOD32 can be deleted from relocateOne(). It cannot be used as a static relocation type. As a bonus, the additional logic in R_TLSGD_PC code can be shared by the TLS support for RISC-V (D63220). Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D63333 llvm-svn: 363927
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions