Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.
/trunk/scripts/build/libc/glibc.sh | 14 2 12 0 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
1 diff -durN gcc-4.2.1.orig/gcc/config/arm/linux-elf.h gcc-4.2.1/gcc/config/arm/linux-elf.h
2 --- gcc-4.2.1.orig/gcc/config/arm/linux-elf.h 2006-02-17 00:29:10.000000000 +0100
3 +++ gcc-4.2.1/gcc/config/arm/linux-elf.h 2007-08-03 20:36:43.000000000 +0200
6 #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
9 + * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
10 + * (big endian) configurations.
12 +#if TARGET_BIG_ENDIAN_DEFAULT
13 +#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
14 +#define TARGET_ENDIAN_OPTION "mbig-endian"
15 +#define TARGET_LINKER_EMULATION "armelfb_linux"
17 +#define TARGET_ENDIAN_DEFAULT 0
18 +#define TARGET_ENDIAN_OPTION "mlittle-endian"
19 +#define TARGET_LINKER_EMULATION "armelf_linux"
22 #undef TARGET_DEFAULT_FLOAT_ABI
23 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
26 -#define TARGET_DEFAULT (0)
27 +#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
29 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
31 -#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
32 +#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
34 #undef MULTILIB_DEFAULTS
35 #define MULTILIB_DEFAULTS \
36 - { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
37 + { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
39 /* Now we define the strings used to build the spec file. */
42 %{rdynamic:-export-dynamic} \
43 %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \
45 - %{mbig-endian:-EB}" \
46 + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
47 SUBTARGET_EXTRA_LINK_SPEC
50 diff -durN gcc-4.2.1.orig/gcc/config.gcc gcc-4.2.1/gcc/config.gcc
51 --- gcc-4.2.1.orig/gcc/config.gcc 2007-08-03 20:29:52.000000000 +0200
52 +++ gcc-4.2.1/gcc/config.gcc 2007-08-03 20:36:43.000000000 +0200
54 tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
55 tmake_file="${tmake_file} t-linux arm/t-arm"
58 + tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
63 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
64 tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"