buildroot fails for ARM w/ gcc 4.1 and soft float

Khem Raj khem at mvista.com
Fri May 12 03:20:31 UTC 2006


Lance Spaulding wrote:
> 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:
Check your libgcc build. It seems it did not build properly for soft 
float case.
>
>  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
>>
>>
>>
>
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc




More information about the uClibc mailing list