patches/gcc/4.2.4/240-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 687 b2b6b1d46aa1
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
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"