patches/gcc/3.4.6/220-arm-bigendian.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Dec 05 20:31:43 2012 +0100 (2012-12-05)
changeset 3134 863723936e24
parent 339 bd5e0a849352
permissions -rw-r--r--
scripts/xldd: use user's sed and grep

xldd uses sed and grep as detected by ./configure. This works well if is
used on the machine that build the toolchain.

But if the user moves the toolchain to another machine where sed and grep
are not in the same directory (eg. /bin/sed vs. /usr/bin/sed), then xldd
will stop functionning.

Fix that by using ${SED} and ${GREP} if they are set in the environment.

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