Merge "Fix arm32/64 dynamic TLS relocations"

This commit is contained in:
Treehugger Robot 2018-07-31 09:31:35 +00:00 committed by Gerrit Code Review
commit 5a535d6781
3 changed files with 8 additions and 5 deletions

View file

@ -43,7 +43,8 @@
#define R_ARM_THM_PC22 10 #define R_ARM_THM_PC22 10
#define R_ARM_THM_PC8 11 #define R_ARM_THM_PC8 11
#define R_ARM_AMP_VCALL9 12 #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_THM_SWI8 14
#define R_ARM_XPC25 15 #define R_ARM_XPC25 15
#define R_ARM_THM_XPC22 16 #define R_ARM_THM_XPC22 16

View file

@ -83,8 +83,10 @@
#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */ #define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */ #define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
#define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */ #define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */
#define R_AARCH64_TLS_TPREL64 1030 #define R_AARCH64_TLS_DTPREL64 1028 /* Module-relative offset. */
#define R_AARCH64_TLS_DTPREL32 1031 #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 #define R_AARCH64_IRELATIVE 1032
#endif /* _AARCH64_ELF_MACHDEP_H_ */ #endif /* _AARCH64_ELF_MACHDEP_H_ */

View file

@ -2965,8 +2965,8 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n", TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n",
reloc, (sym_addr + addend), rel->r_offset); reloc, (sym_addr + addend), rel->r_offset);
break; break;
case R_AARCH64_TLS_DTPREL32: case R_AARCH64_TLSDESC:
TRACE_TYPE(RELO, "RELO TLS_DTPREL32 *** %16llx <- %16llx - %16llx\n", TRACE_TYPE(RELO, "RELO TLSDESC *** %16llx <- %16llx - %16llx\n",
reloc, (sym_addr + addend), rel->r_offset); reloc, (sym_addr + addend), rel->r_offset);
break; break;
#elif defined(__x86_64__) #elif defined(__x86_64__)