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>
This commit is contained in:
Florian Weimer 2025-05-16 19:53:09 +02:00
parent 10a66a8e42
commit a894f04d87
3 changed files with 10 additions and 5 deletions

View File

@ -29,9 +29,12 @@ libc_hidden_proto (toupper)
# define CTYPE_EXTERN_INLINE extern inline # define CTYPE_EXTERN_INLINE extern inline
# endif # endif
extern __thread const uint16_t * __libc_tsd_CTYPE_B; extern __thread const uint16_t * __libc_tsd_CTYPE_B
extern __thread const int32_t * __libc_tsd_CTYPE_TOUPPER; attribute_hidden attribute_tls_model_ie;
extern __thread const int32_t * __libc_tsd_CTYPE_TOLOWER; 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)) CTYPE_EXTERN_INLINE const uint16_t ** __attribute__ ((const))

View File

@ -45,7 +45,8 @@ extern void __rpc_thread_key_cleanup (void) attribute_hidden;
extern void __rpc_thread_destroy (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) #define RPC_THREAD_VARIABLE(x) (__rpc_thread_variables()->x)

View File

@ -237,7 +237,8 @@ extern struct __locale_struct _nl_global_locale attribute_hidden;
/* This fetches the thread-local locale_t pointer, either one set with /* This fetches the thread-local locale_t pointer, either one set with
uselocale or &_nl_global_locale. */ uselocale or &_nl_global_locale. */
#define _NL_CURRENT_LOCALE __libc_tsd_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 /* 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 and data for every category when we can tell at link time that they are