OK, got it fixed: --- a/libpthread/linuxthreads.old/libc_pthread_init.c +++ b/libpthread/linuxthreads.old/libc_pthread_init.c @@ -21,6 +21,7 @@ #include <locale.h> #include <stdlib.h> #include <string.h> +#include <errno.h> /* see comment in forward.c */ #define GCC_RENAME_BUG 1
Regards, Sergei On Вс., 2013-03-17 at 12:34 +0400, Sergei Poselenov wrote: > Hello all, > > Update, see below. > > On Пт., 2013-03-15 at 20:51 +0400, Sergei Poselenov wrote: > > Hello all, > > > > I was hit by a nasty bug in the 0.9.33.2. It shows itself as that in the > > thread context, > > any syscall ended with error always sets errno as zero. For the main() > > context, errno is set correctly. > > > > Configuration details: > > - Target is ARM Cortex-M3, uClibc builds as "make ARCH_CFLAGS= > > 'CPU_CFLAGS=-mthumb -march=armv7 -mfix-cortex-m3-ldrd'" > > - Toolchain - CodeSourcery arm-2010q1, arm-uclinuxeabi. > > - uClibc-0.9.33.2 with the following main configuration options defined: > > TARGET_arm > > TARGET_ARCH="arm" > > FORCE_OPTIONS_FOR_ARCH=y > > CONFIG_ARM_EABI=y > > COMPILE_IN_THUMB_MODE=y > > USE_BX=y > > LINUXTHREADS_OLD=y > > UCLIBC_HAS_THREADS=y > > PTHREADS_DEBUG_SUPPORT=y > > # ARCH_HAS_MMU is not set > The key factor is turned to be this: > ARCH_HAS_NO_SHARED=y > > It adds -DSTATIC=1 to CFLAGS. > > > > > It took me a while to notice that among (a lot of) others, compiler throwed > > out the warning: > > > > arm-uclinuxeabi-gcc -c libpthread/linuxthreads.old/libc_pthread_init.c ... > > > > In file included from ./include/errno.h:36, > > from ./include/bits/syscalls.h:31, > > from ./include/sys/syscall.h:34, > > from > > ./libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h:26, > > from libpthread/linuxthreads.old/internals.h:30, > > from libpthread/linuxthreads.old/libc_pthread_init.c:35: > > ./include/bits/errno.h:46: warning: asm declaration ignored due to conflict > > with previous rename > > > > It all boiled down to the following commit which breaks my uClibc: > > > > commit 6e97c25777a5da804fa5989c3ef8bebb1734b969 > > Author: Mike Frysinger <[email protected]> > > Date: Mon Jun 19 03:43:20 2006 +0000 > > > > use internal aliases for static objects as well > > > > diff --git a/include/libc-symbols.h b/include/libc-symbols.h > > index ef1e217..ec3696b 100644 > > --- a/include/libc-symbols.h > > +++ b/include/libc-symbols.h > > @@ -420,7 +420,7 @@ > > # define __hidden_proto_hiddenattr(attrs...) > > #endif > > > > -#if !defined STATIC && !defined __BCC__ > > +#if /*!defined STATIC &&*/ !defined __BCC__ > > # ifndef __ASSEMBLER__ > > # define hidden_proto(name, attrs...) __hidden_proto (name, __GI_##name, > > ##attrs) > > # define __hidden_proto(name, internal, attrs...) \ > > > > That was pretty long time ago for the bug to come unnoticed, so I guess > > something > > wrong on my side. > > > Well, now I think otherwise. The above hack broke off the linuxthreads > (linuxthreads.old at least) for ARCH_HAS_NO_SHARED. > > > Could someone please comment what could it be? > Yes, please. > > Regards, > Sergei > > > Thanks in advance. > > > > Regards, > > Sergei Poselenov > > _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
