patches/gcc/4.2.4/240-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 31 23:24:40 2010 +0200 (2010-08-31)
branch1.8
changeset 2108 68d038933dc4
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
binutils/binutils: remove faulty patch

The added code should be conditinal to the target system
being !MIPS, but is based on the host system being !MIPS.

This is plain wrong, and had not been noticed until now
as I never used those binutils versions on MIPS.

See:
http://sourceware.org/ml/crossgcc/2010-08/msg00192.html

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from f5ab0a80e46616adb3619cc7c5d78d0ccd7ea697)
yann@687
     1
diff -durN gcc-4.2.1.orig/gcc/config/arm/linux-elf.h gcc-4.2.1/gcc/config/arm/linux-elf.h
yann@687
     2
--- gcc-4.2.1.orig/gcc/config/arm/linux-elf.h	2006-02-17 00:29:10.000000000 +0100
yann@687
     3
+++ gcc-4.2.1/gcc/config/arm/linux-elf.h	2007-08-03 20:36:43.000000000 +0200
yann@687
     4
@@ -28,19 +28,33 @@
yann@687
     5
 #undef  TARGET_VERSION
yann@687
     6
 #define TARGET_VERSION  fputs (" (ARM GNU/Linux with ELF)", stderr);
yann@687
     7
 
yann@687
     8
+/*
yann@687
     9
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@687
    10
+ * (big endian) configurations.
yann@687
    11
+ */
yann@687
    12
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@687
    13
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
yann@687
    14
+#define TARGET_ENDIAN_OPTION "mbig-endian"
yann@687
    15
+#define TARGET_LINKER_EMULATION "armelfb_linux"
yann@687
    16
+#else
yann@687
    17
+#define TARGET_ENDIAN_DEFAULT 0
yann@687
    18
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
yann@687
    19
+#define TARGET_LINKER_EMULATION "armelf_linux"
yann@687
    20
+#endif
yann@687
    21
+
yann@687
    22
 #undef  TARGET_DEFAULT_FLOAT_ABI
yann@687
    23
 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
yann@687
    24
 
yann@687
    25
 #undef  TARGET_DEFAULT
yann@687
    26
-#define TARGET_DEFAULT (0)
yann@687
    27
+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
yann@687
    28
 
yann@687
    29
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@687
    30
 
yann@687
    31
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
yann@687
    32
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
yann@687
    33
 
yann@687
    34
 #undef  MULTILIB_DEFAULTS
yann@687
    35
 #define MULTILIB_DEFAULTS \
yann@687
    36
-	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
yann@687
    37
+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
yann@687
    38
 
yann@687
    39
 /* Now we define the strings used to build the spec file.  */
yann@687
    40
 #undef  LIB_SPEC
yann@687
    41
@@ -61,7 +75,7 @@
yann@687
    42
    %{rdynamic:-export-dynamic} \
yann@687
    43
    %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \
yann@687
    44
    -X \
yann@687
    45
-   %{mbig-endian:-EB}" \
yann@687
    46
+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
yann@687
    47
    SUBTARGET_EXTRA_LINK_SPEC
yann@687
    48
 
yann@687
    49
 #undef  LINK_SPEC
yann@687
    50
diff -durN gcc-4.2.1.orig/gcc/config.gcc gcc-4.2.1/gcc/config.gcc
yann@687
    51
--- gcc-4.2.1.orig/gcc/config.gcc	2007-08-03 20:29:52.000000000 +0200
yann@687
    52
+++ gcc-4.2.1/gcc/config.gcc	2007-08-03 20:36:43.000000000 +0200
yann@687
    53
@@ -705,6 +705,11 @@
yann@687
    54
 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
yann@687
    55
 	tmake_file="${tmake_file} t-linux arm/t-arm"
yann@687
    56
 	case ${target} in
yann@687
    57
+	arm*b-*)
yann@687
    58
+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
yann@687
    59
+		;;
yann@687
    60
+	esac
yann@687
    61
+	case ${target} in
yann@687
    62
 	arm*-*-linux-*eabi)
yann@687
    63
 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
yann@687
    64
 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"