
On Tue, Aug 17, 2004 at 05:54:56PM +0200, Rongjun Lu wrote:
when I compiled arm-boot with the toolchains from SNAPGEAR(arm-linux-tools-20031127), following errors occured:
arm-linux-ld -nostdlib -Bstatic -T board/samsung/armboot.lds -Ttext 0x0c170000 cpu/arm920t/start.o common/libcommon.a fs/jffs2/libjffs2.a net/libnet.a disk/libdisk.a board/samsung/libsamsung.a cpu/arm920t/libarm920t.a drivers/libdrivers.a common/libcommon.a //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a -Map armboot.map -o armboot arm-linux-ld: ERROR: //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivsi3.o) uses hardware FP, whereas armboot uses software FP File in wrong format: failed to merge target specific data of file //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivsi3.o) arm-linux-ld: ERROR: //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_umodsi3.o) uses hardware FP, whereas armboot uses software FP File in wrong format: failed to merge target specific data of file //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_umodsi3.o) arm-linux-ld: ERROR: //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_dvmd_lnx.o) uses hardware FP, whereas armboot uses software FP File in wrong format: failed to merge target specific data of file //home/lurj/board_tms5471/build-tools/usr/local/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_dvmd_lnx.o)
Your libgcc.a uses hardware floating point, whereas your u-boot (why is it called armboot here...?) uses software FP.
Software floating point is a bad construction site in gcc toolchains; you should use a toolchain which uses software FP by default. Dan Kegel's crosstool generates nice ones that are known to work.
Robert