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

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.

Could someone please comment what could it be?

Thanks in advance.

Regards,
Sergei Poselenov
-- 
Emcraft Systems - uClinux for Cortex-M MCUs | www.emcraft.com | [email protected]

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to