git : errno and thread weirdness

matthieu castet castet.matthieu at free.fr
Sun Dec 20 00:39:21 UTC 2009


Hi,

when building git master branch with libpthread.old and I got very weird behavior with errno :

- static link with thread crash in __uClibc_main. This seems to be due to the libc_hidden_proto, that make think gcc the "if (likely(__h_errno_location!=NULL))" is always true, but for an unknown reason it is false. Also the libpthread can't override the hidden symbol
- dynamic link with thread produce a mix of call to weak errno_location and libthread errno_location. Again this this because libpthread can't override the hidden symbol


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


Is that normal ?

Thanks

Matthieu


[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 ?



[2]
int main(){
return 0;
}


More information about the uClibc mailing list