diff options
author | Pratyush Anand <panand@redhat.com> | 2016-10-28 09:46:09 +0530 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2016-11-07 09:14:23 +0100 |
commit | ec271d6c298839916009474a9736728c77d959f1 (patch) | |
tree | e63c0f426ed40da022ae0c08f621a6920a351bc1 | |
parent | c743758d77b8a935fca7d72ecd6aa61300eb96da (diff) |
arm64: Add support of R_AARCH64_PREL32 relocation in purgatory
gcc version in fedora koji is 6.2.1-2.fc25. kexec-tools compiled with this
gcc produced another relocation error:
machine_apply_elf_rel: ERROR Unknown type: 261
This patch fixes the above error.
Signed-off-by: Pratyush Anand <panand@redhat.com>
Reviewed-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | kexec/arch/arm64/kexec-arm64.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c index 8203ed9..288548f 100644 --- a/kexec/arch/arm64/kexec-arm64.c +++ b/kexec/arch/arm64/kexec-arm64.c @@ -542,6 +542,10 @@ void machine_apply_elf_rel(struct mem_ehdr *ehdr, struct mem_sym *UNUSED(sym), # define R_AARCH64_ABS64 257 #endif +#if !defined(R_AARCH64_PREL32) +# define R_AARCH64_PREL32 261 +#endif + #if !defined(R_AARCH64_LD_PREL_LO19) # define R_AARCH64_LD_PREL_LO19 273 #endif @@ -583,6 +587,12 @@ void machine_apply_elf_rel(struct mem_ehdr *ehdr, struct mem_sym *UNUSED(sym), loc64 = ptr; *loc64 = cpu_to_elf64(ehdr, elf64_to_cpu(ehdr, *loc64) + value); break; + case R_AARCH64_PREL32: + type = "PREL32"; + loc32 = ptr; + *loc32 = cpu_to_elf32(ehdr, + elf32_to_cpu(ehdr, *loc32) + value - address); + break; case R_AARCH64_LD_PREL_LO19: type = "LD_PREL_LO19"; loc32 = ptr; |