1 The hunk for gcc/config/arm/t-linux comes from:
2 http://gcc.gnu.org/PR14352
4 The rest is a custom job by Yuri Vasilevski.
6 The idea here is that we add soft float support into the spec file
7 so that we don't have to worry about packages stripping out softfloat
8 flags from CFLAGS/CXXFLAGS.
10 http://bugs.gentoo.org/75585
12 --- gcc-4.0.2/gcc/config/arm/elf.h
13 +++ gcc-4.0.2/gcc/config/arm/elf.h
17 #ifndef SUBTARGET_ASM_FLOAT_SPEC
18 -#define SUBTARGET_ASM_FLOAT_SPEC "\
19 -%{mapcs-float:-mfloat}"
20 +#define SUBTARGET_ASM_FLOAT_SPEC "%{mapcs-float:-mfloat} \
21 + %{mhard-float:-mfpu=fpa} \
22 + %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
27 %{mapcs-*:-mapcs-%*} \
28 %(subtarget_asm_float_spec) \
29 %{mthumb-interwork:-mthumb-interwork} \
30 -%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
31 -%{mfloat-abi=*} %{mfpu=*} \
32 %(subtarget_extra_asm_spec)"
35 --- gcc-4.0.2/gcc/config/arm/linux-elf.h
36 +++ gcc-4.0.2/gcc/config/arm/linux-elf.h
38 #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
40 #undef TARGET_DEFAULT_FLOAT_ABI
41 -#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
42 +#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
44 /* TARGET_BIG_ENDIAN_DEFAULT is set in
45 config.gcc for big endian configurations. */
49 #define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
50 +#undef SUBTARGET_EXTRA_ASM_SPEC
51 +#define SUBTARGET_EXTRA_ASM_SPEC "%{mhard-float:-mfpu=fpa} \
52 + %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
55 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
59 #undef MULTILIB_DEFAULTS
60 #define MULTILIB_DEFAULTS \
61 - { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
62 + { "marm", TARGET_ENDIAN_OPTION, "msoft-float", "mno-thumb-interwork" }
64 /* Now we define the strings used to build the spec file. */
68 %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
70 -#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
71 +#define LIBGCC_SPEC "-lgcc"
73 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
75 --- gcc-4.0.2/gcc/config/arm/t-linux
76 +++ gcc-4.0.2/gcc/config/arm/t-linux
77 @@ -4,7 +4,10 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi
78 LIBGCC2_DEBUG_CFLAGS = -g0
80 LIB1ASMSRC = arm/lib1funcs.asm
81 -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
82 +LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
83 + _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
84 + _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
85 + _fixsfsi _fixunssfsi _floatdidf _floatdisf
87 # MULTILIB_OPTIONS = mhard-float/msoft-float
88 # MULTILIB_DIRNAMES = hard-float soft-float