summaryrefslogtreecommitdiff
path: root/libpthread/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread/linuxthreads')
-rw-r--r--libpthread/linuxthreads/attr.c8
-rw-r--r--libpthread/linuxthreads/descr.h8
-rw-r--r--libpthread/linuxthreads/errno.c2
-rw-r--r--libpthread/linuxthreads/libc_pthread_init.c4
-rw-r--r--libpthread/linuxthreads/manager.c44
-rw-r--r--libpthread/linuxthreads/pthread.c70
-rw-r--r--libpthread/linuxthreads/specific.c2
-rw-r--r--libpthread/linuxthreads/sysdeps/i386/useldt.h2
-rw-r--r--libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym2
-rw-r--r--libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym2
-rw-r--r--libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h3
-rw-r--r--libpthread/linuxthreads/sysdeps/pthread/errno-loc.c6
-rw-r--r--libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c4
-rw-r--r--libpthread/linuxthreads/sysdeps/pthread/res-state.c6
-rw-r--r--libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h2
-rw-r--r--libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h2
-rw-r--r--libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym2
-rw-r--r--libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h6
-rw-r--r--libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S2
-rw-r--r--libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h4
20 files changed, 88 insertions, 93 deletions
diff --git a/libpthread/linuxthreads/attr.c b/libpthread/linuxthreads/attr.c
index 52e115c8e..a621c2dcc 100644
--- a/libpthread/linuxthreads/attr.c
+++ b/libpthread/linuxthreads/attr.c
@@ -361,7 +361,7 @@ int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr)
attr->__scope = PTHREAD_SCOPE_SYSTEM;
#ifdef _STACK_GROWS_DOWN
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr
- descr->p_guardsize;
# else
@@ -369,7 +369,7 @@ int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr)
- descr->p_guardsize;
# endif
#else
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
attr->__stacksize = (char *)descr->p_guardaddr - descr->p_stackaddr;
# else
attr->__stacksize = (char *)descr->p_guardaddr - (char *)descr;
@@ -385,7 +385,7 @@ int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr)
otherwise the range of the stack area cannot be computed. */
attr->__stacksize += attr->__guardsize;
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
attr->__stackaddr = descr->p_stackaddr;
#else
# ifndef _STACK_GROWS_UP
@@ -395,7 +395,7 @@ int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr)
# endif
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
if (attr->__stackaddr == NULL)
#else
if (descr == &__pthread_initial_thread)
diff --git a/libpthread/linuxthreads/descr.h b/libpthread/linuxthreads/descr.h
index 47a9acd9b..1c816b225 100644
--- a/libpthread/linuxthreads/descr.h
+++ b/libpthread/linuxthreads/descr.h
@@ -23,7 +23,7 @@
#include <stdint.h>
#include <sys/types.h>
#include <hp-timing.h>
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
#include <tls.h>
#endif
#include "uClibc-glue.h"
@@ -112,7 +112,7 @@ union dtv;
struct _pthread_descr_struct
{
-#if !defined USE_TLS || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
+#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
/* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */
union
{
@@ -157,7 +157,7 @@ struct _pthread_descr_struct
char p_sigwaiting; /* true if a sigwait() is in progress */
struct pthread_start_args p_start_args; /* arguments for thread creation */
void ** p_specific[PTHREAD_KEY_1STLEVEL_SIZE]; /* thread-specific data */
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
void * p_libc_specific[_LIBC_TSD_KEY_N]; /* thread-specific data for libc */
int * p_errnop; /* pointer to used errno variable */
int p_errno; /* error returned by last system call */
@@ -185,7 +185,7 @@ struct _pthread_descr_struct
#if HP_TIMING_AVAIL
hp_timing_t p_cpuclock_offset; /* Initial CPU clock for thread. */
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
char *p_stackaddr; /* Stack address. */
#endif
size_t p_alloca_cutoff; /* Maximum size which should be allocated
diff --git a/libpthread/linuxthreads/errno.c b/libpthread/linuxthreads/errno.c
index 03c23f867..b8d9eb343 100644
--- a/libpthread/linuxthreads/errno.c
+++ b/libpthread/linuxthreads/errno.c
@@ -20,7 +20,7 @@
#include "pthread.h"
#include "internals.h"
-#if !USE_TLS || !HAVE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
/* The definition in libc is sufficient if we use TLS. */
int *
__errno_location (void)
diff --git a/libpthread/linuxthreads/libc_pthread_init.c b/libpthread/linuxthreads/libc_pthread_init.c
index afe995ae8..c59f40b85 100644
--- a/libpthread/linuxthreads/libc_pthread_init.c
+++ b/libpthread/linuxthreads/libc_pthread_init.c
@@ -20,7 +20,7 @@
#include <locale.h>
#include <stdlib.h>
#include <string.h>
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
#include <tls.h>
#endif
#include "internals.h"
@@ -42,7 +42,7 @@ __libc_pthread_init (functions)
sizeof (__libc_pthread_functions));
#endif
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* Initialize thread-locale current locale to point to the global one.
With __thread support, the variable's initializer takes care of this. */
__uselocale (LC_GLOBAL_LOCALE);
diff --git a/libpthread/linuxthreads/manager.c b/libpthread/linuxthreads/manager.c
index b1482f162..3c5bee876 100644
--- a/libpthread/linuxthreads/manager.c
+++ b/libpthread/linuxthreads/manager.c
@@ -126,7 +126,7 @@ __pthread_manager(void *arg)
#ifdef INIT_THREAD_SELF
INIT_THREAD_SELF(self, 1);
#endif
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* Set the error variable. */
self->p_errnop = &self->p_errno;
self->p_h_errnop = &self->p_h_errno;
@@ -289,7 +289,7 @@ pthread_start_thread(void *arg)
__sched_setscheduler(THREAD_GETMEM(self, p_pid),
SCHED_OTHER, &default_params);
}
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* Initialize thread-locale current locale to point to the global one.
With __thread support, the variable's initializer takes care of this. */
__uselocale (LC_GLOBAL_LOCALE);
@@ -333,7 +333,7 @@ pthread_start_thread_event(void *arg)
pthread_start_thread (arg);
}
-#if defined USE_TLS && !FLOATING_STACKS
+#if defined __UCLIBC_HAS_TLS__ && !FLOATING_STACKS
# error "TLS can only work with floating stacks"
#endif
@@ -351,7 +351,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
char * guardaddr;
size_t stacksize, guardsize;
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* TLS cannot work with fixed thread descriptor addresses. */
assert (default_new_thread == NULL);
#endif
@@ -360,7 +360,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
{
#ifdef _STACK_GROWS_UP
/* The user provided a stack. */
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
/* This value is not needed. */
new_thread = (pthread_descr) attr->__stackaddr;
new_thread_bottom = (char *) new_thread;
@@ -381,7 +381,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
addresses, stackaddr would be the lowest address in the stack
segment, so that it is consistently close to the initial sp
value. */
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
new_thread = (pthread_descr) attr->__stackaddr;
# else
new_thread =
@@ -394,7 +394,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
#ifndef THREAD_SELF
__pthread_nonstandard_stacks = 1;
#endif
-#ifndef USE_TLS
+#ifndef __UCLIBC_HAS_TLS__
/* Clear the thread data structure. */
memset (new_thread, '\0', sizeof (*new_thread));
#endif
@@ -438,7 +438,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
mprotect (guardaddr, guardsize, PROT_NONE);
new_thread_bottom = (char *) map_addr;
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
new_thread = ((pthread_descr) (new_thread_bottom + stacksize
+ guardsize));
# else
@@ -451,7 +451,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
mprotect (guardaddr, guardsize, PROT_NONE);
new_thread_bottom = (char *) map_addr + guardsize;
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
new_thread = ((pthread_descr) (new_thread_bottom + stacksize));
# else
new_thread = ((pthread_descr) (new_thread_bottom + stacksize)) - 1;
@@ -462,7 +462,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr,
mprotect (guardaddr, guardsize, PROT_NONE);
new_thread = (pthread_descr) map_addr;
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
new_thread_bottom = (char *) new_thread;
# else
new_thread_bottom = (char *) (new_thread + 1);
@@ -597,7 +597,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
int pagesize = __getpagesize();
int saved_errno = 0;
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
new_thread = _dl_allocate_tls (NULL);
if (new_thread == NULL)
return EAGAIN;
@@ -621,7 +621,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
{
if (sseg >= PTHREAD_THREADS_MAX)
{
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
# if defined(TLS_DTV_AT_TP)
new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
# endif
@@ -635,7 +635,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
pagesize, &stack_addr, &new_thread_bottom,
&guardaddr, &guardsize, &stksize) == 0)
{
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
new_thread->p_stackaddr = stack_addr;
#else
new_thread = (pthread_descr) stack_addr;
@@ -657,18 +657,18 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
new_thread_id = sseg + pthread_threads_counter;
/* Initialize the thread descriptor. Elements which have to be
initialized to zero already have this value. */
-#if !defined USE_TLS || !TLS_DTV_AT_TP
+#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
new_thread->p_header.data.tcb = new_thread;
new_thread->p_header.data.self = new_thread;
#endif
-#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
+#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
new_thread->p_multiple_threads = 1;
#endif
new_thread->p_tid = new_thread_id;
new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
new_thread->p_canceltype = PTHREAD_CANCEL_DEFERRED;
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
new_thread->p_errnop = &new_thread->p_errno;
new_thread->p_h_errnop = &new_thread->p_h_errno;
new_thread->p_resp = &new_thread->p_res;
@@ -807,7 +807,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
munmap((caddr_t)new_thread_bottom,
2 * stacksize + new_thread->p_guardsize);
#elif defined _STACK_GROWS_UP
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
size_t stacksize = guardaddr - stack_addr;
munmap(stack_addr, stacksize + guardsize);
# else
@@ -815,7 +815,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
munmap(new_thread, stacksize + guardsize);
# endif
#else
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
size_t stacksize = stack_addr - new_thread_bottom;
# else
size_t stacksize = (char *)(new_thread+1) - new_thread_bottom;
@@ -823,7 +823,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
munmap(new_thread_bottom - guardsize, guardsize + stacksize);
#endif
}
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
# if defined(TLS_DTV_AT_TP)
new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
# endif
@@ -890,7 +890,7 @@ static void pthread_free(pthread_descr th)
/* Free the stack and thread descriptor area */
char *guardaddr = th->p_guardaddr;
#ifdef _STACK_GROWS_UP
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
size_t stacksize = guardaddr - th->p_stackaddr;
guardaddr = th->p_stackaddr;
# else
@@ -900,7 +900,7 @@ static void pthread_free(pthread_descr th)
#else
/* Guardaddr is always set, even if guardsize is 0. This allows
us to compute everything else. */
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
size_t stacksize = th->p_stackaddr - guardaddr - guardsize;
# else
size_t stacksize = (char *)(th+1) - guardaddr - guardsize;
@@ -916,7 +916,7 @@ static void pthread_free(pthread_descr th)
}
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
# if defined(TLS_DTV_AT_TP)
th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE);
# endif
diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
index 941bb6646..043146bfa 100644
--- a/libpthread/linuxthreads/pthread.c
+++ b/libpthread/linuxthreads/pthread.c
@@ -37,7 +37,7 @@
# error "This must not happen"
#endif
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* These variables are used by the setup code. */
extern int _errno;
extern int _h_errno;
@@ -50,7 +50,7 @@ extern struct __res_state *__resp;
# endif
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* We need only a few variables. */
#define manager_thread __pthread_manager_threadp
@@ -67,7 +67,7 @@ struct _pthread_descr_struct __pthread_initial_thread = {
.p_tid = PTHREAD_THREADS_MAX,
.p_lock = &__pthread_handles[0].h_lock,
.p_start_args = PTHREAD_START_ARGS_INITIALIZER(NULL),
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
.p_errnop = &_errno,
.p_h_errnop = &_h_errno,
#endif
@@ -86,7 +86,7 @@ struct _pthread_descr_struct __pthread_manager_thread = {
.p_header.data.multiple_threads = 1,
.p_lock = &__pthread_handles[1].h_lock,
.p_start_args = PTHREAD_START_ARGS_INITIALIZER(__pthread_manager),
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
.p_errnop = &__pthread_manager_thread.p_errno,
#endif
.p_nr = 1,
@@ -98,7 +98,7 @@ struct _pthread_descr_struct __pthread_manager_thread = {
/* Pointer to the main thread (the father of the thread manager thread) */
/* Originally, this is the initial thread, but this changes after fork() */
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
pthread_descr __pthread_main_thread;
#else
pthread_descr __pthread_main_thread = &__pthread_initial_thread;
@@ -224,13 +224,13 @@ extern void *__dso_handle __attribute__ ((weak));
#endif
-#if defined USE_TLS && !defined SHARED
+#if defined __UCLIBC_HAS_TLS__ && !defined SHARED
extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
#endif
struct pthread_functions __pthread_functions =
{
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
.ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
.ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
.ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
@@ -292,7 +292,7 @@ static int *__libc_multiple_threads_ptr;
void
__pthread_initialize_minimal(void)
{
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
pthread_descr self;
/* First of all init __pthread_handles[0] and [1] if needed. */
@@ -304,7 +304,7 @@ __pthread_initialize_minimal(void)
/* Unlike in the dynamically linked case the dynamic linker has not
taken care of initializing the TLS data structures. */
__libc_setup_tls (TLS_TCB_SIZE, TLS_TCB_ALIGN);
-# elif !USE___THREAD
+# elif !defined __UCLIBC_HAS_TLS__
if (__builtin_expect (GL(dl_tls_dtv_slotinfo_list) == NULL, 0))
{
tcbhead_t *tcbp;
@@ -360,7 +360,7 @@ cannot allocate TLS data structures for initial thread\n";
self->p_nextlive = self->p_prevlive = self;
self->p_tid = PTHREAD_THREADS_MAX;
self->p_lock = &__pthread_handles[0].h_lock;
-# ifndef HAVE___THREAD
+# ifndef __UCLIBC_HAS_TLS__
self->p_errnop = &_errno;
self->p_h_errnop = &_h_errno;
# endif
@@ -377,7 +377,7 @@ cannot allocate TLS data structures for initial thread\n";
/* And fill in the pointer the the thread __pthread_handles array. */
__pthread_handles[0].h_descr = self;
-#else /* USE_TLS */
+#else /* __UCLIBC_HAS_TLS__ */
/* First of all init __pthread_handles[0] and [1]. */
# if __LT_SPINLOCK_INIT != 0
@@ -395,7 +395,7 @@ cannot allocate TLS data structures for initial thread\n";
#endif
#if HP_TIMING_AVAIL
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
self->p_cpuclock_offset = GL(dl_cpuclock_offset);
# else
__pthread_initial_thread.p_cpuclock_offset = GL(dl_cpuclock_offset);
@@ -439,7 +439,7 @@ __pthread_init_max_stacksize(void)
__pthread_max_stacksize = max_stack;
if (max_stack / 4 < __MAX_ALLOCA_CUTOFF)
{
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
pthread_descr self = THREAD_SELF;
self->p_alloca_cutoff = max_stack / 4;
#else
@@ -448,10 +448,8 @@ __pthread_init_max_stacksize(void)
}
}
-/* psm: we do not have any ld.so support yet
- * remove the USE_TLS guard if nptl is added */
-#if defined SHARED && defined USE_TLS
-# if USE___THREAD
+#if defined SHARED && defined __UCLIBC_HAS_TLS__
+# ifdef __UCLIBC_HAS_TLS__
/* When using __thread for this, we do it in libc so as not
to give libpthread its own TLS segment just for this. */
extern void **__libc_dl_error_tsd (void) __attribute__ ((const));
@@ -464,7 +462,7 @@ __libc_dl_error_tsd (void)
# endif
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
static __inline__ void __attribute__((always_inline))
init_one_static_tls (pthread_descr descr, struct link_map *map)
{
@@ -533,10 +531,10 @@ static void pthread_initialize(void)
(char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));
# endif
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* Update the descriptor for the initial thread. */
THREAD_SETMEM (((pthread_descr) NULL), p_pid, __getpid());
-# if !defined HAVE___THREAD && defined __UCLIBC_HAS_RESOLVER_SUPPORT__
+# if defined __UCLIBC_HAS_RESOLVER_SUPPORT__
/* Likewise for the resolver state _res. */
THREAD_SETMEM (((pthread_descr) NULL), p_resp, __resp);
# endif
@@ -587,9 +585,7 @@ static void pthread_initialize(void)
/* How many processors. */
__pthread_smp_kernel = is_smp_system ();
-/* psm: we do not have any ld.so support yet
- * remove the USE_TLS guard if nptl is added */
-#if defined SHARED && defined USE_TLS
+#if defined SHARED && defined __UCLIBC_HAS_TLS__
/* Transfer the old value from the dynamic linker's internal location. */
*__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
@@ -604,7 +600,7 @@ static void pthread_initialize(void)
__pthread_mutex_lock (&GL(dl_load_lock).mutex);
#endif
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
GL(dl_init_static_tls) = &__pthread_init_static_tls;
#endif
@@ -632,12 +628,12 @@ int __pthread_initialize_manager(void)
struct pthread_request request;
int report_events;
pthread_descr mgr;
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
tcbhead_t *tcbp;
#endif
__pthread_multiple_threads = 1;
-#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
+#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
__pthread_main_thread->p_multiple_threads = 1;
#endif
*__libc_multiple_threads_ptr = 1;
@@ -664,7 +660,7 @@ int __pthread_initialize_manager(void)
return -1;
}
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* Allocate memory for the thread descriptor and the dtv. */
tcbp = _dl_allocate_tls (NULL);
if (tcbp == NULL) {
@@ -684,7 +680,7 @@ int __pthread_initialize_manager(void)
__pthread_handles[1].h_descr = manager_thread = mgr;
/* Initialize the descriptor. */
-#if !defined USE_TLS || !TLS_DTV_AT_TP
+#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
mgr->p_header.data.tcb = tcbp;
mgr->p_header.data.self = mgr;
mgr->p_header.data.multiple_threads = 1;
@@ -692,7 +688,7 @@ int __pthread_initialize_manager(void)
mgr->p_multiple_threads = 1;
#endif
mgr->p_lock = &__pthread_handles[1].h_lock;
-# ifndef HAVE___THREAD
+# ifndef __UCLIBC_HAS_TLS__
mgr->p_errnop = &mgr->p_errno;
# endif
mgr->p_start_args = (struct pthread_start_args) PTHREAD_START_ARGS_INITIALIZER(__pthread_manager);
@@ -710,7 +706,7 @@ int __pthread_initialize_manager(void)
/* Start the thread manager */
pid = 0;
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
if (__linuxthreads_initial_report_events != 0)
THREAD_SETMEM (((pthread_descr) NULL), p_report_events,
__linuxthreads_initial_report_events);
@@ -729,7 +725,7 @@ int __pthread_initialize_manager(void)
uint32_t mask = __td_eventmask (TD_CREATE);
uint32_t event_bits;
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
event_bits = THREAD_GETMEM_NC (((pthread_descr) NULL),
p_eventbuf.eventmask.event_bits[idx]);
#else
@@ -795,7 +791,7 @@ int __pthread_initialize_manager(void)
#endif
}
if (__builtin_expect (pid, 0) == -1) {
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
_dl_deallocate_tls (tcbp, true);
#endif
free(__pthread_manager_thread_bos);
@@ -897,7 +893,7 @@ pthread_descr __pthread_self_stack(void)
if (sp >= __pthread_manager_thread_bos && sp < __pthread_manager_thread_tos)
return manager_thread;
h = __pthread_handles + 2;
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
# ifdef _STACK_GROWS_UP
while (h->h_descr == NULL
|| ! (sp >= h->h_descr->p_stackaddr && sp < h->h_descr->p_guardaddr))
@@ -991,7 +987,7 @@ static void pthread_onexit_process(int retcode, void *arg)
children, so that timings for main thread account for all threads. */
if (self == __pthread_main_thread)
{
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
waitpid(manager_thread->p_pid, NULL, __WCLONE);
#else
waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
@@ -999,7 +995,7 @@ static void pthread_onexit_process(int retcode, void *arg)
/* Since all threads have been asynchronously terminated
(possibly holding locks), free cannot be used any more.
For mtrace, we'd like to print something though. */
- /* #ifdef USE_TLS
+ /* #ifdef __UCLIBC_HAS_TLS__
tcbhead_t *tcbp = (tcbhead_t *) manager_thread;
# if defined(TLS_DTV_AT_TP)
tcbp = (tcbhead_t) ((char *) tcbp + TLS_PRE_TCB_SIZE);
@@ -1057,7 +1053,7 @@ static void pthread_handle_sigcancel(int sig)
/* Main thread should accumulate times for thread manager and its
children, so that timings for main thread account for all threads. */
if (self == __pthread_main_thread) {
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
waitpid(manager_thread->p_pid, NULL, __WCLONE);
#else
waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
@@ -1118,7 +1114,7 @@ void __pthread_reset_main_thread(void)
__pthread_main_thread = self;
THREAD_SETMEM(self, p_nextlive, self);
THREAD_SETMEM(self, p_prevlive, self);
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* Now this thread modifies the global variables. */
THREAD_SETMEM(self, p_errnop, &_errno);
THREAD_SETMEM(self, p_h_errnop, &_h_errno);
diff --git a/libpthread/linuxthreads/specific.c b/libpthread/linuxthreads/specific.c
index 764bf1e95..4a6dad308 100644
--- a/libpthread/linuxthreads/specific.c
+++ b/libpthread/linuxthreads/specific.c
@@ -212,7 +212,7 @@ void __pthread_destroy_specifics()
__pthread_unlock(THREAD_GETMEM(self, p_lock));
}
-#if !(USE_TLS && HAVE___THREAD)
+#ifndef __UCLIBC_HAS_TLS__
/* Thread-specific data for libc. */
diff --git a/libpthread/linuxthreads/sysdeps/i386/useldt.h b/libpthread/linuxthreads/sysdeps/i386/useldt.h
index fa9a2a528..c72a7c8f7 100644
--- a/libpthread/linuxthreads/sysdeps/i386/useldt.h
+++ b/libpthread/linuxthreads/sysdeps/i386/useldt.h
@@ -87,7 +87,7 @@ extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);
because we inherited the value set up in the main thread by TLS setup.
We need to extract that value and set up the same segment in this
thread. */
-#if defined (USE_TLS) && USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
# define DO_SET_THREAD_AREA_REUSE(nr) 1
#else
/* Without TLS, we do the initialization of the main thread, where NR == 0. */
diff --git a/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym
index f7793f766..1000ad0a9 100644
--- a/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym
+++ b/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym
@@ -2,7 +2,7 @@
#include <tls.h>
--
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
#else
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
diff --git a/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
index 7c5cca01e..7940cf620 100644
--- a/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
+++ b/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
@@ -3,7 +3,7 @@
-- This line separates the #include lines from conditionals.
-# ifdef USE_TLS
+# ifdef __UCLIBC_HAS_TLS__
-- Abuse tls.h macros to derive offsets relative to the thread register.
# undef __thread_register
diff --git a/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h b/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
index fa6eb4be2..6155280b1 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
+++ b/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
@@ -21,10 +21,9 @@
#define _BITS_LIBC_TSD_H 1
#include <linuxthreads/descr.h>
+#ifdef __UCLIBC_HAS_TLS__
#include <tls.h>
-#if USE_TLS && HAVE___THREAD
-
/* When __thread works, the generic definition is what we want. */
# include <sysdeps/generic/bits/libc-tsd.h>
diff --git a/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c b/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c
index c3b3087e4..69352ea32 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c
+++ b/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c
@@ -22,18 +22,18 @@
#include <linuxthreads/internals.h>
#include <sysdep-cancel.h>
-#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO
+#if !defined __UCLIBC_HAS_TLS__ && !RTLD_PRIVATE_ERRNO
#undef errno
extern int errno;
#endif
int *
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
weak_const_function
#endif
__errno_location (void)
{
-#if ! USE___THREAD && !defined NOT_IN_libc
+#if !defined __UCLIBC_HAS_TLS__ && !defined NOT_IN_libc
if (! SINGLE_THREAD_P)
{
pthread_descr self = thread_self();
diff --git a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
index fbc557616..5a2657639 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
+++ b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
@@ -21,7 +21,7 @@
#include <linuxthreads/internals.h>
#include <sysdep-cancel.h>
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
# undef h_errno
extern int h_errno;
#endif
@@ -31,7 +31,7 @@ int *
weak_const_function
__h_errno_location (void)
{
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
if (! SINGLE_THREAD_P)
{
pthread_descr self = thread_self();
diff --git a/libpthread/linuxthreads/sysdeps/pthread/res-state.c b/libpthread/linuxthreads/sysdeps/pthread/res-state.c
index 016e20b4e..6eb77637b 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/res-state.c
+++ b/libpthread/linuxthreads/sysdeps/pthread/res-state.c
@@ -21,19 +21,19 @@
#include <linuxthreads/internals.h>
#include <sysdep-cancel.h>
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
# undef _res
extern struct __res_state _res;
#endif
/* When threaded, _res may be a per-thread variable. */
struct __res_state *
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
weak_const_function
#endif
__res_state (void)
{
-#if ! USE___THREAD
+#ifndef __UCLIBC_HAS_TLS__
if (! SINGLE_THREAD_P)
{
pthread_descr self = thread_self();
diff --git a/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
index d52d600ad..685d688ae 100644
--- a/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
+++ b/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
@@ -58,7 +58,7 @@ testandset (int *spinlock)
#define CURRENT_STACK_FRAME stack_pointer
register char * stack_pointer __asm__ ("15");
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* Return the thread descriptor for the current thread. */
# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
diff --git a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
index 187e1f872..366482c0f 100644
--- a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
+++ b/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
@@ -58,7 +58,7 @@ testandset (int *spinlock)
#define CURRENT_STACK_FRAME stack_pointer
register char * stack_pointer __asm__ ("15");
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
/* Return the thread descriptor for the current thread. */
# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
diff --git a/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym
index 328eb0573..6324a016c 100644
--- a/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym
+++ b/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym
@@ -2,7 +2,7 @@
#include <tls.h>
--
-#ifdef USE_TLS
+#ifdef __UCLIBC_HAS_TLS__
MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads)
TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
#else
diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
index 0bb16e453..220a925e6 100644
--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -139,7 +139,7 @@
#endif
# ifndef __ASSEMBLER__
-# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
+# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
# define SINGLE_THREAD_P \
__builtin_expect (THREAD_GETMEM (THREAD_SELF, \
p_header.data.multiple_threads) == 0, 1)
@@ -155,7 +155,7 @@ extern int __local_multiple_threads
# else
# if !defined __PIC__
# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads
-# elif defined FLOATING_STACKS && USE___THREAD
+# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
# define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
# else
# if !defined NOT_IN_libc || defined IS_IN_libpthread
@@ -165,7 +165,7 @@ extern int __local_multiple_threads
movl __local_multiple_threads@GOT(%ecx), %ecx;\
cmpl $0, (%ecx)
# endif
-# if !defined HAVE_HIDDEN || !USE___THREAD
+# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
# define SINGLE_THREAD_P \
SETUP_PIC_REG (cx); \
addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
index fec902752..fb7596f27 100644
--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
@@ -32,7 +32,7 @@ ENTRY (__vfork)
#ifdef __NR_vfork
# ifdef SHARED
-# if !defined HAVE_HIDDEN || !USE___THREAD
+# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
SETUP_PIC_REG (cx)
# else
call __i686.get_pc_thunk.cx
diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
index 48b2caadd..224c0e4d8 100644
--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
@@ -155,7 +155,7 @@
# endif
# ifndef __ASSEMBLER__
-# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
+# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
# define SINGLE_THREAD_P \
__builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
# else
@@ -172,7 +172,7 @@ extern int __local_multiple_threads attribute_hidden;
.align 2; \
1: .long __local_multiple_threads; \
2:
-# elif defined FLOATING_STACKS && USE___THREAD
+# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
# define SINGLE_THREAD_P \
stc gbr,r0; \
mov.w 0f,r1; \