summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2004-01-04 01:29:01 +0000
committerManuel Novoa III <mjn3@codepoet.org>2004-01-04 01:29:01 +0000
commit613037d45c35b631adc058e2953874a3b7ec1c5c (patch)
tree894199aa41a6c0e9ed730af7e6e513793e29e330 /libc
parentcf0dfb8e9c3968cfcc045092993eb9fffbfca1bd (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.c89
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)
{