patches/gcc/4.2.4/240-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Dec 31 16:23:27 2011 +0100 (2011-12-31)
changeset 2814 3dc2727ebffc
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
cc/gcc: add option to use system zlib

In some cases, it might be desirable to use the system zlib

Eg. because latest gcc seem to be totally borked when it comes
to multilib, and tries to build a multilib host zlib, when it
is *absolutely* *not* needed: we want mulitlib on the target,
not on the host! Sigh... :-(

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"