patches/gcc/4.2.0/240-arm-bigendian.patch
author Remy Bohmer <linux@bohmer.net>
Sun Jul 11 22:23:34 2010 +0200 (2010-07-11)
changeset 2021 3e52a1510f87
parent 111 2e16b9fc302d
permissions -rw-r--r--
debug/gdb: Fix compilation for Mingw hosts

GDB requires PDcurses instead of ncurses while running on Windows.
So, do not always compile ncurses in case GDB needs to build.

PDcurses is provided by an earlier build step and is not described in
this file.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
[yann.morin.1998@anciense.nib.fr: we already have a way to detect ncurses usage]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@111
     1
By Lennert Buytenhek <buytenh@wantstofly.org>
yann@111
     2
Adds support for arm*b-linux* big-endian ARM targets
yann@111
     3
yann@111
     4
See http://gcc.gnu.org/PR16350
yann@111
     5
yann@111
     6
--- gcc-4.2.0/gcc/config/arm/linux-elf.h
yann@111
     7
+++ gcc-4.2.0/gcc/config/arm/linux-elf.h
yann@111
     8
@@ -28,19 +28,33 @@
yann@111
     9
 #undef  TARGET_VERSION
yann@111
    10
 #define TARGET_VERSION  fputs (" (ARM GNU/Linux with ELF)", stderr);
yann@111
    11
 
yann@111
    12
+/*
yann@111
    13
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@111
    14
+ * (big endian) configurations.
yann@111
    15
+ */
yann@111
    16
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@111
    17
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
yann@111
    18
+#define TARGET_ENDIAN_OPTION "mbig-endian"
yann@111
    19
+#define TARGET_LINKER_EMULATION "armelfb_linux"
yann@111
    20
+#else
yann@111
    21
+#define TARGET_ENDIAN_DEFAULT 0
yann@111
    22
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
yann@111
    23
+#define TARGET_LINKER_EMULATION "armelf_linux"
yann@111
    24
+#endif
yann@111
    25
+
yann@111
    26
 #undef  TARGET_DEFAULT_FLOAT_ABI
yann@111
    27
 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
yann@111
    28
 
yann@111
    29
 #undef  TARGET_DEFAULT
yann@111
    30
-#define TARGET_DEFAULT (0)
yann@111
    31
+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
yann@111
    32
 
yann@111
    33
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@111
    34
 
yann@111
    35
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
yann@111
    36
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
yann@111
    37
 
yann@111
    38
 #undef  MULTILIB_DEFAULTS
yann@111
    39
 #define MULTILIB_DEFAULTS \
yann@111
    40
-	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
yann@111
    41
+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
yann@111
    42
 
yann@111
    43
 /* Now we define the strings used to build the spec file.  */
yann@111
    44
 #undef  LIB_SPEC
yann@111
    45
@@ -61,7 +75,7 @@
yann@111
    46
    %{rdynamic:-export-dynamic} \
yann@111
    47
    %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \
yann@111
    48
    -X \
yann@111
    49
-   %{mbig-endian:-EB}" \
yann@111
    50
+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
yann@111
    51
    SUBTARGET_EXTRA_LINK_SPEC
yann@111
    52
 
yann@111
    53
 #undef  LINK_SPEC
yann@111
    54
--- gcc-4.2.0/gcc/config.gcc.orig	2006-09-22 14:53:41.000000000 +0200
yann@111
    55
+++ gcc-4.2.0/gcc/config.gcc	2006-09-25 10:45:21.000000000 +0200
yann@111
    56
@@ -696,6 +696,11 @@
yann@111
    57
 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
yann@111
    58
 	tmake_file="${tmake_file} t-linux arm/t-arm"
yann@111
    59
 	case ${target} in
yann@111
    60
+	arm*b-*)
yann@111
    61
+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
yann@111
    62
+		;;
yann@111
    63
+	esac
yann@111
    64
+	case ${target} in
yann@111
    65
 	arm*-*-linux-*eabi)
yann@111
    66
 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
yann@111
    67
 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"