Submitted By: Andrew Bradford <bradfa@gmail.com>
Date: 2011-04-12
Initial Package Version: 4.6.0
Upstream Status: Modified From Buildroot (uClibc) 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 -Nar '--unified=5' gcc-4.6.0.orig/gcc/config/arm/linux-elf.h gcc-4.6.0/gcc/config/arm/linux-elf.h
--- gcc-4.6.0.orig/gcc/config/arm/linux-elf.h	2011-04-12 05:59:31.000000000 -0400
+++ gcc-4.6.0/gcc/config/arm/linux-elf.h	2011-04-12 06:01:34.000000000 -0400
@@ -58,11 +58,11 @@
 #define LIB_SPEC \
   "%{pthread:-lpthread} \
    %{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"
 
 #define LINUX_TARGET_LINK_SPEC  "%{h*} \
    %{static:-Bstatic} \
diff -Nar '--unified=5' 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-12 05:59:31.000000000 -0400
+++ gcc-4.6.0/gcc/config/arm/t-linux	2011-04-12 06:03:02.000000000 -0400
@@ -21,11 +21,15 @@
 # difference.
 TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC
 
 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
 
 # EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
