summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-mdreloc-aarch64.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2023-06-08 13:52:47 +1000
committerChris Johns <chrisj@rtems.org>2023-08-21 11:16:17 +1000
commit27da374e481b0067896f70b21c9d89c04f87a101 (patch)
tree9e8d60b543f65dff785ab2c286463e051abfa09a /cpukit/libdl/rtl-mdreloc-aarch64.c
parentspec/cpukit: Omit Cortex-M from libdebugger build (diff)
downloadrtems-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.c10
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) {