patches/gcc/4.1.2/200-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
parent 13 068dce39f687
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@13
     1
--- gcc-4.1.2.orig/gcc/config/arm/linux-elf.h	2007-03-04 23:25:37.000000000 +0100
yann@13
     2
+++ gcc-4.1.2/gcc/config/arm/linux-elf.h	2007-03-04 23:35:09.000000000 +0100
yann@1
     3
@@ -28,19 +28,33 @@
yann@1
     4
 #undef  TARGET_VERSION
yann@1
     5
 #define TARGET_VERSION  fputs (" (ARM GNU/Linux with ELF)", stderr);
yann@1
     6
 
yann@1
     7
+/*
yann@1
     8
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@1
     9
+ * (big endian) configurations.
yann@1
    10
+ */
yann@1
    11
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@1
    12
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
yann@1
    13
+#define TARGET_ENDIAN_OPTION "mbig-endian"
yann@1
    14
+#define TARGET_LINKER_EMULATION "armelfb_linux"
yann@1
    15
+#else
yann@1
    16
+#define TARGET_ENDIAN_DEFAULT 0
yann@1
    17
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
yann@1
    18
+#define TARGET_LINKER_EMULATION "armelf_linux"
yann@1
    19
+#endif
yann@1
    20
+
yann@1
    21
 #undef  TARGET_DEFAULT_FLOAT_ABI
yann@1
    22
 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
yann@1
    23
 
yann@1
    24
 #undef  TARGET_DEFAULT
yann@1
    25
-#define TARGET_DEFAULT (0)
yann@1
    26
+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
yann@1
    27
 
yann@1
    28
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@1
    29
 
yann@1
    30
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
yann@1
    31
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
yann@1
    32
 
yann@1
    33
 #undef  MULTILIB_DEFAULTS
yann@1
    34
 #define MULTILIB_DEFAULTS \
yann@1
    35
-	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
yann@1
    36
+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
yann@1
    37
 
yann@1
    38
 /* Now we define the strings used to build the spec file.  */
yann@1
    39
 #undef  LIB_SPEC
yann@13
    40
@@ -65,7 +79,7 @@
yann@1
    41
    %{rdynamic:-export-dynamic} \
yann@1
    42
    %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \
yann@1
    43
    -X \
yann@1
    44
-   %{mbig-endian:-EB}" \
yann@1
    45
+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
yann@1
    46
    SUBTARGET_EXTRA_LINK_SPEC
yann@1
    47
 
yann@1
    48
 #undef  LINK_SPEC
yann@13
    49
--- gcc-4.1.2.orig/gcc/config.gcc	2007-03-04 23:31:48.000000000 +0100
yann@13
    50
+++ gcc-4.1.2/gcc/config.gcc	2007-03-04 23:35:09.000000000 +0100
yann@13
    51
@@ -672,6 +672,11 @@
yann@1
    52
 	;;
yann@1
    53
 arm*-*-linux*)			# ARM GNU/Linux with ELF
yann@1
    54
 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" 
yann@1
    55
+	case $target in
yann@1
    56
+	arm*b-*)
yann@1
    57
+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
yann@1
    58
+		;;
yann@1
    59
+	esac
yann@1
    60
 	tmake_file="${tmake_file} t-linux arm/t-arm"
yann@1
    61
 	case ${target} in
yann@13
    62
 	arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
yann@13
    63
--- gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h	2007-03-04 23:31:48.000000000 +0100
yann@13
    64
+++ gcc-4.1.2/gcc/config/arm/linux-eabi.h	2007-03-04 23:35:09.000000000 +0100
yann@1
    65
@@ -20,6 +20,17 @@
yann@1
    66
    the Free Software Foundation, 51 Franklin Street, Fifth Floor,
yann@1
    67
    Boston, MA 02110-1301, USA.  */
yann@1
    68
 
yann@1
    69
+/*
yann@1
    70
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@1
    71
+ * (big endian) configurations.
yann@1
    72
+ */
yann@1
    73
+#undef TARGET_LINKER_EMULATION
yann@1
    74
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@1
    75
+#define TARGET_LINKER_EMULATION "armelfb_linux_eabi"
yann@1
    76
+#else
yann@1
    77
+#define TARGET_LINKER_EMULATION "armelf_linux_eabi"
yann@1
    78
+#endif
yann@1
    79
+
yann@1
    80
 /* On EABI GNU/Linux, we want both the BPABI builtins and the
yann@1
    81
    GNU/Linux builtins.  */
yann@1
    82
 #undef TARGET_OS_CPP_BUILTINS
yann@1
    83
@@ -48,7 +59,7 @@
yann@1
    84
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
yann@1
    85
 
yann@1
    86
 #undef SUBTARGET_EXTRA_LINK_SPEC
yann@1
    87
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
yann@1
    88
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
yann@1
    89
 
yann@1
    90
 /* Use ld-linux.so.3 so that it will be possible to run "classic"
yann@1
    91
    GNU/Linux binaries on an EABI system.  */
yann@13
    92
--- gcc-4.1.2.orig/gcc/config/arm/bpabi.h	2005-12-13 02:35:37.000000000 +0100
yann@13
    93
+++ gcc-4.1.2/gcc/config/arm/bpabi.h	2007-03-04 23:35:09.000000000 +0100
yann@1
    94
@@ -33,9 +33,19 @@
yann@1
    95
 #undef FPUTYPE_DEFAULT
yann@1
    96
 #define FPUTYPE_DEFAULT FPUTYPE_VFP
yann@1
    97
 
yann@1
    98
+/*
yann@1
    99
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@1
   100
+ * (big endian) configurations.
yann@1
   101
+ */
yann@1
   102
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@1
   103
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
yann@1
   104
+#else
yann@1
   105
+#define TARGET_ENDIAN_DEFAULT 0
yann@1
   106
+#endif
yann@1
   107
+
yann@1
   108
 /* EABI targets should enable interworking by default.  */
yann@1
   109
 #undef TARGET_DEFAULT
yann@1
   110
-#define TARGET_DEFAULT MASK_INTERWORK
yann@1
   111
+#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
yann@1
   112
 
yann@1
   113
 /* The ARM BPABI functions return a boolean; they use no special
yann@1
   114
    calling convention.  */