Subject: Re: borken state of quad/soft float on sparc64
To: Martin Husemann <martin@duskware.de>
From: James Chacon <jchacon@genuity.net>
List: tech-toolchain
Date: 02/04/2002 10:04:07
This is actually due to the --whole-archive that perl is using which it
really doesn't need anymore and should be fixed.

I can provide you stub routines for the _Qp* stuff today. Just anything which
tries to call them with the current compiler will break (which is what I'm 
still working on).

Backing out the -msoft-quad on libgcc will break almost anything which uses
floating point in some way. Thats the whole reason awk/etc weren't working
before so simply going back to that point isn't a good solution either.

I'll check in the Qp stubs later so at least things link (the parts of libgcc
that call this stuff are very rarely touched but I'll test perl with it).

James

>
>I'm not trying to push anything or anyone, just like to ask for short term
>band aid:
>
>As some probably remember for example perl can not be build on sparc64 right
>now because some libgcc support routines are not available. IIRC the reason
>preventing the addition of this functions is a broken call sequence generated
>by gcc.
>
>Well, this used to work with not integrated toolchain, so could we please,
>while still in the longterm look for a proper fix, just for now restore
>some kind of working behaviour?
>
>Not being able to build perl makes something like 90% of pkgsrc unuseable.
>
>I myself am glad I kept an old working perl binary around ;-)
>
>Martin
>
>P.S.: example from the final steps before building perl fails:
>
>cc -c  -DDEBUGGING -fno-strict-aliasing -I/usr/pkg/include -DDLOPEN_WONT_DO_RELA              TIVE_PATHS -O -pipe -g -msoft-quad-float -O2    -DVERSION=\"1.04\"  -DXS_VERSION              =\"1.04\"  -I../.. -DPERL_CORE -DLIBC="/usr/lib/libc.so" DynaLoader.c
>rm -rf ../../lib/auto/DynaLoader/DynaLoader.a
>/usr/bin/ar cr ../../lib/auto/DynaLoader/DynaLoader.a DynaLoader.o && : ../../li              b/auto/DynaLoader/DynaLoader.a
>chmod 755 ../../lib/auto/DynaLoader/DynaLoader.a
>LD_LIBRARY_PATH=/usr/pkgsrc/lang/perl5/work.sparc64/perl-5.6.1 cc -o perl -Wl,-R              /usr/pkg/lib  -L/usr/pkg/lib -Wl,-whole-archive -lgcc -Wl,-no-whole-archive                                   -Wl,-E -Wl,-R/usr/pkg/lib  -Wl,-R/usr/pkg/lib/perl5/5.6.1/sparc6              4-netbsd/CORE perlmain.o lib/auto/DynaLoader/DynaLoader.a  -L. -lperl `cat ext.l              ibs` -lm -lcrypt
>/usr/lib/libgcc.a(_fixtfdi.o): In function `__fixtfdi':
>_fixtfdi.o(.text+0x14): undefined reference to `_Qp_flt'
>/usr/lib/libgcc.a(_fixunstfdi.o): In function `__fixunstfdi':
>_fixunstfdi.o(.text+0x14): undefined reference to `_Qp_flt'
>...
>...
>
>
>
>