Hi,

matthieu castet a écrit :
Austin Foxley a écrit :
On 12/19/2009 04:39 PM, matthieu castet wrote:

Removing the libc_hidden_weak/libc_hidden_proto for __errno_location and
__h_errno_location make the things work. [1]


Is that normal ?

What arch are you on? What's your .config?

[1] there other issue. Work example a static link of [2], crash because _stdio_init is NULL, but because _stdio_init is HIDDEN, gcc remove the check.
making not hidden make it crash on _stdio_term that is also hidden.
I am missing something or uclibc git doesn't work at all ?


here a small test case :
$cat /tmp/test.c # define attribute_hidden __attribute__ ((visibility ("hidden")))
# define weak_function __attribute__ ((weak))

extern void weak_function _stdio_init(void) attribute_hidden;


int main()
{
       if (_stdio_init)
               _stdio_init();

       return 0;
}
$gcc /tmp/test.c -o /tmp/test  -fno-strict-aliasing -funsigned-char 
-fno-builtin -fno-asm -std=gnu99 -ffunction-sections -fdata-sections -m32 
-fno-stack-protector -nostdinc -Os -funit-at-a-time -fmerge-all-constants 
-fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce 
-fomit-frame-pointer -mpreferred-stack-boundary=4 -falign-functions=1 
-falign-jumps=1 -falign-labels=1 -falign-loops=1 -fPIC -fno-stack-protector -g
$/tmp/test
Segmentation fault

disassembling code :
0x08048394 <main+0>:    lea    0x4(%esp),%ecx
0x08048398 <main+4>:    and    $0xfffffff0,%esp
0x0804839b <main+7>:    pushl  -0x4(%ecx)
0x0804839e <main+10>:   push   %ebx
0x0804839f <main+11>:   push   %ecx
0x080483a0 <main+12>:   sub    $0x4,%esp
0x080483a3 <main+15>:   call   0x0
0x080483a8 <main+20>:   xor    %eax,%eax
0x080483aa <main+22>:   pop    %edx
0x080483ab <main+23>:   pop    %ecx
0x080483ac <main+24>:   pop    %ebx
0x080483ad <main+25>:   lea    -0x4(%ecx),%esp
0x080483b0 <main+28>:   ret
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to