summaryrefslogtreecommitdiff
path: root/gcc/gthr-tpf.h
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-09 20:57:30 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-09 20:57:30 +0000
commit6251c8efbbe666e5c7d20f257f9771eea4c69015 (patch)
treecd8a160cfd714773ba11358612d806445395a4c5 /gcc/gthr-tpf.h
parentf4a30bd79f3157bbcbde8aa853c04871575db926 (diff)
downloadgcc-6251c8efbbe666e5c7d20f257f9771eea4c69015.tar.gz
gcc/ChangeLog:
PR other/4372 * gthr-dce.h, gthr-posix.h, gthr-posix95.h, gthr-solaris.h, gthr-tpf.h: Define __gthrw. For all identifiers that might be weak, introduce weakrefs or non-weak aliases with __gthrw, and prefix all uses with __ghtrw. libobjc/ChangeLog: PR other/4372 * thr-objc.c (_XOPEN_SOURCE): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106704 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gthr-tpf.h')
-rw-r--r--gcc/gthr-tpf.h47
1 files changed, 27 insertions, 20 deletions
diff --git a/gcc/gthr-tpf.h b/gcc/gthr-tpf.h
index a4e82d1427c..d54a6c80171 100644
--- a/gcc/gthr-tpf.h
+++ b/gcc/gthr-tpf.h
@@ -1,6 +1,6 @@
/* Threads compatibility routines for libgcc2 and libobjc.
Compile this one with gcc.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
@@ -69,19 +69,26 @@ typedef pthread_mutex_t __gthread_recursive_mutex_t;
#define __tpf_pthread_active() (CE2THRCPTR != NOTATHREAD)
#if SUPPORTS_WEAK && GTHREAD_USE_WEAK
+# define __gthrw(name) \
+ extern __typeof(name) __gthrw_ ## name __attribute__ ((__weakref__(#name)))
+#else
+# define __gthrw_asmname(cname) __gthrw_asmnamep (__USER_LABEL_PREFIX__, cname)
+# define __gthrw_asmnamep(prefix, cname) __gthrw_string (prefix) cname
+# define __gthrw_string(x) #x
+# define __gthrw(name) \
+ extern __typeof(name) __gthrw_ ## name __asm (__gthrw_asmname (#name))
+#endif
-#pragma weak pthread_once
-#pragma weak pthread_key_create
-#pragma weak pthread_key_delete
-#pragma weak pthread_getspecific
-#pragma weak pthread_setspecific
-#pragma weak pthread_create
-
-#pragma weak pthread_mutex_lock
-#pragma weak pthread_mutex_trylock
-#pragma weak pthread_mutex_unlock
+__gthrw(pthread_once);
+__gthrw(pthread_key_create);
+__gthrw(pthread_key_delete);
+__gthrw(pthread_getspecific);
+__gthrw(pthread_setspecific);
+__gthrw(pthread_create);
-#endif /* SUPPORTS_WEAK */
+__gthrw(pthread_mutex_lock);
+__gthrw(pthread_mutex_trylock);
+__gthrw(pthread_mutex_unlock);
static inline int
__gthread_active_p (void)
@@ -93,7 +100,7 @@ static inline int
__gthread_once (__gthread_once_t *once, void (*func) (void))
{
if (__tpf_pthread_active ())
- return pthread_once (once, func);
+ return __gthrw_pthread_once (once, func);
else
return -1;
}
@@ -102,7 +109,7 @@ static inline int
__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
if (__tpf_pthread_active ())
- return pthread_key_create (key, dtor);
+ return __gthrw_pthread_key_create (key, dtor);
else
return -1;
}
@@ -111,7 +118,7 @@ static inline int
__gthread_key_delete (__gthread_key_t key)
{
if (__tpf_pthread_active ())
- return pthread_key_delete (key);
+ return __gthrw_pthread_key_delete (key);
else
return -1;
}
@@ -120,7 +127,7 @@ static inline void *
__gthread_getspecific (__gthread_key_t key)
{
if (__tpf_pthread_active ())
- return pthread_getspecific (key);
+ return __gthrw_pthread_getspecific (key);
else
return NULL;
}
@@ -129,7 +136,7 @@ static inline int
__gthread_setspecific (__gthread_key_t key, const void *ptr)
{
if (__tpf_pthread_active ())
- return pthread_setspecific (key, ptr);
+ return __gthrw_pthread_setspecific (key, ptr);
else
return -1;
}
@@ -138,7 +145,7 @@ static inline int
__gthread_mutex_lock (__gthread_mutex_t *mutex)
{
if (__tpf_pthread_active ())
- return pthread_mutex_lock (mutex);
+ return __gthrw_pthread_mutex_lock (mutex);
else
return 0;
}
@@ -147,7 +154,7 @@ static inline int
__gthread_mutex_trylock (__gthread_mutex_t *mutex)
{
if (__tpf_pthread_active ())
- return pthread_mutex_trylock (mutex);
+ return __gthrw_pthread_mutex_trylock (mutex);
else
return 0;
}
@@ -156,7 +163,7 @@ static inline int
__gthread_mutex_unlock (__gthread_mutex_t *mutex)
{
if (__tpf_pthread_active ())
- return pthread_mutex_unlock (mutex);
+ return __gthrw_pthread_mutex_unlock (mutex);
else
return 0;
}