Kay, Thanks for your support. this is the config.gcc (part of): ... m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux # with uClibc, using the new GNU/Linux-style # ABI. default_m68k_cpu=68020 default_cf_cpu=5206 tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h" tm_defines="${tm_defines} MOTOROLA=1 UCLIBC_DEFAULT=1" extra_options="${extra_options} linux.opt" tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs" use_fixproto=no ;; m68k-*-linux*) # Motorola m68k's running GNU/Linux # with ELF format using glibc 2 # aka the GNU/Linux C library 6. default_m68k_cpu=68020 default_cf_cpu=5475 tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h m68k/linux.h" extra_options="${extra_options} m68k/ieee.opt" tm_defines="${tm_defines} MOTOROLA=1" # if not configured with --enable-sjlj-exceptions, bump the # libgcc version number if test x$sjlj != x1; then tmake_file="$tmake_file m68k/t-slibgcc-elf-ver" fi ;; ... The target m68k-*-linux* doesn't set any tmake_file... I think that the following should be added : tmake_file="m68k/t-floatlib m68k/t-mlibs m68k/t-m68kbare" Thanks luigi On gio, 2008-06-19 at 01:41 +0300, Kai Ruottu wrote: > Luigi 'Comio' Mantellini wrote: > > >> - If it doesn't, why you think that the default for Coldfire isn't > >> using the '-msoft-float' and including the base soft-float routines > >> into the 'libgcc' ? > >> > > I'm confused.. this the error: > > > > rm -f lib/libc.so lib/libc.so.0 lib/libuClibc-0.9.29.so > > m68k-linux-uclibc-ld -shared --warn-common --warn-once > > > /mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1/lib/gcc/m68k-linux-uclibc/4.3.1/libgcc.a > > > libc/libc_so.a(difftime.os): In function `difftime': > > difftime.c:(.text+0xe): undefined reference to `__floatsidf' > > difftime.c:(.text+0x2a): undefined reference to `__subdf3' > > Maybe there is some bug with Linux versus uClinux things. Linux uses > glibc and at least in the PPC case this has those soft-float routines. > Linux-uClibc uses uClibc and maybe this hasn't those routines but the > 'libgcc.a' should have them... > > In any case the first step would be to compare the config templates > for 'm68k-linux-gnu' and 'm68k-linux-uclibc' in 'gcc/config.gcc' and > see whether the latter has the 'm68k/t-softfp' or something like that > 'target makefile fragment' added to the 'linux-uclibc' one... They may > differ in other things too but for this problem those target makefile > fragments ('t-files') in 'gcc/config/m68k' would be the key. I haven't > the gcc-4.3.1 sources available for looking just now so I cannot look > what the proper 't-file' was. Basically between these two Linux > variations there shouldn't be very much differences. > > In any case it would be useful to learn the GCC config chain from the > target template in 'gcc/config.gcc' to those config files in the > 'gcc/config/<CPU>' and see what the problem could be. In this case I > would expect the target template requiring 'case handling' for the > different 'm68k' (m68020/m68881) and 'mcf' (Coldfire) CPU cases, the > latter adding the required soft-float routines into the resulting > 'libgcc.a' via the proper 'tmake-file' addition... The Linux/m68k > configuration probably expects a m68881/m68882 FPU always being on > the target system. > > > libc/libc_so.a(_fpmaxtostr.os): In function `_fpmaxtostr': > > _fpmaxtostr.c:(.text+0x8a): undefined reference to `__nedf2' > > _fpmaxtostr.c:(.text+0x18c): undefined reference to `__eqdf2' > > _fpmaxtostr.c:(.text+0x1aa): undefined reference to `__divdf3' > > _fpmaxtostr.c:(.text+0x1be): undefined reference to `__ltdf2' > > _fpmaxtostr.c:(.text+0x212): undefined reference to `__floatunsidf' > > _fpmaxtostr.c:(.text+0x238): undefined reference to `__muldf3' > > _fpmaxtostr.c:(.text+0x656): undefined reference to `__gedf2' > > Checking that the : > > ...../lib/gcc/m68k-linux-uclibc/4.3.1/libgcc.a > > really hasn't these symbols in it, using the 'm68k-linux-uclibc-nm' > for it, would though be the first task. Compiling those 'm68k/float.c' > etc things should add them... > Industrie Dial Face S.p.A. Luigi Mantellini R&D - Software Industrie Dial Face S.p.A. Via Canzo, 4 20068 Peschiera Borromeo (MI), Italy Tel.: +39 02 5167 2813 Fax: +39 02 5167 2459 E-mail: luigi.mantellini@xxxxxxxxxxx GPG fingerprint: 3DD1 7B71 FBDF 6376 1B4A B003 175F E979 907E 1650