patches/gcc/3.3.6/110-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Sep 04 17:27:16 2009 +0200 (2009-09-04)
changeset 1512 439a6b292917
parent 402 197e1b49586e
permissions -rw-r--r--
TODO: update

Add TODO list for m4, autoconf, automake and libtool.
Building our own versions would remove burden from the users
who have older versions on their distributions, and are not
ready/able/allowed to upgrade.
yann@402
     1
diff -urN gcc-3.3.4.orig/gcc/config/arm/linux-elf.h gcc-3.3.4/gcc/config/arm/linux-elf.h
yann@402
     2
--- gcc-3.3.4.orig/gcc/config/arm/linux-elf.h	2004-03-30 22:43:45.000000000 +0200
yann@402
     3
+++ gcc-3.3.4/gcc/config/arm/linux-elf.h	2004-08-20 02:13:02.969084177 +0200
yann@402
     4
@@ -30,17 +30,31 @@
yann@402
     5
 /* Do not assume anything about header files.  */
yann@402
     6
 #define NO_IMPLICIT_EXTERN_C
yann@402
     7
 
yann@402
     8
+/*
yann@402
     9
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@402
    10
+ * (big endian) configurations.
yann@402
    11
+ */
yann@402
    12
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@402
    13
+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
yann@402
    14
+#define TARGET_ENDIAN_OPTION "mbig-endian"
yann@402
    15
+#define TARGET_LINKER_EMULATION "armelfb_linux"
yann@402
    16
+#else
yann@402
    17
+#define TARGET_ENDIAN_DEFAULT 0
yann@402
    18
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
yann@402
    19
+#define TARGET_LINKER_EMULATION "armelf_linux"
yann@402
    20
+#endif
yann@402
    21
+
yann@402
    22
 /* Default is to use APCS-32 mode.  */
yann@402
    23
 #undef  TARGET_DEFAULT
yann@402
    24
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
yann@402
    25
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS | TARGET_ENDIAN_DEFAULT)
yann@402
    26
 
yann@402
    27
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@402
    28
 
yann@402
    29
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
yann@402
    30
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
yann@402
    31
 
yann@402
    32
 #undef  MULTILIB_DEFAULTS
yann@402
    33
 #define MULTILIB_DEFAULTS \
yann@402
    34
-	{ "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    35
+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@402
    36
 
yann@402
    37
 #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
yann@402
    38
 
yann@402
    39
@@ -88,7 +102,7 @@
yann@402
    40
    %{rdynamic:-export-dynamic} \
yann@402
    41
    %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
yann@402
    42
    -X \
yann@402
    43
-   %{mbig-endian:-EB}" \
yann@402
    44
+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
yann@402
    45
    SUBTARGET_EXTRA_LINK_SPEC
yann@402
    46
 
yann@402
    47
 #define TARGET_OS_CPP_BUILTINS()		\
yann@402
    48
diff -urN gcc-3.3.4.orig/gcc/config.gcc gcc-3.3.4/gcc/config.gcc
yann@402
    49
--- gcc-3.3.4.orig/gcc/config.gcc	2004-04-29 06:42:47.000000000 +0200
yann@402
    50
+++ gcc-3.3.4/gcc/config.gcc	2004-08-20 02:11:04.326143343 +0200
yann@402
    51
@@ -699,6 +699,11 @@
yann@402
    52
 	;;
yann@402
    53
 arm*-*-linux*)			# ARM GNU/Linux with ELF
yann@402
    54
 	tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
yann@402
    55
+	case $machine in
yann@402
    56
+	arm*b-*)
yann@402
    57
+		tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
yann@402
    58
+		;;
yann@402
    59
+	esac
yann@402
    60
 	tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
yann@402
    61
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
yann@402
    62
 	gnu_ld=yes