diff --git a/cpukit/libdl/rtl-mdreloc-aarch64.c b/cpukit/libdl/rtl-mdreloc-aarch64.c index 1eb1d1e87d..69ae412ac5 100644 --- a/cpukit/libdl/rtl-mdreloc-aarch64.c +++ b/cpukit/libdl/rtl-mdreloc-aarch64.c @@ -419,9 +419,6 @@ rtems_rtl_elf_reloc_rela (rtems_rtl_obj* obj, raddr = (Elf_Addr)symvalue + rela->r_addend; target = raddr - (uintptr_t)where; - if (checkalign(target, 4, where, off)) { - return rtems_rtl_elf_rel_failure; - } if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) printf ( @@ -430,6 +427,10 @@ rtems_rtl_elf_reloc_rela (rtems_rtl_obj* obj, parsing ); + if (checkalign(target, 4, where, off)) { + return rtems_rtl_elf_rel_failure; + } + target = (intptr_t)target >> 2; if (((Elf_Sword)target > 0x1FFFFFF) || ((Elf_Sword)target < -0x2000000)) {