From e9264e49f3777c298e8a734cf4483c26b2602584 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 4 Jan 2006 03:45:56 +0000 Subject: update pthread weak handling to the style glibc uses --- libc/misc/pthread/Makefile.in | 10 ++--- libc/misc/pthread/weaks.c | 102 +++--------------------------------------- 2 files changed, 11 insertions(+), 101 deletions(-) (limited to 'libc/misc/pthread') diff --git a/libc/misc/pthread/Makefile.in b/libc/misc/pthread/Makefile.in index 02bfc25b4..7ce9a84ae 100644 --- a/libc/misc/pthread/Makefile.in +++ b/libc/misc/pthread/Makefile.in @@ -5,16 +5,14 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC := no-tsd.c weaks.c - MISC_PTHREAD_DIR := $(top_srcdir)libc/misc/pthread MISC_PTHREAD_OUT := $(top_builddir)libc/misc/pthread -MISC_PTHREAD_SRC := $(patsubst %.c,$(MISC_PTHREAD_DIR)/%.c,$(CSRC)) -MISC_PTHREAD_OBJ := $(patsubst %.c,$(MISC_PTHREAD_OUT)/%.o,$(CSRC)) +MISC_PTHREAD_CSRC := no-tsd.c +MISC_PTHREAD_STATIC_CSRC := weaks.c -libc-a-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ) -libc-so-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ:.o=.os) +libc-static-$(UCLIBC_HAS_THREADS) += $(patsubst %.c,$(MISC_PTHREAD_OUT)/%.o,$(MISC_PTHREAD_STATIC_CSRC)) +libc-shared-$(UCLIBC_HAS_THREADS) += $(patsubst %.c,$(MISC_PTHREAD_OUT)/%.oS,$(MISC_PTHREAD_CSRC)) objclean-y += misc_pthread_objclean diff --git a/libc/misc/pthread/weaks.c b/libc/misc/pthread/weaks.c index 4b9e02672..20a98a3fe 100644 --- a/libc/misc/pthread/weaks.c +++ b/libc/misc/pthread/weaks.c @@ -18,109 +18,21 @@ Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE -#include -#include -#include +#include -/**********************************************************************/ -/* Weaks for application/library use. +/* 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.so to - * libpthread.so. When an application doesn't use pthreads support, - * the locking functions used by libc itself basically become no-ops. - * However, if the application uses pthreads, then it will pull in - * libpthread.so whose symbols will override these weaks magically - * turning the internal libc mutex calls from no-ops to real locking - * calls. + * 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. */ -/* glibc itself defines all these, but we don't need them in uClibc - * - * 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. - */ - -static int __pthread_return_0 __P ((void)); +static int __pthread_return_0 (void); static int __pthread_return_0 (void) { return 0; } -/* -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_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) - -static int __pthread_return_1 __P ((void)); -static int __pthread_return_1 (void) { return 1; } - -weak_alias (__pthread_return_1, pthread_equal) - -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) -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ -weak_alias (__pthread_return_0, pthread_mutexattr_init) -weak_alias (__pthread_return_0, pthread_mutexattr_settype) -weak_alias (__pthread_return_0, pthread_mutexattr_destroy) -#endif - -/**********************************************************************/ -- cgit v1.2.3