diff options
author | Dmitriy Ivanov <dimitry@google.com> | 2014-09-11 15:16:03 -0700 |
---|---|---|
committer | Dmitriy Ivanov <dimitry@google.com> | 2014-10-01 16:04:31 -0700 |
commit | f4cb6313645ef65cc0eea0a439e51b6788cd3439 (patch) | |
tree | 816f1591e6861e041ec75a8a8181e662ee18e605 /libc/arch-arm64 | |
parent | ef1306d77718cc74a8df5673a15649dea317571d (diff) | |
download | bionic-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.h | 1 |
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) |