patches/gcc/4.2.0/240-arm-bigendian.patch
author Anthony Foiani <anthony.foiani@gmail.com>
Thu May 19 23:06:16 2011 +0200 (2011-05-19)
changeset 2461 ec30b191f0e3
parent 111 2e16b9fc302d
permissions -rw-r--r--
complibs/ppl: build only C and C++ interfaces for PPL

By default, PPL wants to build interfaces for any of a variety of
langauges it finds on the local host (python, java, possibly perl, also
more esoteric languages such as ocaml and prolog).

These extra interfaces can double the compile time for the library. For
single-process builds, I found a savings of more than 40%:

default / j1: 716s total, 143.2s avg, 0.52s stdev
just_c / j1: 406s total, 81.2s avg, 0.33s stdev
just_c_cpp / j1: 413s total, 82.6s avg, 0.22s stdev

And for multi-process builds, it approached 50%:

default / j4: 625s total, 125.0s avg, 0.57s stdev
just_c / j4: 338s total, 67.6s avg, 1.25s stdev
just_c_cpp / j4: 327s total, 65.4s avg, 0.36s stdev

Since the PPL we build within ct-ng is only used by GCC, we only need to
build the C and C++ interfaces.

Signed-Off-By: Anthony Foiani <anthony.foiani@gmail.com>
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"