This is the mail archive of the crossgcc@sources.redhat.com 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] |
I'm trying to configure an arm-elf toolchain for AT91 (using the EB40a evaluation board). Hopefully I'm at the last obstacle: I've configured and compiled the compiler/newlib with the scripts below, but when I try to link an example application, I get a linker error since libgcc.a is hard floating point and my code is soft-floating point. I tried to modify gcc/config/t-arm-elf to compile a permutation of libgcc.a with and without hardware floating point, but to no avail. t-arm-elf is modified to produce the interwork/thumb permutations. My latest attempt was to configure gcc + newlib w/--nfp Output from linking problems: arm-elf-ld -Map thumb/lst/led_swing_remote.map -N -v -T ../../../targets/eb40a/l dscript_remote thumb/cstartup_remote.o thumb/wait_irq.o thumb/led_swing.o thumb /gcc_main.o ../../../drivers/lib_drv/thumb/lib_drv_thumb.a ../../../parts/r40008 /thumb/r40008_thumb.a /cygdrive/c/arm-elf/arm-elf/lib/thumb/interwork/libc.a /c ygdrive/c/arm-elf/lib/gcc-lib/arm-elf/3.3/thumb/interwork/libgcc.a -o thumb/led_ swing_remote.elf GNU ld version 2.13.1 arm-elf-ld: ERROR: /cygdrive/c/arm-elf/lib/gcc-lib/arm-elf/3.3/thumb/interwork/l ibgcc.a(_udivsi3.o) uses hardware FP, whereas thumb/led_swing_remote.elf uses so ftware FP File format not recognized: failed to merge target specific data of file /cygdri ve/c/arm-elf/lib/gcc-lib/arm-elf/3.3/thumb/interwork/libgcc.a(_udivsi3.o) arm-elf-ld: ERROR: /cygdrive/c/arm-elf/lib/gcc-lib/arm-elf/3.3/thumb/interwork/l ibgcc.a(_dvmd_tls.o) uses hardware FP, whereas thumb/led_swing_remote.elf uses s oftware FP File format not recognized: failed to merge target specific data of file /cygdri ve/c/arm-elf/lib/gcc-lib/arm-elf/3.3/thumb/interwork/libgcc.a(_dvmd_tls.o) make: *** [thumb/led_swing_remote.elf] Error 1 My scripts(I'm using CygWin, but I don't know if thats relevant): # this script sets up the compiler and library before # compiling the compilers. # # # Note. the arm-elf configure files must manually be # modified tos et the MULTILIB_OPTIONS to generate # the interwork library permutations # Make directories where we do the build. mkdir build-binutils mkdir build-gcc-bare mkdir build-gcc mkdir build-newlib mkdir build-gdb mkdir install export TARGET=arm-elf export PREFIX=`pwd`/install export PATH=$PATH:$PREFIX/bin export NEWLIBPATH=`pwd`/../gcc33/newlib-1.11.0 export BINUTILSPATH=`pwd`/../arm/binutils-2.13.1 export GCCSRC=`pwd`/../gcc33 # we need the object file format tools for arm-elf cd build-binutils $BINUTILSPATH/configure --enable-interwork --target=$TARGET --prefix=$PREFIX make all 2>&1 | tee ../binutils-make.log make install 2>&1 | tee ../binutils-install.log cd .. # for some reason we need to build and install the runtime # libraries before we compile the real compiler cd build-gcc-bare $GCCSRC/gcc/configure --enable-multilib --enable-interwork --target=$TARGET --prefix=$PREFIX --with-headers=$NEWLIBPATH/newlib/libc/include --with-gnu-as --with-gnu-ld --disable-shared --enable-languages=c --nfp make all-gcc 2>&1 | tee ../gcc-bare-make.log make install-gcc 2>&1 | tee ../gcc-bare-install.log cd .. cd build-newlib $NEWLIBPATH/configure --nfp --enable-multilib --target=$TARGET --prefix=$PREFIX make all install 2>&1 | tee ../newlib.log cd .. # Make directories where we do the build. export TARGET=arm-elf export PREFIX=`pwd`/install export PATH=$PATH:$PREFIX/bin export NEWLIBPATH=`pwd`/../gcc33/newlib-1.11.0 export GCCSRC=`pwd`/../gcc33 # Finally we compile our compiler cd build-gcc #disable-nls #disable-jvmpi #disable-libffi #disable-interpreter #disable-getenv-properties $GCCSRC/gcc/configure --disable-libffi --disable-nls --disable-jvmpi --disable-getenv-properties --disable-interpreter --without-x --disable-java-awt --target=$TARGET --prefix=$PREFIX --with-gnu-as --with-gnu-ld --with-newlib=yes --with-headers=$NEWLIBPATH/newlib/libc/include --enable-languages=c,c++ --enable-interwork --enable-multilib --nfp make all 2>&1 | tee ../gcc-make.log make install 2>&1 | tee ../gcc-install.log cd .. echo Done! modified t-arm-elf: LIB1ASMSRC = arm/lib1funcs.asm LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX # We want fine grained libraries, so use the new code to build the # floating point emulation libraries. FPBIT = fp-bit.c DPBIT = dp-bit.c fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT' > fp-bit.c echo '#ifndef __ARMEB__' >> fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c echo '#endif' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c dp-bit.c: $(srcdir)/config/fp-bit.c echo '#ifndef __ARMEB__' > dp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c echo '#endif' >> dp-bit.c cat $(srcdir)/config/fp-bit.c >> dp-bit.c MULTILIB_OPTIONS = marm/mthumb MULTILIB_DIRNAMES = arm thumb MULTILIB_EXCEPTIONS = # MULTILIB_OPTIONS += mlittle-endian/mbig-endian # MULTILIB_DIRNAMES += le be # MULTILIB_EXCEPTIONS = # MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle # #MULTILIB_OPTIONS += mhard-float/msoft-float #MULTILIB_DIRNAMES += fpu soft #MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* # # MULTILIB_OPTIONS += mapcs-32/mapcs-26 # MULTILIB_DIRNAMES += 32bit 26bit # MULTILIB_EXCEPTIONS += *mthumb/*mapcs-26* # MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork MULTILIB_DIRNAMES += normal interwork MULTILIB_EXCEPTIONS += *mapcs-26/*mthumb-interwork* #MUTLILIB_EXTRA_OPTS = msoft-float # # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore # MULTILIB_DIRNAMES += elf under # # MULTILIB_OPTIONS += mcpu=arm7 # MULTILIB_DIRNAMES += nofmult # MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=arm7* # # Note: the multilib_exceptions matches both -mthumb and # # -mthumb-interwork # # # # We have to match all the arm cpu variants which do not have the # # multiply instruction and treat them as if the user had specified # # -mcpu=arm7. Note that in the following the ? is interpreted as # # an = for the purposes of matching command line options. # # FIXME: There ought to be a better way to do this. # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7d # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7di # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm70 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700i # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710c # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7100 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500fe # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm6 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm60 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm600 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620 EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o # If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here # EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib # Currently there is a bug somewhere in GCC's alias analysis # or scheduling code that is breaking _fpmul_parts in fp-bit.c. # Disabling function inlining is a workaround for this problem. TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline # Assemble startup files. $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm $(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm ------ 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] |