This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

How to build libgcc with ARM, MULTILIB and soft-float?





Hi!
I want to build GCC for ARM target and compile libgcc with thumb-interwork,
big-endian and soft-float for both arm and thumb versions.
After browsing Internet (thank you all) I enable options in configuration
file t-arm-elf, hoping for multilib to build my desired combination.

But my simple float-test application does not link. It looks like the
msoft-float option is forgotten in the multilib configurations where the
mhard-float is not included???
Is the multilib logic assuming soft-float as default (which it is not) or
am I doing something wrong?

If I build the complete GCC with configuration option "--with-float=soft",
the linker is not complaining when compiling my application, but what does
all my multilibs contain? Are all soft-float?

My question is:
Can I build libgcc with soft-float in a multilib combination?

Building with:
Binutils 2.16.1
GCC     4.0.1
Newlib 1.13.0

Changes made in t-arm-elf:
---------
MULTILIB_OPTIONS     = marm/mthumb
MULTILIB_DIRNAMES    = arm thumb

MULTILIB_OPTIONS     += mlittle-endian/mbig-endian
MULTILIB_DIRNAMES    += le be
MULTILIB_MATCHES     += mbig-endian=mbe mlittle-endian=mle

MULTILIB_OPTIONS    += msoft-float/mhard-float
MULTILIB_DIRNAMES   += soft fpu
MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*

MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
MULTILIB_DIRNAMES   += normal interwork
---------


Building GCC with these options:
---------
export TARGET=arm-elf
export PREFIX=/usr/gcc-arm
export CFLAGS="-s -O3"

../gcc-4.0.1/configure --target=$TARGET --prefix=$PREFIX \
                       --with-newlib --with-gnu-as --with-gnu-ld \
                       --with-local-prefix=${PREFIX}/${TARGET}
--disable-shared \
                       --disable-nls --disable-win32-registry
--enable-interwork \
                       --enable-multilib --enable-languages="c,c++,f95"
--with-cpu=arm7tdmi \
                       --with-headers=../gcc-4.0.1/gcc/newlib/libc/include
make all-gcc install-gcc
---------

Checking build:
---------
$ /cygdrive/c/cygwin/usr/gcc-arm/bin/arm-elf-gcc.exe -print-multi-lib
.;
thumb;@mthumb
be;@mbig-endian
fpu;@mhard-float
interwork;@mthumb-interwork
fpu/interwork;@mhard-float@mthumb-interwork
be/fpu;@mbig-endian@mhard-float
be/interwork;@mbig-endian@mthumb-interwork
be/fpu/interwork;@mbig-endian@mhard-float@mthumb-interwork
thumb/be;@mthumb@mbig-endian
thumb/interwork;@mthumb@mthumb-interwork
thumb/be/interwork;@mthumb@mbig-endian@mthumb-interwork
---------

Compiling my application ("plus") with these arm-related flags:
---------
ARM_FLAGS := -march=armv4t -mcpu=arm7tdmi -gdwarf-2 -mapcs-frame
-mthumb-interwork -msoft-float -mbig-endian
---------

Linker error:
---------
/usr/gcc-arm/lib/gcc/arm-elf/4.0.1/../../../../arm-elf/bin/ld: ERROR:
/usr/gcc-arm/lib/gcc/arm-elf/4.0.1/be/interwork/libgcc.a(_addsubsf3.o) uses
hardware FP, whereas plus.elf uses software FP
---------

When adding configuration option "--with-float=soft" to the GCC build, the
linker is not complaining when linking the application...
---------
../gcc-4.0.1/configure --target=$TARGET --prefix=$PREFIX \
                       --with-newlib --with-gnu-as --with-gnu-ld \
                       --with-local-prefix=${PREFIX}/${TARGET}
--disable-shared \
                       --disable-nls --disable-win32-registry
--enable-interwork \
                       --enable-multilib --enable-languages="c,c++,f95"
--with-cpu=arm7tdmi \
                       --with-headers=../gcc-4.0.1/gcc/newlib/libc/include
\
                       --with-float=soft
---------

But what does my be/fpu libraries contain? Soft-float or hardware FP?


OLA BILLSTEIN / Senior R&D Engineer


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]