diff options
author | Fangrui Song <maskray@google.com> | 2019-06-20 13:53:11 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-06-20 13:53:11 +0000 |
commit | ffed2c96d9f1379a2af4b1b0827255da0be59d65 (patch) | |
tree | c308ed9e56773818d303ce168907dea713852fef /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | d91b1edf7b5d329e9533bebb6cfde07a10c9621d (diff) | |
download | llvm-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