[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