patches/gcc/3.4.6/220-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jan 03 23:40:22 2011 +0100 (2011-01-03)
changeset 2267 7af68e6083aa
parent 339 bd5e0a849352
permissions -rw-r--r--
libc-glibc: remove 2.3.6

This is an obsolete version which is no longer used by any sample (the only
user, the ia64 sample, has been removed).

It also makes the code path a bit complex, with twists just to accomodate
that version. Removing the version will make those twists go away, and
will ease commonalisation of glibc and eglibc in the future (hopefully!).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@339
     1
diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h
yann@339
     2
--- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h	2007-08-15 22:51:01.000000000 +0200
yann@339
     3
+++ gcc-3.4.6/gcc/config/arm/linux-elf.h	2007-08-15 23:05:42.000000000 +0200
yann@339
     4
@@ -30,17 +30,34 @@
yann@339
     5
 /* Do not assume anything about header files.  */
yann@339
     6
 #define NO_IMPLICIT_EXTERN_C
yann@339
     7
 
yann@339
     8
+/*
yann@339
     9
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
yann@339
    10
+ * (big endian) configurations.
yann@339
    11
+ */
yann@339
    12
+#if TARGET_BIG_ENDIAN_DEFAULT
yann@339
    13
+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
yann@339
    14
+#define TARGET_ENDIAN_OPTION "mbig-endian"
yann@339
    15
+#define TARGET_LINKER_EMULATION "armelfb_linux"
yann@339
    16
+#else
yann@339
    17
+#define TARGET_ENDIAN_DEFAULT 0
yann@339
    18
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
yann@339
    19
+#define TARGET_LINKER_EMULATION "armelf_linux"
yann@339
    20
+#endif
yann@339
    21
+
yann@339
    22
 /* Default is to use APCS-32 mode.  */
yann@339
    23
 #undef  TARGET_DEFAULT
yann@339
    24
-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
yann@339
    25
+#define TARGET_DEFAULT \
yann@339
    26
+		( ARM_FLAG_APCS_32 | \
yann@339
    27
+		  ARM_FLAG_MMU_TRAPS | \
yann@339
    28
+		  TARGET_ENDIAN_DEFAULT )
yann@339
    29
 
yann@339
    30
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
yann@339
    31
 
yann@339
    32
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
yann@339
    33
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
yann@339
    34
 
yann@339
    35
 #undef  MULTILIB_DEFAULTS
yann@339
    36
 #define MULTILIB_DEFAULTS \
yann@339
    37
-	{ "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@339
    38
+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
yann@339
    39
 
yann@339
    40
 #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
yann@339
    41
 
yann@339
    42
@@ -94,7 +111,7 @@
yann@339
    43
    %{rdynamic:-export-dynamic} \
yann@339
    44
    %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
yann@339
    45
    -X \
yann@339
    46
-   %{mbig-endian:-EB}" \
yann@339
    47
+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
yann@339
    48
    SUBTARGET_EXTRA_LINK_SPEC
yann@339
    49
 
yann@339
    50
 #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS()
yann@339
    51
diff -durN gcc-3.4.6.orig/gcc/config.gcc gcc-3.4.6/gcc/config.gcc
yann@339
    52
--- gcc-3.4.6.orig/gcc/config.gcc	2007-08-15 22:51:01.000000000 +0200
yann@339
    53
+++ gcc-3.4.6/gcc/config.gcc	2007-08-15 23:05:42.000000000 +0200
yann@339
    54
@@ -678,6 +678,11 @@
yann@339
    55
 	;;
yann@339
    56
 arm*-*-linux*)			# ARM GNU/Linux with ELF
yann@339
    57
 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
yann@339
    58
+	case $target in
yann@339
    59
+	arm*b-*)
yann@339
    60
+		tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
yann@339
    61
+		;;
yann@339
    62
+	esac
yann@339
    63
 	tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
yann@339
    64
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
yann@339
    65
 	gnu_ld=yes