Chyba zepuste uClibc na TH - lvm2 i device-mapper
Paweł Sikora
pluto w agmk.net
Pon, 4 Cze 2007, 08:41:35 CEST
Jakub Bogusz pisze:
> On Mon, Jun 04, 2007 at 07:20:20AM +0200, Paweł Sikora wrote:
>> On Sunday 03 of June 2007 22:35:43 Jakub Bogusz wrote:
>>
>>> if (likely(_stdio_init != NULL))
>>> _stdio_init();
>>>
>>> ten warunek jakoś się optymalizuje do true, przez co bezwarunkowo
>>> wywołuje _stdio_init(),
>> the address of ???_stdio_init??? will always evaluate as ???true???.
>
> Co tak pisze? Bo nie gcc 4.1.2 ani 4.2.0 przy kompilacji uClibc.
> -Wall jest w użyciu.
$ cat t.c
extern void _stdio_init(void) __attribute__((visibility("hidden")));
int main()
{
if ( _stdio_init )
_stdio_init();
}
$ gcc -Wall t.c -c
t.c: In function 'main':
t.c:4: warning: the address of '_stdio_init' will always evaluate as 'true'
t.c:6: warning: control reaches end of non-void function
gcc-4.2.0-5.x86_64
> Bez __attribute__((weak)) dla _stdio_init() by miał do tego prawo (choć
> też nie zgłasza, optymalizuje po cichu).
ja tam widze, tylko hidden:
include/bits/uClibc_stdio.h:
extern void _stdio_init(void) attribute_hidden;
Więcej informacji o liście dyskusyjnej pld-devel-pl