mirror of git://sourceware.org/git/glibc.git
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:
parent
10a66a8e42
commit
a894f04d87
|
@ -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))
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue