[PATCH 2/4] s390: Define TLS_DTV_OFFSET instead of GET_ADDR_OFFSET
Florian Weimer
fweimer@redhat.com
Fri Dec 27 15:37:09 GMT 2024
This will be used in __tls_get_addr to adjust the returned pointer
value.
---
sysdeps/s390/dl-tls.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sysdeps/s390/dl-tls.h b/sysdeps/s390/dl-tls.h
index dcbdfe477c..4b160745cc 100644
--- a/sysdeps/s390/dl-tls.h
+++ b/sysdeps/s390/dl-tls.h
@@ -24,6 +24,9 @@ typedef struct
unsigned long int ti_offset;
} tls_index;
+/* The DTV stores absolute addresses, but __tls_get_addr must return
+ TP-relative addresses. */
+#define TLS_DTV_OFFSET (-(unsigned long int) __builtin_thread_pointer ())
#ifdef SHARED
@@ -89,9 +92,6 @@ __tls_get_offset:\n\
extern void *__tls_get_addr_internal (tls_index *ti);
# endif /* !IS_IN (rtld) */
-# define GET_ADDR_OFFSET \
- (ti->ti_offset - (unsigned long) __builtin_thread_pointer ())
-
/* Use the privately exported __tls_get_addr_internal instead of
__tls_get_offset in order to avoid the __tls_get_offset special
linkage requiring the GOT pointer to be set up in r12. The
--
2.47.1
More information about the Libc-alpha
mailing list