patches/gcc/3.4.6/260-arm-softfloat.patch
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 402 197e1b49586e
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@402
     1
diff -durN gcc-3.4.6.orig/gcc/config/arm/coff.h gcc-3.4.6/gcc/config/arm/coff.h
yann@402
     2
--- gcc-3.4.6.orig/gcc/config/arm/coff.h	2004-02-24 15:25:22.000000000 +0100
yann@402
     3
+++ gcc-3.4.6/gcc/config/arm/coff.h	2007-08-15 23:10:54.000000000 +0200
yann@402
     4
@@ -31,11 +31,16 @@
yann@402
     5
 #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
yann@402
     6
 
yann@402
     7
 #undef  TARGET_DEFAULT
yann@402
     8
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
     9
+#define TARGET_DEFAULT		\
yann@402
    10
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
    11
+	| ARM_FLAG_VFP		\
yann@402
    12
+	| ARM_FLAG_APCS_32	\
yann@402
    13
+	| ARM_FLAG_APCS_FRAME	\
yann@402
    14
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    15
 
yann@402
    16
 #ifndef MULTILIB_DEFAULTS
yann@402
    17
 #define MULTILIB_DEFAULTS \
yann@402
    18
-  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    19
+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
yann@402
    20
 #endif
yann@402
    21
 
yann@402
    22
 /* This is COFF, but prefer stabs.  */
yann@402
    23
diff -durN gcc-3.4.6.orig/gcc/config/arm/elf.h gcc-3.4.6/gcc/config/arm/elf.h
yann@402
    24
--- gcc-3.4.6.orig/gcc/config/arm/elf.h	2004-02-24 15:25:22.000000000 +0100
yann@402
    25
+++ gcc-3.4.6/gcc/config/arm/elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
    26
@@ -46,7 +46,9 @@
yann@402
    27
 
yann@402
    28
 #ifndef SUBTARGET_ASM_FLOAT_SPEC
yann@402
    29
 #define SUBTARGET_ASM_FLOAT_SPEC "\
yann@402
    30
-%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
yann@402
    31
+%{mapcs-float:-mfloat} \
yann@402
    32
+%{mhard-float:-mfpu=fpa} \
yann@402
    33
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
    34
 #endif
yann@402
    35
 
yann@402
    36
 #ifndef ASM_SPEC
yann@402
    37
@@ -106,12 +108,17 @@
yann@402
    38
 #endif
yann@402
    39
 
yann@402
    40
 #ifndef TARGET_DEFAULT
yann@402
    41
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
    42
+#define TARGET_DEFAULT		\
yann@402
    43
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
    44
+	| ARM_FLAG_VFP		\
yann@402
    45
+	| ARM_FLAG_APCS_32	\
yann@402
    46
+	| ARM_FLAG_APCS_FRAME	\
yann@402
    47
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    48
 #endif
yann@402
    49
 
yann@402
    50
 #ifndef MULTILIB_DEFAULTS
yann@402
    51
 #define MULTILIB_DEFAULTS \
yann@402
    52
-  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
yann@402
    53
+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
yann@402
    54
 #endif
yann@402
    55
 
yann@402
    56
 #define TARGET_ASM_FILE_START_APP_OFF true
yann@402
    57
diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h
yann@402
    58
--- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h	2007-08-15 23:07:00.000000000 +0200
yann@402
    59
+++ gcc-3.4.6/gcc/config/arm/linux-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
    60
@@ -44,12 +44,26 @@
yann@402
    61
 #define TARGET_LINKER_EMULATION "armelf_linux"
yann@402
    62
 #endif
yann@402
    63
 
yann@402
    64
-/* Default is to use APCS-32 mode.  */
yann@402
    65
+/*
yann@402
    66
+ * Default is to use APCS-32 mode with soft-vfp.
yann@402
    67
+ * The old Linux default for floats can be achieved with -mhard-float
yann@402
    68
+ * or with the configure --with-float=hard option.
yann@402
    69
+ * If -msoft-float or --with-float=soft is used then software float 
yann@402
    70
+ * support will be used just like the default but with the legacy
yann@402
    71
+ * big endian word ordering for double float representation instead.
yann@402
    72
+ */
yann@402
    73
 #undef  TARGET_DEFAULT
yann@402
    74
-#define TARGET_DEFAULT \
yann@402
    75
-		( ARM_FLAG_APCS_32 | \
yann@402
    76
-		  ARM_FLAG_MMU_TRAPS | \
yann@402
    77
-		  TARGET_ENDIAN_DEFAULT )
yann@402
    78
+#define TARGET_DEFAULT		\
yann@402
    79
+	( ARM_FLAG_APCS_32	\
yann@402
    80
+	| ARM_FLAG_SOFT_FLOAT	\
yann@402
    81
+	| TARGET_ENDIAN_DEFAULT	\
yann@402
    82
+	| ARM_FLAG_VFP		\
yann@402
    83
+	| ARM_FLAG_MMU_TRAPS )
yann@402
    84
+
yann@402
    85
+#undef  SUBTARGET_EXTRA_ASM_SPEC
yann@402
    86
+#define SUBTARGET_EXTRA_ASM_SPEC "\
yann@402
    87
+%{mhard-float:-mfpu=fpa} \
yann@402
    88
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
    89
 
yann@402
    90
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@402
    91
 
yann@402
    92
@@ -57,7 +71,7 @@
yann@402
    93
 
yann@402
    94
 #undef  MULTILIB_DEFAULTS
yann@402
    95
 #define MULTILIB_DEFAULTS \
yann@402
    96
-	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    97
+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
yann@402
    98
 
yann@402
    99
 #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
yann@402
   100
 
yann@402
   101
@@ -72,7 +86,7 @@
yann@402
   102
    %{shared:-lc} \
yann@402
   103
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
yann@402
   104
 
yann@402
   105
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
yann@402
   106
+#define LIBGCC_SPEC "-lgcc"
yann@402
   107
 
yann@402
   108
 /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
yann@402
   109
    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
yann@402
   110
diff -durN gcc-3.4.6.orig/gcc/config/arm/t-linux gcc-3.4.6/gcc/config/arm/t-linux
yann@402
   111
--- gcc-3.4.6.orig/gcc/config/arm/t-linux	2003-09-20 23:09:07.000000000 +0200
yann@402
   112
+++ gcc-3.4.6/gcc/config/arm/t-linux	2007-08-15 23:10:54.000000000 +0200
yann@402
   113
@@ -4,7 +4,10 @@
yann@402
   114
 LIBGCC2_DEBUG_CFLAGS = -g0
yann@402
   115
 
yann@402
   116
 LIB1ASMSRC = arm/lib1funcs.asm
yann@402
   117
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
yann@402
   118
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
yann@402
   119
+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
yann@402
   120
+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
yann@402
   121
+	_fixsfsi _fixunssfsi
yann@402
   122
 
yann@402
   123
 # MULTILIB_OPTIONS = mhard-float/msoft-float
yann@402
   124
 # MULTILIB_DIRNAMES = hard-float soft-float
yann@402
   125
diff -durN gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h gcc-3.4.6/gcc/config/arm/unknown-elf.h
yann@402
   126
--- gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h	2004-02-24 15:25:22.000000000 +0100
yann@402
   127
+++ gcc-3.4.6/gcc/config/arm/unknown-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
   128
@@ -30,7 +30,12 @@
yann@402
   129
 
yann@402
   130
 /* Default to using APCS-32 and software floating point.  */
yann@402
   131
 #ifndef TARGET_DEFAULT
yann@402
   132
-#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
yann@402
   133
+#define TARGET_DEFAULT		\
yann@402
   134
+	( ARM_FLAG_SOFT_FLOAT	\
yann@402
   135
+	| ARM_FLAG_VFP		\
yann@402
   136
+	| ARM_FLAG_APCS_32	\
yann@402
   137
+	| ARM_FLAG_APCS_FRAME	\
yann@402
   138
+	| ARM_FLAG_MMU_TRAPS )
yann@402
   139
 #endif
yann@402
   140
 
yann@402
   141
 /* Now we define the strings used to build the spec file.  */
yann@402
   142
diff -durN gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h gcc-3.4.6/gcc/config/arm/xscale-elf.h
yann@402
   143
--- gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h	2003-07-02 01:26:43.000000000 +0200
yann@402
   144
+++ gcc-3.4.6/gcc/config/arm/xscale-elf.h	2007-08-15 23:10:54.000000000 +0200
yann@402
   145
@@ -49,11 +49,12 @@
yann@402
   146
 		     endian, regardless of the endian-ness of the memory
yann@402
   147
 		     system.  */
yann@402
   148
 		     
yann@402
   149
-#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
yann@402
   150
-  %{mhard-float:-mfpu=fpa} \
yann@402
   151
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
yann@402
   152
+#define SUBTARGET_EXTRA_ASM_SPEC "\
yann@402
   153
+%{!mcpu=*:-mcpu=xscale} \
yann@402
   154
+%{mhard-float:-mfpu=fpa} \
yann@402
   155
+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
yann@402
   156
 
yann@402
   157
 #ifndef MULTILIB_DEFAULTS
yann@402
   158
 #define MULTILIB_DEFAULTS \
yann@402
   159
-  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
yann@402
   160
+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
yann@402
   161
 #endif