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