diff options
author | Manuel Novoa III <mjn3@codepoet.org> | 2004-01-04 01:29:01 +0000 |
---|---|---|
committer | Manuel Novoa III <mjn3@codepoet.org> | 2004-01-04 01:29:01 +0000 |
commit | 613037d45c35b631adc058e2953874a3b7ec1c5c (patch) | |
tree | 894199aa41a6c0e9ed730af7e6e513793e29e330 /libc | |
parent | cf0dfb8e9c3968cfcc045092993eb9fffbfca1bd (diff) |
My mistake. We do need some weak pthread_* funcs. But we were previously
missing one in the glibc abi, and including a number of extras (which I
left in commented).
Unfortunately, this brings back the perl pthread bug. Fixing the incorrect
weaks in libpthread wasn't sufficient to escape the shared loader bug. :-(
Diffstat (limited to 'libc')
-rw-r--r-- | libc/misc/pthread/weaks.c | 89 |
1 files changed, 87 insertions, 2 deletions
diff --git a/libc/misc/pthread/weaks.c b/libc/misc/pthread/weaks.c index a08b00984..1320433f3 100644 --- a/libc/misc/pthread/weaks.c +++ b/libc/misc/pthread/weaks.c @@ -22,22 +22,107 @@ #include <stdlib.h> extern int __pthread_return_0 __P ((void)); +extern int __pthread_return_1 __P ((void)); extern void __pthread_return_void __P ((void)); -weak_alias (__pthread_return_0, __pthread_once) -weak_alias (__pthread_return_void, __pthread_initialize_minimal) +/**********************************************************************/ +/* Weaks for application/library use. + * + * Verified by comparing to glibc's linuxthreads/forward.c and defined + * only those that are in the glibc abi. + * The commented aliases are ones that were previously defined in uClibc + * and which I left in for documentation. + */ + +weak_alias (__pthread_return_0, pthread_attr_destroy) +weak_alias (__pthread_return_0, pthread_attr_getdetachstate) +weak_alias (__pthread_return_0, pthread_attr_getinheritsched) +weak_alias (__pthread_return_0, pthread_attr_getschedparam) +weak_alias (__pthread_return_0, pthread_attr_getschedpolicy) +weak_alias (__pthread_return_0, pthread_attr_getscope) +/* weak_alias (__pthread_return_0, pthread_attr_getstackaddr) */ +/* weak_alias (__pthread_return_0, pthread_attr_getstacksize) */ +weak_alias (__pthread_return_0, pthread_attr_init) +weak_alias (__pthread_return_0, pthread_attr_setdetachstate) +weak_alias (__pthread_return_0, pthread_attr_setinheritsched) +weak_alias (__pthread_return_0, pthread_attr_setschedparam) +weak_alias (__pthread_return_0, pthread_attr_setschedpolicy) +weak_alias (__pthread_return_0, pthread_attr_setscope) +/* weak_alias (__pthread_return_0, pthread_attr_setstackaddr) */ +/* weak_alias (__pthread_return_0, pthread_attr_setstacksize) */ +weak_alias (__pthread_return_0, pthread_cond_broadcast) +weak_alias (__pthread_return_0, pthread_cond_destroy) +weak_alias (__pthread_return_0, pthread_cond_init) +weak_alias (__pthread_return_0, pthread_cond_signal) +weak_alias (__pthread_return_0, pthread_cond_timedwait) +weak_alias (__pthread_return_0, pthread_cond_wait) +weak_alias (__pthread_return_0, pthread_condattr_destroy) +weak_alias (__pthread_return_0, pthread_condattr_init) +weak_alias (__pthread_return_0, pthread_getschedparam) +/* weak_alias (__pthread_return_0, pthread_getcancelstate) */ +/* weak_alias (__pthread_return_0, pthread_getconcurrency) */ +/* weak_alias (__pthread_return_0, pthread_getschedparam) */ +weak_alias (__pthread_return_0, pthread_mutex_destroy) +weak_alias (__pthread_return_0, pthread_mutex_init) +weak_alias (__pthread_return_0, pthread_mutex_lock) +/* weak_alias (__pthread_return_0, pthread_mutex_trylock) */ +weak_alias (__pthread_return_0, pthread_mutex_unlock) +/* weak_alias (__pthread_return_0, pthread_mutexattr_destroy) */ +/* weak_alias (__pthread_return_0, pthread_mutexattr_gettype) */ +/* weak_alias (__pthread_return_0, pthread_mutexattr_init) */ +/* weak_alias (__pthread_return_0, pthread_mutexattr_settype) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_destroy) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_init) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_rdlock) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_tryrdlock) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_trywrlock) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_unlock) */ +/* weak_alias (__pthread_return_0, pthread_rwlock_wrlock) */ +/* weak_alias (__pthread_return_0, pthread_rwlockattr_destroy) */ +/* weak_alias (__pthread_return_0, pthread_rwlockattr_getpshared) */ +/* weak_alias (__pthread_return_0, pthread_rwlockattr_init) */ +/* weak_alias (__pthread_return_0, pthread_rwlockattr_setpshared) */ +weak_alias (__pthread_return_0, pthread_self) +weak_alias (__pthread_return_0, pthread_setcancelstate) +weak_alias (__pthread_return_0, pthread_setcanceltype) +/* weak_alias (__pthread_return_0, pthread_setconcurrency) */ +weak_alias (__pthread_return_0, pthread_setschedparam) + +/* Those are pthread functions which return 1 if successful. */ +weak_alias (__pthread_return_1, pthread_equal) +/* pthread_exit () is a special case. */ +void weak_function +pthread_exit (void *retval) +{ + exit (EXIT_SUCCESS); +} + +/**********************************************************************/ +/* Weaks used internally by the C library. */ weak_alias (__pthread_return_0, __pthread_mutex_init) weak_alias (__pthread_return_0, __pthread_mutex_lock) weak_alias (__pthread_return_0, __pthread_mutex_trylock) weak_alias (__pthread_return_0, __pthread_mutex_unlock) +/* Weaks used internally by the C library rpc code only. */ +weak_alias (__pthread_return_0, __pthread_once) +weak_alias (__pthread_return_void, __pthread_initialize_minimal) + +/**********************************************************************/ + int __pthread_return_0 (void) { return 0; } +int +__pthread_return_1 (void) +{ + return 1; +} + void __pthread_return_void (void) { |