aboutsummaryrefslogtreecommitdiff
path: root/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch')
-rw-r--r--meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch254
1 files changed, 0 insertions, 254 deletions
diff --git a/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch b/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch
deleted file mode 100644
index a8460339..00000000
--- a/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0010-Add-dynamic-ILP32-AARCH64-relocations-to-elf.h.patch
+++ /dev/null
@@ -1,254 +0,0 @@
-From de15edafbc188af14eb53aaf2596429daf047b09 Mon Sep 17 00:00:00 2001
-From: Andrew Pinski <apinski@cavium.com>
-Date: Mon, 27 Oct 2014 00:59:33 -0700
-Subject: [PATCH 10/32] Add dynamic ILP32 AARCH64 relocations to elf.h
-
-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.
-
-[AARCH64] Use ELFW and ElfW macros instead of ELF64 and Elf64 names.
-
-* sysdeps/aarch64/dl-machine.h
-(elf_machine_runtime_setup): Use ElfW(Addr).
-(elf_machine_rela): Use ELFW(R_TYPE).
-(elf_machine_lazy_rel): Likewise.
-
-[AARCH64] Introduce AARCH64_R so we can reuse the reloc code between ILP32 and LP64.
-
-* sysdeps/aarch64/sysdep.h (AARCH64_R): Define.
-* sysdeps/aarch64/dl-irel.h: Include sysdep.h
-(elf_irela): Use reloc names based on AARCH64_R.
-* sysdeps/aarch64/dl-machine.h: Include sysdep.h
-(elf_machine_type_class): Use reloc names based on AARCH64_R.
-(elf_machine_rela): Likewise.
-(elf_machine_lazy_rel): Likewise.
----
- elf/elf.h | 14 +++++++++++
- sysdeps/aarch64/dl-irel.h | 3 ++-
- sysdeps/aarch64/dl-machine.h | 57 +++++++++++++++++++++++---------------------
- sysdeps/aarch64/sysdep.h | 6 +++++
- 4 files changed, 52 insertions(+), 28 deletions(-)
-
-diff --git a/elf/elf.h b/elf/elf.h
-index 0dbf52b..030f398 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. */
-diff --git a/sysdeps/aarch64/dl-irel.h b/sysdeps/aarch64/dl-irel.h
-index 78395ca..79964c2 100644
---- a/sysdeps/aarch64/dl-irel.h
-+++ b/sysdeps/aarch64/dl-irel.h
-@@ -23,6 +23,7 @@
- #include <stdio.h>
- #include <unistd.h>
- #include <ldsodefs.h>
-+#include <sysdep.h>
-
- #define ELF_MACHINE_IRELA 1
-
-@@ -40,7 +41,7 @@ elf_irela (const ElfW(Rela) *reloc)
- ElfW(Addr) *const reloc_addr = (void *) reloc->r_offset;
- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-
-- if (__glibc_likely (r_type == R_AARCH64_IRELATIVE))
-+ if (__glibc_likely (r_type == AARCH64_R(IRELATIVE)))
- {
- ElfW(Addr) value = elf_ifunc_invoke (reloc->r_addend);
- *reloc_addr = value;
-diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
-index ebac353..4317669 100644
---- a/sysdeps/aarch64/dl-machine.h
-+++ b/sysdeps/aarch64/dl-machine.h
-@@ -21,6 +21,7 @@
-
- #define ELF_MACHINE_NAME "aarch64"
-
-+#include <sysdep.h>
- #include <tls.h>
- #include <dl-tlsdesc.h>
- #include <dl-irel.h>
-@@ -113,8 +114,8 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
- }
-
- if (l->l_info[ADDRIDX (DT_TLSDESC_GOT)] && lazy)
-- *(Elf64_Addr*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr)
-- = (Elf64_Addr) &_dl_tlsdesc_resolve_rela;
-+ *(ElfW(Addr)*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr)
-+ = (ElfW(Addr)) &_dl_tlsdesc_resolve_rela;
-
- return lazy;
- }
-@@ -186,15 +187,15 @@ _dl_start_user: \n\
- br x21 \n\
- ");
-
--#define elf_machine_type_class(type) \
-- ((((type) == R_AARCH64_JUMP_SLOT || \
-- (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))
-+#define elf_machine_type_class(type) \
-+ ((((type) == AARCH64_R(JUMP_SLOT) || \
-+ (type) == AARCH64_R(TLS_DTPMOD) || \
-+ (type) == AARCH64_R(TLS_DTPREL) || \
-+ (type) == AARCH64_R(TLS_TPREL) || \
-+ (type) == AARCH64_R(TLSDESC)) * ELF_RTYPE_CLASS_PLT) \
-+ | (((type) == AARCH64_R(COPY)) * ELF_RTYPE_CLASS_COPY))
-
--#define ELF_MACHINE_JMP_SLOT R_AARCH64_JUMP_SLOT
-+#define ELF_MACHINE_JMP_SLOT AARCH64_R(JUMP_SLOT)
-
- /* AArch64 uses RELA not REL */
- #define ELF_MACHINE_NO_REL 1
-@@ -233,9 +234,9 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- void *const reloc_addr_arg, int skip_ifunc)
- {
- ElfW(Addr) *const reloc_addr = reloc_addr_arg;
-- const unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
-+ const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info);
-
-- if (__builtin_expect (r_type == R_AARCH64_RELATIVE, 0))
-+ if (__builtin_expect (r_type == AARCH64_R(RELATIVE), 0))
- *reloc_addr = map->l_addr + reloc->r_addend;
- else if (__builtin_expect (r_type == R_AARCH64_NONE, 0))
- return;
-@@ -253,7 +254,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
-
- switch (r_type)
- {
-- case R_AARCH64_COPY:
-+ case AARCH64_R(COPY):
- if (sym == NULL)
- break;
-
-@@ -271,15 +272,17 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- MIN (sym->st_size, refsym->st_size));
- break;
-
-- case R_AARCH64_RELATIVE:
-- case R_AARCH64_GLOB_DAT:
-- case R_AARCH64_JUMP_SLOT:
-- case R_AARCH64_ABS32:
-- case R_AARCH64_ABS64:
-+ case AARCH64_R(RELATIVE):
-+ case AARCH64_R(GLOB_DAT):
-+ case AARCH64_R(JUMP_SLOT):
-+ case AARCH64_R(ABS32):
-+#ifdef __LP64__
-+ case AARCH64_R(ABS64):
-+#endif
- *reloc_addr = value + reloc->r_addend;
- break;
-
-- case R_AARCH64_TLSDESC:
-+ case AARCH64_R(TLSDESC):
- {
- struct tlsdesc volatile *td =
- (struct tlsdesc volatile *)reloc_addr;
-@@ -314,7 +317,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- break;
- }
-
-- case R_AARCH64_TLS_DTPMOD:
-+ case AARCH64_R(TLS_DTPMOD):
- #ifdef RTLD_BOOTSTRAP
- *reloc_addr = 1;
- #else
-@@ -325,12 +328,12 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- #endif
- break;
-
-- case R_AARCH64_TLS_DTPREL:
-+ case AARCH64_R(TLS_DTPREL):
- if (sym)
- *reloc_addr = sym->st_value + reloc->r_addend;
- break;
-
-- case R_AARCH64_TLS_TPREL:
-+ case AARCH64_R(TLS_TPREL):
- if (sym)
- {
- CHECK_STATIC_TLS (map, sym_map);
-@@ -339,7 +342,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- }
- break;
-
-- case R_AARCH64_IRELATIVE:
-+ case AARCH64_R(IRELATIVE):
- value = map->l_addr + reloc->r_addend;
- value = elf_ifunc_invoke (value);
- *reloc_addr = value;
-@@ -370,16 +373,16 @@ elf_machine_lazy_rel (struct link_map *map,
- int skip_ifunc)
- {
- ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset);
-- const unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
-+ const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info);
- /* Check for unexpected PLT reloc type. */
-- if (__builtin_expect (r_type == R_AARCH64_JUMP_SLOT, 1))
-+ if (__builtin_expect (r_type == AARCH64_R(JUMP_SLOT), 1))
- {
- if (__builtin_expect (map->l_mach.plt, 0) == 0)
- *reloc_addr += l_addr;
- else
- *reloc_addr = map->l_mach.plt;
- }
-- else if (__builtin_expect (r_type == R_AARCH64_TLSDESC, 1))
-+ else if (__builtin_expect (r_type == AARCH64_R(TLSDESC), 1))
- {
- struct tlsdesc volatile *td =
- (struct tlsdesc volatile *)reloc_addr;
-@@ -388,7 +391,7 @@ elf_machine_lazy_rel (struct link_map *map,
- td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
- + map->l_addr);
- }
-- else if (__glibc_unlikely (r_type == R_AARCH64_IRELATIVE))
-+ else if (__glibc_unlikely (r_type == AARCH64_R(IRELATIVE)))
- {
- ElfW(Addr) value = map->l_addr + reloc->r_addend;
- if (__glibc_likely (!skip_ifunc))
-diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h
-index af196f2..55d1759 100644
---- a/sysdeps/aarch64/sysdep.h
-+++ b/sysdeps/aarch64/sysdep.h
-@@ -21,6 +21,12 @@
-
- #include <sysdeps/generic/sysdep.h>
-
-+#ifdef __LP64__
-+#define AARCH64_R(NAME) R_AARCH64_ ## NAME
-+#else
-+#define AARCH64_R(NAME) R_AARCH64_P32_ ## NAME
-+#endif
-+
- #ifdef __ASSEMBLER__
-
- /* Syntactic details of assembler. */
---
-1.9.3
-