Merge "linker: find AT_BASE using AT_PHDR/AT_PHNUM"
diff --git a/libc/include/bits/elf_arm.h b/libc/include/bits/elf_arm.h
index 320feaf..08fe1d5 100644
--- a/libc/include/bits/elf_arm.h
+++ b/libc/include/bits/elf_arm.h
@@ -43,7 +43,8 @@
#define R_ARM_THM_PC22 10
#define R_ARM_THM_PC8 11
#define R_ARM_AMP_VCALL9 12
-#define R_ARM_SWI24 13
+#define R_ARM_SWI24 13 /* obsolete static relocation */
+#define R_ARM_TLS_DESC 13 /* dynamic relocation */
#define R_ARM_THM_SWI8 14
#define R_ARM_XPC25 15
#define R_ARM_THM_XPC22 16
diff --git a/libc/include/bits/elf_arm64.h b/libc/include/bits/elf_arm64.h
index acd9c70..d838c0b 100644
--- a/libc/include/bits/elf_arm64.h
+++ b/libc/include/bits/elf_arm64.h
@@ -83,8 +83,10 @@
#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
#define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */
-#define R_AARCH64_TLS_TPREL64 1030
-#define R_AARCH64_TLS_DTPREL32 1031
+#define R_AARCH64_TLS_DTPREL64 1028 /* Module-relative offset. */
+#define R_AARCH64_TLS_DTPMOD64 1029 /* Module index. */
+#define R_AARCH64_TLS_TPREL64 1030 /* TP-relative offset. */
+#define R_AARCH64_TLSDESC 1031 /* 16-byte descriptor: resolver func + arg. */
#define R_AARCH64_IRELATIVE 1032
#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index 14e5784..23ee3f3 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -1646,7 +1646,7 @@
wait3; # arm x86 mips
wcswcs; # arm x86 mips
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1668,4 +1668,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
index 2f5c4ab..eadf70d 100644
--- a/libc/libc.arm64.map
+++ b/libc/libc.arm64.map
@@ -1364,7 +1364,7 @@
get_malloc_leak_info;
gMallocLeakZygoteChild;
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1386,4 +1386,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index b4262da..12e657f 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1672,7 +1672,7 @@
wait3; # arm x86 mips
wcswcs; # arm x86 mips
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1694,4 +1694,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index 5e0b13f..c7fe2c6 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -1487,7 +1487,7 @@
wait3; # arm x86 mips
wcswcs; # arm x86 mips
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1509,4 +1509,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
index 2f5c4ab..eadf70d 100644
--- a/libc/libc.mips64.map
+++ b/libc/libc.mips64.map
@@ -1364,7 +1364,7 @@
get_malloc_leak_info;
gMallocLeakZygoteChild;
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1386,4 +1386,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index 243af5b..f6d1871 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -1486,7 +1486,7 @@
wait3; # arm x86 mips
wcswcs; # arm x86 mips
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1508,4 +1508,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
index 2f5c4ab..eadf70d 100644
--- a/libc/libc.x86_64.map
+++ b/libc/libc.x86_64.map
@@ -1364,7 +1364,7 @@
get_malloc_leak_info;
gMallocLeakZygoteChild;
write_malloc_leak_info;
-} LIBC_P;
+} LIBC_Q;
LIBC_DEPRECATED {
global:
@@ -1386,4 +1386,4 @@
malloc_disable;
malloc_enable;
malloc_iterate;
-} LIBC_P;
+} LIBC_Q;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 9094b0a..cfa8c8f 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -2965,8 +2965,8 @@
TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n",
reloc, (sym_addr + addend), rel->r_offset);
break;
- case R_AARCH64_TLS_DTPREL32:
- TRACE_TYPE(RELO, "RELO TLS_DTPREL32 *** %16llx <- %16llx - %16llx\n",
+ case R_AARCH64_TLSDESC:
+ TRACE_TYPE(RELO, "RELO TLSDESC *** %16llx <- %16llx - %16llx\n",
reloc, (sym_addr + addend), rel->r_offset);
break;
#elif defined(__x86_64__)