Hello All,

I'm raising the issue of Bootstrapping GCC again, because I think the 
current setup is somewhat flawed. This is based on some recent 
discussions and findings, please hear me out:

Multi-lib Debian Lenny showed that there is a hole in the current 
bootstrapping method. Admittedly, it is an odd host, but it revealed a 
gap. Using 'CC=gcc -B/usr/bin' on Binutils pass1 and GCC pass1 causes 
those programs to be linked with the hosts tools, which helps avoid 
incompatibility between the host's toolchain and the one we're building 
- however that only affects stage 1 of the GCC bootstrap. Stages 2 and 3 
are linked with *our new Binutils* in /tools. On Lenny this caused 
breakage because the host's multi-lib headers had been installed in an 
unexpected way.

When we bootstrap GCC on the first pass, all we really prove is that the 
*host system* is sane and is compatible with the toolchain we're 
building. We really should assume that the host isn't sane. We should 
only trust its compiler far enough to build Binutils and a 
non-bootstrapped GCC.

Once we have a new binutils and gcc, then we should be able to build a 
usable and working Glibc, no matter what condition the host toolchain is 
in. How do we know that our new libc is good enough to use for our 
temporary tools, without setting up tools for running the testsuite? We 
can bootstrap GCC pass2.

If we are able to bootstrap GCC pass2, then we know we're golden. The 
libc is usable enough to create a solid set of tools, and the new 
compiler is built according to the upstream default and is solid enough 
to build our final libc. Also, we've relied upon the host system setup 
even less than we have up to now.

In any case, after our lengthy discussions on this list, and some 
testing of his own, Greg is looking at dropping bootstrapping entirely 
for DIY. See: 
http://www.diy-linux.org/pipermail/diy-linux-dev/2007-September/001116.html

We could do that as well, but part of me likes knowing that, at least 
once, we have built a compiler generally in the way intended by 
upstream, and we know that the temporary toolchain is solid enough for 
gcc to recreate itself.

Looking forward to comments.

--
JH
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to