Submitted By: Andrew Bradford <bradfa@gmail.com>
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
