svn commit: trunk/uClibc/libc: misc misc/internals sysdeps/linux/common etc...
jocke at uclibc.org
jocke at uclibc.org
Wed Jan 10 14:03:35 PST 2007
Author: jocke
Date: 2007-01-10 14:03:34 -0800 (Wed, 10 Jan 2007)
New Revision: 17232
Log:
Fix SEGV for static builds in exit() path.
Leave the now obsolete libc/misc/pthread dir in for now.
Modified:
trunk/uClibc/libc/misc/Makefile.in
trunk/uClibc/libc/misc/internals/__uClibc_main.c
trunk/uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h
Changeset:
Modified: trunk/uClibc/libc/misc/Makefile.in
===================================================================
--- trunk/uClibc/libc/misc/Makefile.in 2007-01-10 20:57:03 UTC (rev 17231)
+++ trunk/uClibc/libc/misc/Makefile.in 2007-01-10 22:03:34 UTC (rev 17232)
@@ -20,7 +20,6 @@
include $(top_srcdir)libc/misc/internals/Makefile.in
include $(top_srcdir)libc/misc/locale/Makefile.in
include $(top_srcdir)libc/misc/mntent/Makefile.in
-include $(top_srcdir)libc/misc/pthread/Makefile.in
include $(top_srcdir)libc/misc/regex/Makefile.in
include $(top_srcdir)libc/misc/search/Makefile.in
include $(top_srcdir)libc/misc/statfs/Makefile.in
Modified: trunk/uClibc/libc/misc/internals/__uClibc_main.c
===================================================================
--- trunk/uClibc/libc/misc/internals/__uClibc_main.c 2007-01-10 20:57:03 UTC (rev 17231)
+++ trunk/uClibc/libc/misc/internals/__uClibc_main.c 2007-01-10 22:03:34 UTC (rev 17232)
@@ -399,3 +399,29 @@
*/
exit(main(argc, argv, __environ));
}
+
+#ifdef __UCLIBC_HAS_THREADS__
+/* Weaks for internal library use only.
+ *
+ * We need to define weaks here to cover all the pthread functions that
+ * libc itself will use so that we aren't forced to link libc against
+ * libpthread. This file is only used in libc.a and since we have
+ * weaks here, they will be automatically overridden by libpthread.a
+ * if it gets linked in.
+ */
+
+static int __pthread_return_0 (void) { return 0; }
+static void __pthread_return_void (void) { return; }
+
+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_void, _pthread_cleanup_push_defer)
+weak_alias (__pthread_return_void, _pthread_cleanup_pop_restore)
+# ifdef __UCLIBC_HAS_THREADS_NATIVE__
+weak_alias (__pthread_return_0, __pthread_mutexattr_init)
+weak_alias (__pthread_return_0, __pthread_mutexattr_destroy)
+weak_alias (__pthread_return_0, __pthread_mutexattr_settype)
+# endif
+#endif
Modified: trunk/uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2007-01-10 20:57:03 UTC (rev 17231)
+++ trunk/uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2007-01-10 22:03:34 UTC (rev 17232)
@@ -36,7 +36,7 @@
struct _pthread_cleanup_buffer __infunc_pthread_cleanup_buffer; \
if (C) { \
_pthread_cleanup_push_defer(&__infunc_pthread_cleanup_buffer, \
- __uclibc_mutex_unlock, \
+ (void (*) (void *))__pthread_mutex_unlock, \
&(M)); \
__pthread_mutex_lock(&(M)); \
} \
More information about the uClibc-cvs
mailing list