patches/gcc/4.2.4/240-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 17:54:21 2011 +0200 (2011-07-17)
changeset 2888 dd71df95903a
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
cc/gcc: pass the companion libs prefix to cc_core

In case of canadian-cross, the companion libraries are not the same for
the core cc (they run on 'build') as they are for the final cc (they run
on 'host').

Prepare for this differentiation (coming later), while retaining the
current behavior (to use the same compblibs).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
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"