aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Newton <will.newton@linaro.org>2014-11-18 15:50:21 +0000
committerWill Newton <will.newton@linaro.org>2014-11-21 14:43:16 +0000
commit8c230039a09523b08a7ede65768678e363206c02 (patch)
treeefcaa5710b5296cc87cf4a2966fac19ab8ec4abe
parent0d79fa53b4fc43896a5732b84c763c141e1f170b (diff)
downloadglibc-8c230039a09523b08a7ede65768678e363206c02.zip
glibc-8c230039a09523b08a7ede65768678e363206c02.tar.gz
glibc-8c230039a09523b08a7ede65768678e363206c02.tar.bz2
AArch64: Update relocations for ILP32
The latest version of the binutils ELF header defines a new set of dynamic relocations for ILP32 and renames some to make the naming more uniform. ChangeLog: 2014-11-21 Will Newton <will.newton@linaro.org> Andrew Pinski <andrew.pinski@caviumnetworks.com> * elf/elf.h (R_AARCH64_P32_ABS32, R_AARCH64_P32_COPY, R_AARCH64_P32_GLOB_DAT, R_AARCH64_P32_JUMP_SLOT, R_AARCH64_P32_RELATIVE, R_AARCH64_P32_TLS_DTPMOD, R_AARCH64_P32_TLS_DTPREL, R_AARCH64_P32_TLS_TPREL, R_AARCH64_P32_TLSDESC, R_AARCH64_P32_IRELATIVE): Define. (R_AARCH64_TLS_DTPMOD64): Rename to .. (R_AARCH64_TLS_DTPMOD): This. (R_AARCH64_TLS_DTPREL64): Rename to ... (R_AARCH64_TLS_DTPREL): This. (R_AARCH64_TLS_TPREL64): Rename to ... (R_AARCH64_TLS_TPREL): This. * sysdeps/aarch64/dl-machine.h (elf_machine_type_class): Update R_AARCH64_TLS_DTPMOD64, R_AARCH64_TLS_DTPREL64, and R_AARCH64_TLS_TPREL64. (elf_machine_rela): Likewise.
-rw-r--r--ChangeLog19
-rw-r--r--elf/elf.h20
-rw-r--r--sysdeps/aarch64/dl-machine.h12
3 files changed, 42 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index b0041ea..40cd918 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2014-11-21 Will Newton <will.newton@linaro.org>
+ Andrew Pinski <andrew.pinski@caviumnetworks.com>
+
+ * elf/elf.h (R_AARCH64_P32_ABS32, R_AARCH64_P32_COPY,
+ R_AARCH64_P32_GLOB_DAT, R_AARCH64_P32_JUMP_SLOT,
+ R_AARCH64_P32_RELATIVE, R_AARCH64_P32_TLS_DTPMOD,
+ R_AARCH64_P32_TLS_DTPREL, R_AARCH64_P32_TLS_TPREL,
+ R_AARCH64_P32_TLSDESC, R_AARCH64_P32_IRELATIVE): Define.
+ (R_AARCH64_TLS_DTPMOD64): Rename to ..
+ (R_AARCH64_TLS_DTPMOD): This.
+ (R_AARCH64_TLS_DTPREL64): Rename to ...
+ (R_AARCH64_TLS_DTPREL): This.
+ (R_AARCH64_TLS_TPREL64): Rename to ...
+ (R_AARCH64_TLS_TPREL): This.
+ * sysdeps/aarch64/dl-machine.h (elf_machine_type_class): Update
+ R_AARCH64_TLS_DTPMOD64, R_AARCH64_TLS_DTPREL64, and
+ R_AARCH64_TLS_TPREL64.
+ (elf_machine_rela): Likewise.
+
2014-11-21 Torvald Riegel <triegel@redhat.com>
* sysdeps/microblaze/bits/atomic.h (__HAVE_64B_ATOMICS): Fix value
diff --git a/elf/elf.h b/elf/elf.h
index 78815e8..341cfa6 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -2362,6 +2362,20 @@ typedef Elf32_Addr Elf32_Conflict;
/* AArch64 relocs. */
#define R_AARCH64_NONE 0 /* No relocation. */
+
+/* ILP32 AArch64 relocs. */
+#define R_AARCH64_P32_ABS32 1 /* Direct 32 bit. */
+#define R_AARCH64_P32_COPY 180 /* Copy symbol at runtime. */
+#define R_AARCH64_P32_GLOB_DAT 181 /* Create GOT entry. */
+#define R_AARCH64_P32_JUMP_SLOT 182 /* Create PLT entry. */
+#define R_AARCH64_P32_RELATIVE 183 /* Adjust by program base. */
+#define R_AARCH64_P32_TLS_DTPMOD 184 /* Module number, 32 bit. */
+#define R_AARCH64_P32_TLS_DTPREL 185 /* Module-relative offset, 32 bit. */
+#define R_AARCH64_P32_TLS_TPREL 186 /* TP-relative offset, 32 bit. */
+#define R_AARCH64_P32_TLSDESC 187 /* TLS Descriptor. */
+#define R_AARCH64_P32_IRELATIVE 188 /* STT_GNU_IFUNC relocation. */
+
+/* LP64 AArch64 relocs. */
#define R_AARCH64_ABS64 257 /* Direct 64 bit. */
#define R_AARCH64_ABS32 258 /* Direct 32 bit. */
#define R_AARCH64_ABS16 259 /* Direct 16-bit. */
@@ -2479,9 +2493,9 @@ typedef Elf32_Addr Elf32_Conflict;
#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_DTPMOD64 1028 /* Module number, 64 bit. */
-#define R_AARCH64_TLS_DTPREL64 1029 /* Module-relative offset, 64 bit. */
-#define R_AARCH64_TLS_TPREL64 1030 /* TP-relative offset, 64 bit. */
+#define R_AARCH64_TLS_DTPMOD 1028 /* Module number, 64 bit. */
+#define R_AARCH64_TLS_DTPREL 1029 /* Module-relative offset, 64 bit. */
+#define R_AARCH64_TLS_TPREL 1030 /* TP-relative offset, 64 bit. */
#define R_AARCH64_TLSDESC 1031 /* TLS Descriptor. */
#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */
diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
index 6746437..acb090d 100644
--- a/sysdeps/aarch64/dl-machine.h
+++ b/sysdeps/aarch64/dl-machine.h
@@ -188,9 +188,9 @@ _dl_start_user: \n\
#define elf_machine_type_class(type) \
((((type) == R_AARCH64_JUMP_SLOT || \
- (type) == R_AARCH64_TLS_DTPMOD64 || \
- (type) == R_AARCH64_TLS_DTPREL64 || \
- (type) == R_AARCH64_TLS_TPREL64 || \
+ (type) == R_AARCH64_TLS_DTPMOD || \
+ (type) == R_AARCH64_TLS_DTPREL || \
+ (type) == R_AARCH64_TLS_TPREL || \
(type) == R_AARCH64_TLSDESC) * ELF_RTYPE_CLASS_PLT) \
| (((type) == R_AARCH64_COPY) * ELF_RTYPE_CLASS_COPY))
@@ -314,7 +314,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
break;
}
- case R_AARCH64_TLS_DTPMOD64:
+ case R_AARCH64_TLS_DTPMOD:
#ifdef RTLD_BOOTSTRAP
*reloc_addr = 1;
#else
@@ -325,12 +325,12 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
#endif
break;
- case R_AARCH64_TLS_DTPREL64:
+ case R_AARCH64_TLS_DTPREL:
if (sym)
*reloc_addr = sym->st_value + reloc->r_addend;
break;
- case R_AARCH64_TLS_TPREL64:
+ case R_AARCH64_TLS_TPREL:
if (sym)
{
CHECK_STATIC_TLS (map, sym_map);