diff options
Diffstat (limited to 'cpukit/libdl/rtl-mdreloc-aarch64.c')
-rw-r--r-- | cpukit/libdl/rtl-mdreloc-aarch64.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/cpukit/libdl/rtl-mdreloc-aarch64.c b/cpukit/libdl/rtl-mdreloc-aarch64.c index 15396c3de9..e6c6ba3627 100644 --- a/cpukit/libdl/rtl-mdreloc-aarch64.c +++ b/cpukit/libdl/rtl-mdreloc-aarch64.c @@ -78,9 +78,11 @@ __RCSID("$NetBSD: mdreloc.c,v 1.14 2020/06/16 21:01:30 joerg Exp $"); #include "rtl-elf.h" #include "rtl-error.h" #include <rtems/rtl/rtl-trace.h> -#include "rtl-unwind-arm.h" #include <rtems/score/tls.h> +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + struct tls_data { size_t td_tlsindex; Elf_Addr td_tlsoffs; @@ -309,11 +311,7 @@ rtems_rtl_elf_reloc_rela (rtems_rtl_obj* obj, } if (!parsing) { - target = (Elf_Addr)symvalue + rela->r_addend; - /* Calculate offset accounting for the DTV */ - target -= (uintptr_t)_TLS_Data_begin; - target += sizeof(TLS_Dynamic_thread_vector); - + target = (Elf_Addr)symvalue; target >>= shift; target &= WIDTHMASK(12); if (of_check && target >= of_check) { |