Submitted By: Andrew Bradford 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