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