Build for ARM 926T fails if option software floating point is enabled

David Daney ddaney at avtrex.com
Fri Sep 7 23:13:45 UTC 2007


Pranav Sanghadia wrote:
> Hello Guys,
> 
> I am new to embedded Linux, trying to build cross platform tools for ARM 
> 920t. I got following error message when option "software floating 
> point" is enabled. I found this issue reported as bug but do not see 
> clear solution. Can some one please help me?
> 
> gcc version 4.1.1 20060724 (prerelease) (4.1.1-3mdk)
> uClibc - Latest verson
> binutils - 2.16.91
> 
> 
> 
> STRIP -x -R .note -R .comment lib/uclibc_nonshared.a
>   AR cr lib/uclibc_nonshared.a
>   AR cr libc/libc_so.a
>   LD libuClibc-0.9.29.so <http://libuClibc-0.9.29.so>
> libc/libc_so.a(difftime.os): In function `difftime':
> difftime.c:(.text+0x8): undefined reference to `__floatsidf'
> difftime.c:(.text+0x2c): undefined reference to `__subdf3'
> libc/libc_so.a(_fpmaxtostr.os): In function `_fpmaxtostr':
> _fpmaxtostr.c:(.text+0xe0): undefined reference to `__nedf2'
> _fpmaxtostr.c:(.text+0x104): undefined reference to `__eqdf2'
> _fpmaxtostr.c:(.text+0x120): undefined reference to `__divdf3'
> _fpmaxtostr.c:(.text+0x12c): undefined reference to `__ltdf2'
> _fpmaxtostr.c:(.text+0x1e0): undefined reference to `__muldf3'
> _fpmaxtostr.c:(.text+0x394): undefined reference to `__gedf2'
> _fpmaxtostr.c:(.text+0x424): undefined reference to `__floatunsidf'
> libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
> __psfs_do_numeric.c:(.text+0x548): undefined reference to `__truncdfsf2'
> libc/libc_so.a(strtof.os): In function `strtof':
> strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2'
> libc/libc_so.a(__strtofpmax.os): In function `__strtofpmax':
> __strtofpmax.c:(.text+0x158): undefined reference to `__adddf3'
> /usr/local/buildroot/build_arm/staging_dir/usr/lib/gcc/arm-linux-uclibc/4.2.1/libgcc.a(_fixunsdfsi.o): 
> In function `__fixunsdfsi':
> libgcc2.c:(.text+0x34): undefined reference to `__fixdfsi'
> make[2]: *** [lib/libc.so] Error 1
> make[1]: *** [lib/libc.so.0] Error 2
> make[1]: Leaving directory 
> `/usr/local/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.29'
> make: *** 
> [/usr/local/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.29/lib/libc.a] 
> Error 2

You need to show the link command line, probably by passing V=1 to make.

The missing functions are normally in libgcc.  Did you configure your 
toolchain for soft-float?  If not, your libgcc may be missing the 
floating point emulator (but I am no 100% certain of this).

David Daney



More information about the uClibc mailing list