diff options
author | Chris Johns <chrisj@rtems.org> | 2023-06-08 13:52:47 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2023-08-21 11:16:17 +1000 |
commit | 27da374e481b0067896f70b21c9d89c04f87a101 (patch) | |
tree | 9e8d60b543f65dff785ab2c286463e051abfa09a /cpukit/libdl/rtl-mdreloc-aarch64.c | |
parent | spec/cpukit: Omit Cortex-M from libdebugger build (diff) | |
download | rtems-27da374e481b0067896f70b21c9d89c04f87a101.tar.bz2 |
libdl: Add support to import base image TLS symbols
This change requires an rtems-tools update for symbol generation.
Working architectures:
- aarch64
- arm
- powerpc
- sparc
No newlib TLS support but checked:
- i386
- m69k
Updates #4920
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) { |