aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch-aarch64.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch-aarch64.c')
-rw-r--r--src/arch-aarch64.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/arch-aarch64.c b/src/arch-aarch64.c
index 6499c68..3cbfff9 100644
--- a/src/arch-aarch64.c
+++ b/src/arch-aarch64.c
@@ -470,7 +470,9 @@ aarch64_undo_prelink_rela (DSO *dso, GElf_Rela *rela, GElf_Addr relaaddr)
switch (GELF_R_TYPE (rela->r_info))
{
case R_AARCH64_NONE:
+ break;
case R_AARCH64_RELATIVE:
+ write_ne64 (dso, rela->r_offset, 0);
break;
case R_AARCH64_JUMP_SLOT:
sec = addr_to_sec (dso, rela->r_offset);
@@ -487,9 +489,7 @@ aarch64_undo_prelink_rela (DSO *dso, GElf_Rela *rela, GElf_Addr relaaddr)
assert (rela->r_offset >= dso->shdr[sec].sh_addr + 24);
assert (((rela->r_offset - dso->shdr[sec].sh_addr) & 7) == 0);
- write_neclass (dso, rela->r_offset,
- 2 * (rela->r_offset - dso->shdr[sec].sh_addr - 24)
- + data);
+ write_neclass (dso, rela->r_offset, data);
}
break;
case R_AARCH64_GLOB_DAT:
@@ -501,6 +501,7 @@ aarch64_undo_prelink_rela (DSO *dso, GElf_Rela *rela, GElf_Addr relaaddr)
write_ne64 (dso, rela->r_offset, 0);
break;
case R_AARCH64_TLS_TPREL:
+ write_ne64 (dso, rela->r_offset, 0);
break;
case R_AARCH64_TLSDESC:
write_ne64 (dso, rela->r_offset, 0);