SOURCES: linux-2.6-gfs-noswitch64.patch (NEW) - (sparc32, ppc) don'...

Jakub Bogusz qboosh w pld-linux.org
Sob, 10 Lip 2004, 23:04:19 CEST


On Sat, Jul 10, 2004 at 10:51:12PM +0200, Paweł Sikora wrote:
> On Saturday 10 of July 2004 21:38, qboosh wrote:
> > Author: qboosh                       Date: Sat Jul 10 19:38:47 2004 GMT
> > Module: SOURCES                       Tag: HEAD
> > ---- Log message:
> > - (sparc32,ppc) don't use switch on 64-bit value,
> > gcc uses __ucmpdi2() to do it
> 
> # man gcc
> 
>  -ffreestanding
> 
>    Assert that compilation takes place in a freestanding environment.
>    This implies -fno-builtin.  A freestanding environment is one in
>    which the standard library may not exist, and program startup may
>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    not necessarily be at "main".  The most obvious example is an OS
>    kernel.  This is equivalent to -fno-hosted.

Tylko że "standard library" dla języka C to libc.
__ucmpdi2() nie jest w libc, tylko w libgcc - bibliotece wspomagającej
dla kompilatora, zwykle linkowanej statycznie.

> $ objdump -T /lib/libgcc_s.so|grep __uc
> 0000181c g    DF .text  00000038  GCC_3.0     __ucmpdi2
> 
> $ ldd /lib/libgcc_s.so
>         libc.so.6 => /lib/libc.so.6 (0x70028000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x08000000)

libgcc.a - z wyjątkiem bibliotek dzielonych, nie wszystkich zresztą.

> ja bym to zglosil jako bug, bo nie jest mozliwe odpalenie
> takiego programu bez libc, a opcja -ffreestanding ma to gwarantowac.

Przy statycznym libgcc jest możliwe.

> niech gcc rozwija to inline, albo zglasza blad/ostrzezenie,
> ze nie moze takiej operacji zrealizowac na danej platformie.
> to co robi teraz, to obraz glupoty.

Niestety opcji typu no-libgcc czy inline-libgcc AFAIK nie ma.
Można zgłosić jako "enhancement request".


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/




Więcej informacji o liście dyskusyjnej pld-devel-pl