[uClibc-cvs] uClibc/libc/misc/pthread weaks.c,1.4,1.5

Manuel Novoa III mjn3 at uclibc.org
Sun Jan 4 01:29:04 UTC 2004


Update of /var/cvs/uClibc/libc/misc/pthread
In directory nail:/tmp/cvs-serv10660

Modified Files:
	weaks.c 
Log Message:
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.  :-(


Index: weaks.c
===================================================================
RCS file: /var/cvs/uClibc/libc/misc/pthread/weaks.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- weaks.c	27 Dec 2003 23:30:33 -0000	1.4
+++ weaks.c	4 Jan 2004 01:29:01 -0000	1.5
@@ -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)
 {




More information about the uClibc-cvs mailing list