diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-09 20:57:30 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-09 20:57:30 +0000 |
commit | 6251c8efbbe666e5c7d20f257f9771eea4c69015 (patch) | |
tree | cd8a160cfd714773ba11358612d806445395a4c5 /gcc/gthr-tpf.h | |
parent | f4a30bd79f3157bbcbde8aa853c04871575db926 (diff) | |
download | gcc-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.h | 47 |
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; } |