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