diff options
author | Daniel Bertalan <dani@danielbertalan.dev> | 2023-04-20 18:04:58 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2023-05-14 13:47:53 +0200 |
commit | c4e0f5e5eed248fc06aabd8531b13f0440c8c9e0 (patch) | |
tree | f06f4e987bab8a9f98bf1f1b5ac19de915183381 | |
parent | b23a0b409d911a51c87dfc810e9e96555f4ccc0d (diff) | |
download | serenity-c4e0f5e5eed248fc06aabd8531b13f0440c8c9e0.zip |
LibC+LibELF: Handle the R_AARCH64_IRELATIVE relocation type
This is the AArch64 equivalent of `R_X86_64_IRELATIVE`, which specifies
a symbol whose address is determined by calling a local IFUNC resolver
function.
-rw-r--r-- | Userland/Libraries/LibC/elf.h | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibELF/DynamicLoader.cpp | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/Userland/Libraries/LibC/elf.h b/Userland/Libraries/LibC/elf.h index b5baecd142..bc5f9c5f6d 100644 --- a/Userland/Libraries/LibC/elf.h +++ b/Userland/Libraries/LibC/elf.h @@ -827,3 +827,4 @@ struct elf_args { #define R_AARCH64_JUMP_SLOT 1026 #define R_AARCH64_RELATIVE 1027 #define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_IRELATIVE 1032 diff --git a/Userland/Libraries/LibELF/DynamicLoader.cpp b/Userland/Libraries/LibELF/DynamicLoader.cpp index b62c54f253..98711e9ef0 100644 --- a/Userland/Libraries/LibELF/DynamicLoader.cpp +++ b/Userland/Libraries/LibELF/DynamicLoader.cpp @@ -581,6 +581,7 @@ DynamicLoader::RelocationResult DynamicLoader::do_relocation(const ELF::DynamicO } break; } + case R_AARCH64_IRELATIVE: case R_X86_64_IRELATIVE: { VirtualAddress resolver; if (relocation.addend_used()) |