arm/iwmmxt VFP errors during linking

Nick Nuziale nnuziale@hotmail.com
Tue Apr 12 13:27:00 GMT 2005


Hi Dimitry,

Thank you for your help.
See [NN] responses below...

>From: Dimitry Andric <dimitry@andric.com>
>To: "Nick Nuziale" <nnuziale@hotmail.com>
>CC: allanc@chickenandporn.com, crossgcc@sources.redhat.com
>Subject: Re: arm/iwmmxt VFP errors during linking
>Date: Mon, 11 Apr 2005 23:13:09 +0200
>
>On 2005-04-11 at 17:05:21 Nick Nuziale wrote:
>
> > /usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/ar
> > m-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/bin/ld:
> > ERROR: /cygdrive/c/cygwin/opt/nn/lib/libappbase-xscale-r.so uses VFP
> > instructions, whereas /cygdrive/c/tmp/nnuziale/build/blahblah does
> > not
>
>With which options did you compile blahblah?  Can you show us the
>(full) output of arm-iwmmxt-linux-gnu-gcc -v when you compile it?

[NN] - The problem occurs when linking several libraries together.  See 
below output containing -v.  I noticed that there seems to be some configure 
options listed twice.  I'm sure this occured because I added those options 
to the gcc extra config options used by crosstool which I guess already adds 
a lot of those options.  Does having the options twice matter??
I guess the main options you are interested in are the floating point 
related ones.  Do I have these set right??

arm-iwmmxt-linux-gnu-g++ -v 
-Wl,-rpath-link,/cygdrive/c/cygwin/opt/nn/lib:/cygdrive/c/cygwin/opt/other/lib 
-Wl,-rpath,/cygdrive/c/cygwin/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/arm-iwmmxt-linux-gnu/lib 
-o /cygdrive/c/tmp/nnuziale/build/blahblah 
/cygdrive/c/tmp/nnuziale/build/hostBase.o 
/cygdrive/c/tmp/nnuziale/build/hostInit.o   
/cygdrive/c/tmp/nnuziale/build/hostTndListener.o 
/cygdrive/c/tmp/nnuziale/build/hostLogging.o   
-L/cygdrive/c/cygwin/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/arm-iwmmxt-linux-gnu/lib 
-L/cygdrive/c/cygwin/opt/nn/lib -L/cygdrive/c/tmp/n
nuziale/build/ -lappbase-xscale-r -lrt
Reading specs from 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/specs
Configured with: 
/usr/crosstool-0.28-rc37/build/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/gcc-3.4.2/configure 
--target=arm-iwmmxt-linux-gnu --host=i686-host_pc-cygwin 
--prefix=/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3 
--enable-cross --enable-shared --enable-languages=c,c++ 
--enable-__cxa_atexit --enable-threads=posix --disable-multilib --wit
h-float=soft --with-cpu=iwmmxt --with-tune=iwmmxt --with-fpu=vfp 
--with-headers=/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/arm-iwmmxt-linux-gnu/include 
--with-local-prefix=/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2
.3.3/arm-iwmmxt-linux-gnu --disable-nls --enable-threads=posix 
--enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ 
--enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.2
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/libexec/gcc/arm-iwmmxt-linux-gnu/3.4.2/collect2.exe 
-dynamic-
linker /lib/ld-linux.so.2 -X -m armelf_linux -p -o 
/cygdrive/c/tmp/nnuziale/build/blahblah 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/lib/crt1.o 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/lib/crti.o 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/crtbegin.o 
-L/cygdrive/c/cygwin/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/arm-iwmmxt-linux-gnu/lib 
-L/cygdrive/c/cygwin/opt/nn/lib -L/cygdrive/c/tmp/nnuziale/build/ 
-L/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2 
-L/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/lib 
-rpath-link /cygdrive/c/cygwin/opt/nn/lib:/cygdrive/c/cygwin/opt/other/lib 
-rpath 
/cygdrive/c/cygwin/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/arm-iwmmxt-linux-gnu/lib 
/cygdrive/c/tmp/nnuziale/build/hostBase.o 
/cygdrive/c/tmp/nnuziale/build/hostInit.o  
/cygdrive/c/tmp/nnuziale/build/hostTndListener.o 
/cygdrive/c/tmp/nnuziale/build/hostLogging.o -lappbase-xscale-r -lrt 
-lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/crtend.o 
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-g
nu/3.4.2/../../../../arm-iwmmxt-linux-gnu/lib/crtn.o/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/bin/ld: 
warning: libstdc++.so.5, needed by 
/cygdrive/c/cygwin/opt/nn/lib/libappbase-xscale-r.so, not found (tr
y using -rpath or -rpath-link)
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/bin/ld: 
ERROR: /cygdrive/c/cygwin/opt/nn/lib/libappbase-xscale-r.so uses VFP 
instructions, whereas /cygdrive/c/tmp/nnuziale/build/blahblah does not
/usr/crosstool/arm-iwmmxt-linux-gnu/gcc-3.4.2-glibc-2.3.3/lib/gcc/arm-iwmmxt-linux-gnu/3.4.2/../../../../arm-iwmmxt-linux-gnu/bin/ld: 
failed to merge target specific data of file 
/cygdrive/c/cygwin/opt/nn/lib/libappbase-xscale-r.so
...

>
>
> > I have not applied the patch in Scott Merritt's posting yet, perhaps 
>this
> > will fix the VFP problems??
>
>Maybe, depending on your compile options.
[NN] - what are the correct options to use?

>
>
> > Also, another problem with the linking that I am having is that the 
>standard
> > C++ library needed by libappbase-xscale-r.so is "libstdc++.so.5" whereas 
>the
> > one built from the cross compiler I built is a different version (so.6 I
> > believe) which results in some errors upon linking as shown below.
>
>Your libappbase-xscale-r.so was probably built using gcc 3.3.x, which
>has libstdc++.so.5.  Since you don't have any source, you'll need to
>rebuild the programs you try to link against it with gcc-3.3.x.
>
>See also: http://gcc.gnu.org/onlinedocs/libstdc++/abi.html
><< attach3 >>

[NN] - Thank you.  That makes more sense to me now.  I thought the 
libappbase-xscale-r.so was using a more recent gcc version.  The list you 
sent out is great.  However this means I would now need build my cross 
compiler with gcc 3.3.3 and apply any necessary patches to get VFP working.  
I noticed that crosstool has the glibc patch needed 
(glibc-fp-byteorder.patch in glibc 2.3.2/3), however I guess I would I need 
a gcc-3.3.3-arm-softvfp.patch (I noticed you created the 
gcc-3.4.3-arm-softvfp.patch.bz2 and attached it in the mailing list).  
Dimitri, can you create this patch?
This patch would need to be applied after all the other gcc crosstool 
patches, correct?

-Nick

_________________________________________________________________
Take charge with a pop-up guard built on patented Microsoft® SmartScreen 
Technology. 
http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines 
  Start enjoying all the benefits of MSN® Premium right now and get the 
first two months FREE*.


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list