Hans-Peter Nilsson wrote: > The directory at $target_header_dir is already inspected in > gcc/configure, for e.g. glibc version and stack protector > support, but not for setting inhibit_libc. This is just > inconsistent and the obvious resolution to me is to inhibit > inhibit_libc when a target *does* "have its own set of headers", > to quote the comment above the inhibit_libc setting. There is > nothing in the build log for "make all-gcc" that shows a > difference with/without --with-headers, if headers are actually > present anyway!
> gcc: > * configure.ac (target_header_dir): Move block defining > this to before the block setting inhibit_libc. > (inhibit_libc): When considering $with_headers, just > check it it's explicitly "no". If not, also check if > $target_header_dir/stdio.h is present. If not, set > inhibit_libc=true. > * configure: Regenerate. This had the effect of breaking all gcov-related tests in my SPU builder, since libgcov was stubbed out due to inhibit_libc now being set. I'm using the build procedure: build initial GCC (--without-headers), use it to build newlib, install newlib into prefix, build final GCC (--with-headers). Using this procedure, inihibit_libc used to *not* be set in the final GCC build, but now it is. I'm seeing two issues here: > +if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then > + if test "x$with_headers" != x; then > + target_header_dir=$with_headers In the common case of just using --with-headers, this now sets target_header_dir to "yes", which is not particularly useful. > + elif test "x$with_sysroot" = x; then > + > target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include" If I change my build procedure to omit --with-headers, it still won't find the headers since newlib install placed them into .../include, not .../sys-include. The whole sys-include thing has always confused me anyway :-) I thought that the point of sys-include is that if you specify --with-headers=<dir>, then the contents of <dir> will be copied into your prefix under .../sys-include; the compiler will use both .../sys-include *and* .../include, using the former to find headers specified using --with-headers, and the latter to find headers already installed in the prefix. While the compiler will search both locations, target_header_dir can only be set to one of them. However, in this case, it seems it would be more useful to set it to .../include: since .../sys-include should only ever contain anything when using --with-headers=<dir>, and in *that* case, target_header_dir is being set directly to <dir> anyway. Now I understand that you didn't introduce those lines, and they were already wrong before your patch; but after the patch the problem now actually matters. Before the patch, I could always use --with-header to say: just assume headers are present in the prefix, and everything worked. This is not a critical problem since I have a work-around: remove --with-headers and also manually create a symlink from sys-include to include in the prefix. But it would still be nice to avoid having to do the symlink ... Bye, Ulrich -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com