diff --git a/libc/include/bits/elf_arm.h b/libc/include/bits/elf_arm.h index 320feaf0e..08fe1d586 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 acd9c70e7..d838c0b2d 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 9094b0a4c..cfa8c8f02 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -2965,8 +2965,8 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r 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__)