Hello! What is the reason for GCC (trunk version) installing the <limits.h> header file as `PREFIX/lib/gcc/*/*/include-fixed/limits.h' instead of putting it into `PREFIX/lib/gcc/*/*/include/', which is what gcc-4_2-branch and earlier have been doing?
The leads to a problem as follows. You're about to bootstrap a cross
compiler from only source code. You build cross binutils. You build a
minimal bootstrapping GCC (``--with-sysroot=[...] --disable-shared
--disable-threads --without-headers --enable-languages=c''; ``make
all-gcc install-gcc all-target-libgcc install-target-libgcc''). Then you
attemp to bootstrap the glibc which will eventually fail like this:
#v+
i586-pc-gnu-gcc [...] -I[glibc internal] -nostdinc -isystem [GCC
target]/4.3.0/include -isystem [sysroot]/include [glibc stuff]
In file included from ../sysdeps/unix/bsd/bsd4.4/bits/socket.h:31,
from [...]
../include/limits.h:125:26: error: limits.h: No such file or directory
#v-
Is this a GCC issue or should the glibc build system be adding a
``-isystem [GCC target]/4.3.0/include-fixed''?
#v+
$ find lib/gcc/*/*/ -name \*.h | sort
lib/gcc/i586-pc-gnu/4.3.0/include-fixed/limits.h
lib/gcc/i586-pc-gnu/4.3.0/include-fixed/syslimits.h
lib/gcc/i586-pc-gnu/4.3.0/include/ammintrin.h
lib/gcc/i586-pc-gnu/4.3.0/include/bmmintrin.h
lib/gcc/i586-pc-gnu/4.3.0/include/cpuid.h
[...]
lib/gcc/i586-pc-gnu/4.3.0/include/unwind.h
lib/gcc/i586-pc-gnu/4.3.0/include/varargs.h
lib/gcc/i586-pc-gnu/4.3.0/include/xmmintrin.h
lib/gcc/i586-pc-gnu/4.3.0/install-tools/gsyslimits.h
lib/gcc/i586-pc-gnu/4.3.0/install-tools/include/limits.h
#v-
Note that this can also be reproduced with a pseudo GNU/Linux to
GNU/Linux ``cross'' compiler, e.g., from `i686-pc-linux-gnu' to
`i586-pc-linux-gnu':
#v+
$ ../trunk-work/configure --target=i586-pc-linux-gnu --prefix=$(pwd).install
--disable-nls --disable-shared --disable-threads --enable-languages=c
--with-arch=i586
[...]
$ make all-gcc install-gcc
[...]
$ find $(pwd).install/lib/gcc/*/*/ -name \*.h | sort
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include-fixed/limits.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include-fixed/syslimits.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/ammintrin.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/bmmintrin.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/cpuid.h
[...]
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/unwind.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/varargs.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/include/xmmintrin.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/install-tools/gsyslimits.h
/home/thomas/tmp/source/gcc/trunk-work.build.install/lib/gcc/i586-pc-linux-gnu/4.3.0/install-tools/include/limits.h
#v-
Why is `limits.h' put into `include-fixed/'? And what about this
`install-tools' directory which duplicates some of the files?
Regards,
Thomas
signature.asc
Description: Digital signature
