61 lines
2.4 KiB
Diff
61 lines
2.4 KiB
Diff
commit a894f04d877653bea1639fc9a4adf73bd9347bf4
|
|
Author: Florian Weimer <fweimer@redhat.com>
|
|
Date: Fri May 16 19:53:09 2025 +0200
|
|
|
|
Optimize __libc_tsd_* thread variable access
|
|
|
|
These variables are not exported, and libc.so TLS is initial-exec
|
|
anyway. Declare these variables as hidden and use the initial-exec
|
|
TLS model.
|
|
|
|
Reviewed-by: Frédéric Bérat <fberat@redhat.com>
|
|
|
|
diff --git a/include/ctype.h b/include/ctype.h
|
|
index e993adc86da43b7c..0f6e7fc7ea28f821 100644
|
|
--- a/include/ctype.h
|
|
+++ b/include/ctype.h
|
|
@@ -29,9 +29,12 @@ libc_hidden_proto (toupper)
|
|
# define CTYPE_EXTERN_INLINE extern inline
|
|
# endif
|
|
|
|
-extern __thread const uint16_t * __libc_tsd_CTYPE_B;
|
|
-extern __thread const int32_t * __libc_tsd_CTYPE_TOUPPER;
|
|
-extern __thread const int32_t * __libc_tsd_CTYPE_TOLOWER;
|
|
+extern __thread const uint16_t * __libc_tsd_CTYPE_B
|
|
+ attribute_hidden attribute_tls_model_ie;
|
|
+extern __thread const int32_t * __libc_tsd_CTYPE_TOUPPER
|
|
+ attribute_hidden attribute_tls_model_ie;
|
|
+extern __thread const int32_t * __libc_tsd_CTYPE_TOLOWER
|
|
+ attribute_hidden attribute_tls_model_ie;
|
|
|
|
|
|
CTYPE_EXTERN_INLINE const uint16_t ** __attribute__ ((const))
|
|
diff --git a/include/rpc/rpc.h b/include/rpc/rpc.h
|
|
index 936ea3cebb8101e1..ba967833ad8d8ac3 100644
|
|
--- a/include/rpc/rpc.h
|
|
+++ b/include/rpc/rpc.h
|
|
@@ -45,7 +45,8 @@ extern void __rpc_thread_key_cleanup (void) attribute_hidden;
|
|
|
|
extern void __rpc_thread_destroy (void) attribute_hidden;
|
|
|
|
-extern __thread struct rpc_thread_variables *__libc_tsd_RPC_VARS;
|
|
+extern __thread struct rpc_thread_variables *__libc_tsd_RPC_VARS
|
|
+ attribute_hidden attribute_tls_model_ie;
|
|
|
|
#define RPC_THREAD_VARIABLE(x) (__rpc_thread_variables()->x)
|
|
|
|
diff --git a/locale/localeinfo.h b/locale/localeinfo.h
|
|
index 7d0e01fc9600aa74..43454b19c1aff3de 100644
|
|
--- a/locale/localeinfo.h
|
|
+++ b/locale/localeinfo.h
|
|
@@ -221,7 +221,8 @@ extern struct __locale_struct _nl_global_locale attribute_hidden;
|
|
/* This fetches the thread-local locale_t pointer, either one set with
|
|
uselocale or &_nl_global_locale. */
|
|
#define _NL_CURRENT_LOCALE __libc_tsd_LOCALE
|
|
-extern __thread locale_t __libc_tsd_LOCALE;
|
|
+extern __thread locale_t __libc_tsd_LOCALE
|
|
+ attribute_hidden attribute_tls_model_ie;
|
|
|
|
/* For static linking it is desireable to avoid always linking in the code
|
|
and data for every category when we can tell at link time that they are
|