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(-)
2 In file included from dynamic-link.h:22,
4 ../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object':
5 ../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24'
6 make[2]: Leaving directory `/home/dank/queue/jobdir.k8/crosstool-dev/build/arm-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.6/glibc-2.3.6/elf'
8 when building glibc-2.3.6 with gcc-4.0
11 http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.51&r2=1.52&cvsroot=glibc
12 but fixes fix_bad_pc24.
15 --- glibc-2.3.6-orig/sysdeps/arm/dl-machine.h Sun Mar 20 17:54:37 2005
16 +++ glibc-2.3.6/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005
20 /* Deal with an out-of-range PC24 reloc. */
23 + auto inline Elf32_Addr
25 + static inline Elf32_Addr
27 +#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
28 + __attribute ((always_inline))
30 fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value)
32 static void *fix_page;
34 Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>
35 with a little editing by dank@kegel.com