summaryrefslogtreecommitdiff
path: root/linker/linker.cpp
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2019-07-30 17:30:08 -0700
committerRyan Prichard <rprichard@google.com>2019-07-30 20:55:54 -0700
commit30feb645f959d3e898292f4016c58e7ae5dec958 (patch)
tree2483c36caa9596ea02fc9587783ebee1c00f5e68 /linker/linker.cpp
parent6d601458de0b6485743bc23732f200d91b999537 (diff)
Enable traditional TLS accesses on arm64
Handle generic DTPMOD/DTPREL relocations on arm64. Expose __tls_get_addr. Bug: http://b/123385182 Test: manual -- compile code using arm64 gcc -mtls-dialect=trad Change-Id: I99d2faae35d1ebffc1be8de50b4a1f5e21b14348
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r--linker/linker.cpp5
1 files changed, 0 insertions, 5 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index e39da81f6..df7dd4020 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -3162,10 +3162,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
*reinterpret_cast<ElfW(Addr)*>(reloc) = tpoff;
}
break;
-
-#if !defined(__aarch64__)
- // Omit support for DTPMOD/DTPREL on arm64, at least until
- // http://b/123385182 is fixed. arm64 uses TLSDESC instead.
case R_GENERIC_TLS_DTPMOD:
count_relocation(kRelocRelative);
MARK(rel->r_offset);
@@ -3190,7 +3186,6 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
reinterpret_cast<void*>(sym_addr + addend), sym_name);
*reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend;
break;
-#endif // !defined(__aarch64__)
#if defined(__aarch64__)
// Bionic currently only implements TLSDESC for arm64. This implementation should work with