Submitted By: Andrew Bradford Date: 2011-04-05 Initial Package Version: 4.6.0 Upstream Status: From Buildroot Team Origin: http://git.buildroot.net/buildroot/tree/toolchain/gcc/4.5.2/810-arm-softfloat-libgcc.patch Description: This patch configures GCC to produce the required asm functions to enable soft floating point operation in libgcc for ARM systems using uClibc. GCC will use the file gcc/config/arm/ieee754-df.S where these routines are stored. This doesn't happen by default, thus requiring this patch. Modified from the Buildroot team's original as it wouldn't apply cleanly to GCC-4.6.0. Content is the same but with different offsets. diff -Naur gcc-4.6.0.orig/gcc/config/arm/linux-elf.h gcc-4.6.0/gcc/config/arm/li nux-elf.h --- gcc-4.6.0.orig/gcc/config/arm/linux-elf.h 2011-04-05 05:58:33.000000000 -0 400 +++ gcc-4.6.0/gcc/config/arm/linux-elf.h 2011-04-05 05:59:28.000000000 -0 400 @@ -60,7 +60,7 @@ %{shared:-lc} \ %{!shared:%{profile:-lc_p}%{!profile:-lc}}" -#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" +#define LIBGCC_SPEC "-lgcc" #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" diff -Naur gcc-4.6.0.orig/gcc/config/arm/t-linux gcc-4.6.0/gcc/config/arm/t-linux --- gcc-4.6.0.orig/gcc/config/arm/t-linux 2011-04-05 05:58:33.000000000 -0400 +++ gcc-4.6.0/gcc/config/arm/t-linux 2011-04-05 06:03:12.000000000 -0400 @@ -23,7 +23,11 @@ LIB1ASMSRC = arm/lib1funcs.asm LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ - _arm_addsubdf3 _arm_addsubsf3 + _arm_addsubdf3 _arm_addsubsf3 \ + _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ + _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ + _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ + _arm_fixsfsi _arm_fixunssfsi # MULTILIB_OPTIONS = mhard-float/msoft-float # MULTILIB_DIRNAMES = hard-float soft-float