1.1 --- a/patches/gcc/3.4.6/arm-softfloat.patch Sat Sep 22 17:25:42 2007 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,161 +0,0 @@
1.4 -diff -durN gcc-3.4.6.orig/gcc/config/arm/coff.h gcc-3.4.6/gcc/config/arm/coff.h
1.5 ---- gcc-3.4.6.orig/gcc/config/arm/coff.h 2004-02-24 15:25:22.000000000 +0100
1.6 -+++ gcc-3.4.6/gcc/config/arm/coff.h 2007-08-15 23:10:54.000000000 +0200
1.7 -@@ -31,11 +31,16 @@
1.8 - #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
1.9 -
1.10 - #undef TARGET_DEFAULT
1.11 --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
1.12 -+#define TARGET_DEFAULT \
1.13 -+ ( ARM_FLAG_SOFT_FLOAT \
1.14 -+ | ARM_FLAG_VFP \
1.15 -+ | ARM_FLAG_APCS_32 \
1.16 -+ | ARM_FLAG_APCS_FRAME \
1.17 -+ | ARM_FLAG_MMU_TRAPS )
1.18 -
1.19 - #ifndef MULTILIB_DEFAULTS
1.20 - #define MULTILIB_DEFAULTS \
1.21 -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
1.22 -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
1.23 - #endif
1.24 -
1.25 - /* This is COFF, but prefer stabs. */
1.26 -diff -durN gcc-3.4.6.orig/gcc/config/arm/elf.h gcc-3.4.6/gcc/config/arm/elf.h
1.27 ---- gcc-3.4.6.orig/gcc/config/arm/elf.h 2004-02-24 15:25:22.000000000 +0100
1.28 -+++ gcc-3.4.6/gcc/config/arm/elf.h 2007-08-15 23:10:54.000000000 +0200
1.29 -@@ -46,7 +46,9 @@
1.30 -
1.31 - #ifndef SUBTARGET_ASM_FLOAT_SPEC
1.32 - #define SUBTARGET_ASM_FLOAT_SPEC "\
1.33 --%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
1.34 -+%{mapcs-float:-mfloat} \
1.35 -+%{mhard-float:-mfpu=fpa} \
1.36 -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
1.37 - #endif
1.38 -
1.39 - #ifndef ASM_SPEC
1.40 -@@ -106,12 +108,17 @@
1.41 - #endif
1.42 -
1.43 - #ifndef TARGET_DEFAULT
1.44 --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
1.45 -+#define TARGET_DEFAULT \
1.46 -+ ( ARM_FLAG_SOFT_FLOAT \
1.47 -+ | ARM_FLAG_VFP \
1.48 -+ | ARM_FLAG_APCS_32 \
1.49 -+ | ARM_FLAG_APCS_FRAME \
1.50 -+ | ARM_FLAG_MMU_TRAPS )
1.51 - #endif
1.52 -
1.53 - #ifndef MULTILIB_DEFAULTS
1.54 - #define MULTILIB_DEFAULTS \
1.55 -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
1.56 -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
1.57 - #endif
1.58 -
1.59 - #define TARGET_ASM_FILE_START_APP_OFF true
1.60 -diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h
1.61 ---- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h 2007-08-15 23:07:00.000000000 +0200
1.62 -+++ gcc-3.4.6/gcc/config/arm/linux-elf.h 2007-08-15 23:10:54.000000000 +0200
1.63 -@@ -44,12 +44,26 @@
1.64 - #define TARGET_LINKER_EMULATION "armelf_linux"
1.65 - #endif
1.66 -
1.67 --/* Default is to use APCS-32 mode. */
1.68 -+/*
1.69 -+ * Default is to use APCS-32 mode with soft-vfp.
1.70 -+ * The old Linux default for floats can be achieved with -mhard-float
1.71 -+ * or with the configure --with-float=hard option.
1.72 -+ * If -msoft-float or --with-float=soft is used then software float
1.73 -+ * support will be used just like the default but with the legacy
1.74 -+ * big endian word ordering for double float representation instead.
1.75 -+ */
1.76 - #undef TARGET_DEFAULT
1.77 --#define TARGET_DEFAULT \
1.78 -- ( ARM_FLAG_APCS_32 | \
1.79 -- ARM_FLAG_MMU_TRAPS | \
1.80 -- TARGET_ENDIAN_DEFAULT )
1.81 -+#define TARGET_DEFAULT \
1.82 -+ ( ARM_FLAG_APCS_32 \
1.83 -+ | ARM_FLAG_SOFT_FLOAT \
1.84 -+ | TARGET_ENDIAN_DEFAULT \
1.85 -+ | ARM_FLAG_VFP \
1.86 -+ | ARM_FLAG_MMU_TRAPS )
1.87 -+
1.88 -+#undef SUBTARGET_EXTRA_ASM_SPEC
1.89 -+#define SUBTARGET_EXTRA_ASM_SPEC "\
1.90 -+%{mhard-float:-mfpu=fpa} \
1.91 -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
1.92 -
1.93 - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
1.94 -
1.95 -@@ -57,7 +71,7 @@
1.96 -
1.97 - #undef MULTILIB_DEFAULTS
1.98 - #define MULTILIB_DEFAULTS \
1.99 -- { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
1.100 -+ { "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
1.101 -
1.102 - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
1.103 -
1.104 -@@ -72,7 +86,7 @@
1.105 - %{shared:-lc} \
1.106 - %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
1.107 -
1.108 --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
1.109 -+#define LIBGCC_SPEC "-lgcc"
1.110 -
1.111 - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
1.112 - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
1.113 -diff -durN gcc-3.4.6.orig/gcc/config/arm/t-linux gcc-3.4.6/gcc/config/arm/t-linux
1.114 ---- gcc-3.4.6.orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200
1.115 -+++ gcc-3.4.6/gcc/config/arm/t-linux 2007-08-15 23:10:54.000000000 +0200
1.116 -@@ -4,7 +4,10 @@
1.117 - LIBGCC2_DEBUG_CFLAGS = -g0
1.118 -
1.119 - LIB1ASMSRC = arm/lib1funcs.asm
1.120 --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
1.121 -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
1.122 -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
1.123 -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
1.124 -+ _fixsfsi _fixunssfsi
1.125 -
1.126 - # MULTILIB_OPTIONS = mhard-float/msoft-float
1.127 - # MULTILIB_DIRNAMES = hard-float soft-float
1.128 -diff -durN gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h gcc-3.4.6/gcc/config/arm/unknown-elf.h
1.129 ---- gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h 2004-02-24 15:25:22.000000000 +0100
1.130 -+++ gcc-3.4.6/gcc/config/arm/unknown-elf.h 2007-08-15 23:10:54.000000000 +0200
1.131 -@@ -30,7 +30,12 @@
1.132 -
1.133 - /* Default to using APCS-32 and software floating point. */
1.134 - #ifndef TARGET_DEFAULT
1.135 --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
1.136 -+#define TARGET_DEFAULT \
1.137 -+ ( ARM_FLAG_SOFT_FLOAT \
1.138 -+ | ARM_FLAG_VFP \
1.139 -+ | ARM_FLAG_APCS_32 \
1.140 -+ | ARM_FLAG_APCS_FRAME \
1.141 -+ | ARM_FLAG_MMU_TRAPS )
1.142 - #endif
1.143 -
1.144 - /* Now we define the strings used to build the spec file. */
1.145 -diff -durN gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h gcc-3.4.6/gcc/config/arm/xscale-elf.h
1.146 ---- gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200
1.147 -+++ gcc-3.4.6/gcc/config/arm/xscale-elf.h 2007-08-15 23:10:54.000000000 +0200
1.148 -@@ -49,11 +49,12 @@
1.149 - endian, regardless of the endian-ness of the memory
1.150 - system. */
1.151 -
1.152 --#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
1.153 -- %{mhard-float:-mfpu=fpa} \
1.154 -- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
1.155 -+#define SUBTARGET_EXTRA_ASM_SPEC "\
1.156 -+%{!mcpu=*:-mcpu=xscale} \
1.157 -+%{mhard-float:-mfpu=fpa} \
1.158 -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
1.159 -
1.160 - #ifndef MULTILIB_DEFAULTS
1.161 - #define MULTILIB_DEFAULTS \
1.162 -- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
1.163 -+ { "mlittle-endian", "mno-thumb-interwork", "marm" }
1.164 - #endif