Merge "Fix arm32/64 dynamic TLS relocations"
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/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__)