summaryrefslogtreecommitdiffstats
path: root/libc/arch-arm64
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2014-09-11 15:16:03 -0700
committerDmitriy Ivanov <dimitry@google.com>2014-10-01 16:04:31 -0700
commitf4cb6313645ef65cc0eea0a439e51b6788cd3439 (patch)
tree816f1591e6861e041ec75a8a8181e662ee18e605 /libc/arch-arm64
parentef1306d77718cc74a8df5673a15649dea317571d (diff)
downloadbionic-f4cb6313645ef65cc0eea0a439e51b6788cd3439.zip
bionic-f4cb6313645ef65cc0eea0a439e51b6788cd3439.tar.gz
bionic-f4cb6313645ef65cc0eea0a439e51b6788cd3439.tar.bz2
Add IFUNC support for arm64 and IRELATIVE reloc
There are number of changes in the way IFUNC related relocations are done: 1. IRELATIVE relocations are now supported for x86/x86_64 and arm64. 2. IFUNC relocations are now relying on static linker to generate them in correct order - this removes necessety of additional relocation pass for ifuncs. 3. Related to 2: rela?.dyn relocations are preformed before .plt ones. 4. Ifunc are resolved on symbol lookup this approach allowed to avoid mprotect(PROT_WRITE) call on r-x program segments. Bug: 17399706 Bug: 17177284 (cherry picked from commit 9aea164457c269c475592da36b4655d45f55c7bc) Change-Id: Ie19d900fc203beb93faf8943b0d06d534a6de4ad
Diffstat (limited to 'libc/arch-arm64')
-rw-r--r--libc/arch-arm64/include/machine/elf_machdep.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/libc/arch-arm64/include/machine/elf_machdep.h b/libc/arch-arm64/include/machine/elf_machdep.h
index 2bf8189..6eab313 100644
--- a/libc/arch-arm64/include/machine/elf_machdep.h
+++ b/libc/arch-arm64/include/machine/elf_machdep.h
@@ -99,6 +99,7 @@
#define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */
#define R_AARCH64_TLS_TPREL64 1030
#define R_AARCH64_TLS_DTPREL32 1031
+#define R_AARCH64_IRELATIVE 1032
#define R_TYPE(name) __CONCAT(R_AARCH64_,name)