summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2011-05-08 00:23:14 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2012-06-15 14:00:44 +0200
commit1d2dbb9eb220f313ebc712f1c69c611f6867da54 (patch)
tree32a61cc34674d13ba7b1c3e0aaf22ae8af178644 /libpthread
parent27cfef649da3b51dd37f63a15797f7ba26bd2d95 (diff)
linuxthreads: guard *tsd* related stuff correctly
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h7
-rw-r--r--libpthread/linuxthreads/internals.h2
-rw-r--r--libpthread/linuxthreads/pthread.c2
-rw-r--r--libpthread/linuxthreads/specific.c2
-rw-r--r--libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h2
5 files changed, 9 insertions, 6 deletions
diff --git a/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h b/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h
index 31d859ec3..bee7eb1be 100644
--- a/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h
+++ b/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h
@@ -30,12 +30,11 @@ enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
_LIBC_TSD_KEY_CTYPE_TOUPPER,
_LIBC_TSD_KEY_N };
-#include <sys/cdefs.h>
-#include <tls.h>
-
+#include <features.h>
#include <linuxthreads.old/internals.h>
-#if defined(USE_TLS) && USE_TLS && HAVE___THREAD
+#ifdef __UCLIBC_HAS_TLS__
+#include <tls.h>
/* When __thread works, the generic definition is what we want. */
# include <sysdeps/generic/bits/libc-tsd.h>
diff --git a/libpthread/linuxthreads/internals.h b/libpthread/linuxthreads/internals.h
index e855f5062..4ce39fb4b 100644
--- a/libpthread/linuxthreads/internals.h
+++ b/libpthread/linuxthreads/internals.h
@@ -438,10 +438,12 @@ extern void __linuxthreads_reap_event (void);
extern void __pthread_initialize (void);
/* TSD. */
+#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
extern int __pthread_internal_tsd_set (int key, const void * pointer);
extern void * __pthread_internal_tsd_get (int key);
extern void ** __attribute__ ((__const__))
__pthread_internal_tsd_address (int key);
+#endif
/* Sighandler wrappers. */
extern void __pthread_sighandler(int signo, SIGCONTEXT ctx);
diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
index 043146bfa..5dccd939f 100644
--- a/libpthread/linuxthreads/pthread.c
+++ b/libpthread/linuxthreads/pthread.c
@@ -230,7 +230,7 @@ extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
struct pthread_functions __pthread_functions =
{
-#ifndef __UCLIBC_HAS_TLS__
+#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
.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,
diff --git a/libpthread/linuxthreads/specific.c b/libpthread/linuxthreads/specific.c
index 4a6dad308..0daad83f5 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));
}
-#ifndef __UCLIBC_HAS_TLS__
+#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
/* Thread-specific data for libc. */
diff --git a/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h b/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
index 44677e886..04d45467c 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
+++ b/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
@@ -72,10 +72,12 @@ struct pthread_functions
void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
char *targetframe);
pthread_descr (*ptr_pthread_thread_self) (void);
+#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
void * (*ptr_pthread_internal_tsd_get) (int key);
void ** __attribute__ ((__const__))
(*ptr_pthread_internal_tsd_address) (int key);
+#endif
int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
struct sigaction *oact);
int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);