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 See http://gcc.gnu.org/PR3106
2 Backported from gcc-3.0.x
5 .../binutils-2.11.2/libiberty/strerror.c:468: error: conflicting types for `sys_nerr'
6 /usr/include/stdio.h:258: error: previous declaration of `sys_nerr'
7 make[1]: *** [strerror.o] Error 1
8 make: *** [all-libiberty] Error 2
11 --- gcc-2.95.3/libiberty/strerror.c.old 2004-03-24 16:23:19.000000000 -0800
12 +++ gcc-2.95.3/libiberty/strerror.c 2004-03-24 16:23:48.000000000 -0800
14 incompatible with our later declaration, perhaps by using const
15 attributes. So we hide the declaration in errno.h (if any) using a
17 +#define sys_nerr sys_nerr__
18 #define sys_errlist sys_errlist__
24 #ifdef HAVE_SYS_ERRLIST