buildroot fails for ARM w/ gcc 4.1 and soft float

Lance Spaulding lsjunk1 at cableone.net
Thu May 11 20:19:29 UTC 2006


Hi Nitin,

Thanks for the reply but I'm not sure where these values are defined.  I 
just tried building again for a generic  litttle-endian ARM with 
software floating point and ran into the same problems.  If I use a 
nightly snapshot and try to build gcc 4.1, I get the following errors:

  STRIP -x -R .note -R .comment lib/libc.a
  AR cr lib/libc.a
  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.28.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+0xd4): undefined reference to `__nedf2'
_fpmaxtostr.c:(.text+0xf8): undefined reference to `__eqdf2'
_fpmaxtostr.c:(.text+0x114): undefined reference to `__divdf3'
_fpmaxtostr.c:(.text+0x120): undefined reference to `__ltdf2'
_fpmaxtostr.c:(.text+0x1d0): undefined reference to `__muldf3'
_fpmaxtostr.c:(.text+0x394): undefined reference to `__gedf2'
_fpmaxtostr.c:(.text+0x43c): undefined reference to `__adddf3'
libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
__psfs_do_numeric.c:(.text+0x518): undefined reference to `__truncdfsf2'
libc/libc_so.a(strtof.os): In function `strtof':
strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2'
/usr/local/arm-uclibc-tools/lib/gcc/arm-linux-uclibc/4.1.0/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 
`/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc'
make: *** 
[/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc/lib/libc.a] Error 2

If I try to build w/o using the nightly snapshot (eg - use 0.9.28) , I 
get the following error instead:

/usr/local/arm-uclibc-tools/bin/arm-linux-uclibc-strip -x -R .note -R 
.comment arm/resolve.o
/usr/local/arm-uclibc-tools/bin/arm-linux-uclibc-gcc  -Wall 
-Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing 
-fno-stack-protector  -fstrict-aliasing -Os -funit-at-a-time 
-DUCLIBC_LDSO=\"ld-uClibc.so.0\"    -mlittle-endian -msoft-float -fPIC 
-DUCLIBC_RUNTIME_PREFIX=\"/\" -fno-builtin -nostdinc -D_LIBC 
-I../../ldso/include -I. -I../../include -isystem 
/usr/local/arm-uclibc-tools/lib/gcc/arm-linux-uclibc/4.1.0/include -c 
ldso.c -o ldso.o
/usr/local/arm-uclibc-tools/bin/arm-linux-uclibc-strip -x -R .note -R 
.comment ldso.o
/usr/local/arm-uclibc-tools/bin/arm-linux-uclibc-ld -EL -e _start -z now 
-Bsymbolic -shared --warn-common --export-dynamic --sort-common -z 
combreloc --discard-locals --discard-all --no-undefined -s 
-soname=ld-uClibc.so.0 \
        -o ld-uClibc-0.9.28.so arm/resolve.o ldso.o 
/usr/local/arm-uclibc-tools/lib/gcc/arm-linux-uclibc/4.1.0/libgcc.a
/usr/local/arm-uclibc-tools/lib/gcc/arm-linux-uclibc/4.1.0/libgcc.a(_dvmd_lnx.o): 
In function `__div0':
/root/lance/buildroot/toolchain_build_arm_nofpu/gcc-4.1.0/gcc/config/arm/lib1funcs.asm:1000: 
undefined reference to `raise'
make[3]: *** [ld-uClibc-0.9.28.so] Error 1
make[3]: Leaving directory 
`/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.28/ldso/ldso'
make[2]: *** [ldso] Error 2
make[2]: Leaving directory 
`/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.28/ldso'
make[1]: *** [_dir_ldso] Error 2
make[1]: Leaving directory 
`/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.28'
make: *** 
[/root/lance/buildroot/toolchain_build_arm_nofpu/uClibc-0.9.28/lib/libc.a] 
Error 2

Here's my buildroot/.config (minus the commented lines):

BR2_HAVE_DOT_CONFIG=y
BR2_arm=y
BR2_generic_arm=y
BR2_ARM_TYPE="GENERIC_ARM"
BR2_ARCH="arm"
BR2_ENDIAN="LITTLE"

BR2_WGET="wget --passive-ftp"
BR2_SVN="svn co"
BR2_TAR_OPTIONS=""
BR2_DL_DIR="$(BASE_DIR)/dl"
BR2_SOURCEFORGE_MIRROR="easynews"
BR2_STAGING_DIR="/usr/local/arm-uclibc-tools"
BR2_TOPDIR_PREFIX=""
BR2_TOPDIR_SUFFIX=""
BR2_GNU_BUILD_SUFFIX="pc-linux-gnu"
BR2_JLEVEL=1

BR2_KERNEL_HEADERS_2_6_12=y
BR2_DEFAULT_KERNEL_HEADERS="2.6.12"

BR2_UCLIBC_VERSION_SNAPSHOT=y
BR2_USE_UCLIBC_SNAPSHOT="snapshot"
BR2_ENABLE_LOCALE=y
BR2_PTHREADS_OLD=y

BR2_BINUTILS_VERSION_2_16_1=y
BR2_BINUTILS_VERSION="2.16.1"
BR2_EXTRA_BINUTILS_CONFIG_OPTIONS=""

BR2_GCC_VERSION_4_1_0=y
BR2_GCC_VERSION="4.1.0"
BR2_EXTRA_GCC_CONFIG_OPTIONS=""
BR2_INSTALL_LIBSTDCPP=y

BR2_PACKAGE_GDB_SERVER=y
BR2_PACKAGE_GDB_HOST=y
BR2_GDB_VERSION_6_3=y
BR2_GDB_VERSION="6.3"

BR2_ELF2FLT=y

BR2_PACKAGE_SSTRIP_HOST=y
BR2_ENABLE_MULTILIB=y
BR2_LARGEFILE=y
BR2_SOFT_FLOAT=y
BR2_TARGET_OPTIMIZATION="-Os -pipe"
BR2_CROSS_TOOLCHAIN_TARGET_UTILS=y

BR2_QTE_TMAKE_VERSION="1.13"
BR2_PACKAGE_SUDO=y

I'm able to build OK except when I enable the software floating point 
options (in both the menuconfig and the gcc config that comes up 
later).  Can someone tell me what Im doing wrong?  Or would someone post 
a working .config for software-floating point?

Thanks,
Lance





Nitin Gupta wrote:

> When I stumbled upon something similar I found out that I was setting
> UCLIBC_HAS_FPU=y
> instead of
> HAS_FPU
>
> Hope it helps.
> Nitin
>
> Lance Spaulding wrote:
>
>> Hi,
>>
>> I'm trying to build a 4.1 based cross compiler for an ARM without 
>> hardware floating point but keep getting errors.  According to the 
>> following bug report, these errors were fixed but I'm getting them 
>> with the daily snapshot (4/7/06):
>>
>> http://bugs.uclibc.org/bug_view_advanced_page.php?bug_id=574
>>
>> Here's the output from the compile showing the error:
>>
>>  AS lib/crtn.o
>>  STRIP -x -R .note -R .comment lib/libc.a
>>  AR cr lib/libc.a
>>  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.28.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+0xd4): undefined reference to `__nedf2'
>> _fpmaxtostr.c:(.text+0xf8): undefined reference to `__eqdf2'
>> _fpmaxtostr.c:(.text+0x114): undefined reference to `__divdf3'
>> _fpmaxtostr.c:(.text+0x120): undefined reference to `__ltdf2'
>> _fpmaxtostr.c:(.text+0x1d0): undefined reference to `__muldf3'
>> _fpmaxtostr.c:(.text+0x394): undefined reference to `__gedf2'
>> _fpmaxtostr.c:(.text+0x43c): undefined reference to `__adddf3'
>> libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
>> __psfs_do_numeric.c:(.text+0x514): undefined reference to `__truncdfsf2'
>> libc/libc_so.a(strtof.os): In function `strtof':
>> strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2'
>>
>> I've attached the .config I'm using.
>>
>> Is buildroot & uClibc supposed to work correctly with gcc 4.1 on ARM?
>>
>> Thanks in advance,
>> Lance
>> _______________________________________________
>> uClibc mailing list
>> uClibc at uclibc.org
>> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
>
>
>




More information about the uClibc mailing list