coldfire and soft-float

Luigi 'Comio' Mantellini
Wed Jun 18 21:01:00 GMT 2008

On mer, 2008-06-18 at 18:02 +0300, Kai Ruottu wrote: 
> Luigi 'Comio' Mantellini wrote:
> > I'm trying to compile a gcc4.3 based toolchain for m68k/coldfire with
> > support for softfloat. I noticed that there isn't --with-float=soft
> > option to include the soft floating-point library.
> Stupid questions :
> - Does the Coldfire core really include a FPU in some of its models?

Yes. V4 cores include FPU (similar to m68k FPU). Anyway, the problem is
that in order to compile the linux kernel for m547x 2.6.23 (patched by
freescale), I need to use the soft float.

> - 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/ lib/ lib/
m68k-linux-uclibc-ld  -shared --warn-common --warn-once -z combreloc -z relro -z defs -s  -init __uClibc_init -o lib/  --whole-archive libc/libc_so.a --no-whole-archive ./lib/interp.os ./lib/ ./lib/uclibc_nonshared.a /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'
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'
libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
__psfs_do_numeric.c:(.text+0x4a2): undefined reference to `__truncdfsf2'
libc/libc_so.a(strtof.os): In function `strtof':
strtof.c:(.text+0x32): undefined reference to `__extendsfdf2'
libc/libc_so.a(__strtofpmax.os): In function `__strtofpmax':
__strtofpmax.c:(.text+0x100): undefined reference to `__adddf3'
make[5]: *** [lib/] Error 1
make[4]: *** [lib/] Error 2
make[4]: Leaving directory `/mnt/devel/openwrt/OpenWRT.git/build_dir/toolchain-m68k_gcc4.3.1/uClibc-0.9.29'
make[3]: *** [/mnt/devel/openwrt/OpenWRT.git/staging_dir/toolchain-m68k_gcc4.3.1/stamp/.uclibc_installed] Error 2
make[3]: Leaving directory `/mnt/devel/openwrt/OpenWRT.git/toolchain/uClibc'
make[2]: *** [toolchain/uClibc/compile] Error 2
make[2]: Leaving directory `/mnt/devel/openwrt/OpenWRT.git'
make[1]: *** [/mnt/devel/openwrt/OpenWRT.git/staging_dir/m68k/stamp/.toolchain_install] Error 2
make[1]: Leaving directory `/mnt/devel/openwrt/OpenWRT.git'
make: *** [world] Error 2

> When looking at the config stuff, it looks like the 'm68000', 'cpu32'
> and 'mcf' cores would always default to using '-msoft-float' !
> With opsyses it may be that the base soft-float routines will be in
> the base C library, not in the GCC helper library, 'libgcc'.  In some
> archs like x86 there are 'exceptions' or 'traps' which would route all
> the float ops into their handling routines in the opsys kernel...

Ok... understand.

> > How can I compile the gcc4.3 in order to include the soft-fp into the
> > libgcc.a library?
> Probably fully normally...
> > Now I have a compiler that accepts -msoft-float but no a library
> > support.
> The last stupid questions are :
> - what is your target?  The 'm68k/coldfire' is only the CPU type,
>    but there are still different opsyses (nothing, Linux, NetBSD,
>    OpenBSD, uClinux, RTEMS,...) to choose and different object
>    formats for the 'no opsys' case ('aout', 'coff', 'elf')...

my target is uclibc. I'm working undert OpenWRT building environment
(that is a fork of buildroot).

> - what you really wrote when configuring ?  Which extra options
>    for configure besides the bare '--target=$target' ?

I sent a bug report (that at this point I think that is wrong...) with
the complete invocation. I will send tomorrow the complete

Thanks a lot and sorry for my low knowledge on toolchains (and


     ______       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
Ind.  Dial Face   Email:   GPG fingerprint: 3DD1 7B71 FBDF 6376 1B4A
                                   B003 175F E979 907E 1650

More information about the Gcc-help mailing list