On Wed, Apr 14, 2010 at 7:58 PM, Timo Teras <[email protected]> wrote: > > commit: > http://git.uclibc.org/uClibc/commit/?id=0eadd98d30c51d26fde4062e6b8c48f3c9b5148d > branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/nptl > > It is not possible to override for libpthread to override > the weak libc definitions. This has never worked in uclibc, and > does no longer work in glibc either (unless you use LD_DYNAMIC_WEAK). > > The proper thing to do is have weak prototypes in libc, and > definitions in libpthread only. This way libc runs even if > those functions are not defined, but just needs to protect > against the NULL values (done by implementing __uclibc_maybe_call). > > This fix the problems if libc is linked before libpthread or > if libpthread is pulled by a dependency library. > > Signed-off-by: Timo Teras <[email protected]> > Signed-off-by: Austin Foxley <[email protected]> > --- > libc/misc/dirent/opendir.c | 2 +-
commit 0eadd98d30c51d26fde4062e6b8c48f3c9b5148d Author: Timo Teras <[email protected]> Date: Fri Apr 16 16:29:46 2010 +0300 libc: remove libc weak __pthreads_* wrappers It is not possible to override for libpthread to override the weak libc definitions. This has never worked in uclibc, and does no longer work in glibc either (unless you use LD_DYNAMIC_WEAK). The proper thing to do is have weak prototypes in libc, and definitions in libpthread only. This way libc runs even if those functions are not defined, but just needs to protect against the NULL values (done by implementing __uclibc_maybe_call). This fix the problems if libc is linked before libpthread or if libpthread is pulled by a dependency library. Signed-off-by: Timo Teras <[email protected]> Signed-off-by: Austin Foxley <[email protected]> diff --git a/libc/misc/dirent/opendir.c b/libc/misc/dirent/opendir.c index 4a23ab0..66a5cc9 100644 --- a/libc/misc/dirent/opendir.c +++ b/libc/misc/dirent/opendir.c @@ -35,7 +35,7 @@ static DIR *fd_to_DIR(int fd, __blksize_t size) free(ptr); return NULL; } - __pthread_mutex_init(&ptr->dd_lock, NULL); + __UCLIBC_MUTEX_INIT_VAR(ptr->dd_lock); return ptr; } i386 build failure (.config attached): $ make ... CC libc/misc/dirent/opendir.o libc/misc/dirent/opendir.c: In function 'fd_to_DIR': libc/misc/dirent/opendir.c:38: warning: implicit declaration of function '__UCLIBC_MUTEX_INIT_VAR' libc/misc/dirent/opendir.c:38: error: 'DIR' has no member named 'dd_lock' libc/misc/dirent/opendir.c: In function 'opendir': libc/misc/dirent/opendir.c:106: warning: implicit declaration of function '__fcntl_nocancel' -- vda
.config
Description: Binary data
_______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
