svn commit: trunk/uClibc: include libc/inet libc/inet/rpc libc/mis etc...

Bernhard Fischer rep.dot.nop at gmail.com
Tue May 20 18:52:05 UTC 2008


On Tue, May 20, 2008 at 08:40:19PM +0200, Denys Vlasenko wrote:

>I can reproduce it. In fact, there is a hint in libpthread/linuxthreads.old/forward.c
>that something is fishy here:
>
>#include <features.h>
>#include <stdlib.h>
>#include <dlfcn.h>
>
>/* psm: keep this before internals.h */  <==============
>libc_hidden_proto(exit)
>
>#include "internals.h"
>...
>
>psm noticed that doing libc_hidden_proto(exit) AFTER #include "internals.h"
>produces a warning, and commented about it. But he either didn't look into "why?"
>or he didn't describe it in comments. Bad boy psm, bad ;) [joking]
>
>The same thing bites here, just with libc_hidden_proto(memcpy) etc. instead.
>it happens inside internals.h when it includes string.h.
>I killed 20 minutes finding out "why?".
>It happens quite deep in include tree.
>
>I took unmodified tree (prior to rev 22012) and played with
>adding just libc_hidden_proto(memcpy).
>In libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h
>adding #include <string.h> and libc_hidden_proto(memcpy)
>just before weak_extern (__pthread_initialize) will not warn:
>
>//warns? no
>//#include <string.h>
>//libc_hidden_proto(memcpy)
>weak_extern (__pthread_initialize)
>//warns? yes
>//#include <string.h>
>//libc_hidden_proto(memcpy)
>
>but adding after it will! Which is extremely strange -
>weak_extern expands into just "#pragma weak __pthread_initialize"
>
>These are exact gcc commands which are used to generate forward.oS:
>
>gcc -E libpthread/linuxthreads.old/forward.c -o forward.i.c -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -fno-strict-aliasing -Wnested-externs -Wshadow -Wmissing-noreturn -Wmissing-format-attribute -Wformat=2 -Wmissing-prototypes -Wmissing-declarations -Wnonnull -Wundef -ffunction-sections -fdata-sections -m32 -march=i486 -fstack-protector -fno-builtin -nostdinc -I./include -I. -I./libc/sysdeps/linux/i386 -DUCLIBC_INTERNAL -std=gnu99 -Os -funit-at-a-time -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -fomit-frame-pointer -mpreferred-stack-boundary=2 -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux/i386 -I./libpthread/linuxthreads.old/sysdeps/i386 -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux -I./libpthread/linuxthreads.old/sysdeps/pthread -I./libpthread/linuxthreads.old -I./libpthread -I/usr/srcdevel/uclibc/include_2.6.18.1/include/ -iwithprefix include-fixed -iwithprefix include -DMALLOC_DEBUGGING -DHEAP_DEBUGGING -fPIC -DSHARED -fstack-protector-all
>gcc -c forward.i.c -o forward.i.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -fno-strict-aliasing -Wnested-externs -Wshadow -Wmissing-noreturn -Wmissing-format-attribute -Wformat=2 -Wmissing-prototypes -Wmissing-declarations -Wnonnull -Wundef -ffunction-sections -fdata-sections -m32 -march=i486 -fstack-protector -fno-builtin -nostdinc -I./include -I. -I./libc/sysdeps/linux/i386 -DUCLIBC_INTERNAL -std=gnu99 -Os -funit-at-a-time -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -fomit-frame-pointer -mpreferred-stack-boundary=2 -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux/i386 -I./libpthread/linuxthreads.old/sysdeps/i386 -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux -I./libpthread/linuxthreads.old/sysdeps/pthread -I./libpthread/linuxthreads.old -I./libpthread -I/usr/srcdevel/uclibc/include_2.6.18.1/include/ -iwithprefix include-fixed -iwithprefix include -DMALLOC_DEBUGGING -DHEAP_DEBUGGING -fPIC -DSHARED -fstack-protector-all
>
>Can you confirm my observation by adding #include <string.h>
>and libc_hidden_proto(memcpy) after weak_extern (__pthread_initialize)
>and running above two commands?
>
>Also note: if you will run first command, then comment out this line
>in forward.i.c:
>
>//#pragma weak __pthread_initialize
>
>which should change nothing - __pthread_initialize is not mentined anywhere else
>in forward.i.c - and run the second command - it will NOT warn!
>
>Looks like gcc bug to me.

hmz. I'll try to reproduce this sometimes in the next days. Do you have
a small standalone testcase that exposes this alleged bug that you could
put into the gcc bugzilla, by chance?

>
>P.S. I am getting tons of warnings like this:

I've fixed those earlier today, please svn up and holler if you still
get alot of them (a *few* undefined tokens are expected, ATM)
> CC libpthread/linuxthreads.old/spinlock.o
>In file included from ./libpthread/linuxthreads.old/sysdeps/i386/tls.h:23,
>                 from ./include/bits/uClibc_errno.h:14,
>                 from ./include/errno.h:62,
>                 from libpthread/linuxthreads.old/spinlock.c:19:
>./libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h:76:5: warning: "__ASSUME_LDT_WORKS" is not defined
>In file included from libpthread/linuxthreads.old/internals.h:22,
>                 from libpthread/linuxthreads.old/spinlock.c:25:
>./libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h:40:5: warning: "USE_TLS" is not defined
>
>(.config is attached)
>
>and also forward.oS is not automatically rebuilt by make
>if I touch it. I need to delete it and lib/* to make it work.
>Build system is broken.

Can you apply your other proposal (that lives next to the existing one so
we can start playing with it)? TIA!




More information about the uClibc mailing list