> As far as I know, toolchain is built in this order:
>
> 1. binutils
> 2. C compiler
> 3. libc

No.

That usually only works if you already have the toolchain installed. In which 
case ordering is irelevant, you can just build whichever component you want 
to update.

A full bootstrap process looks more like:

1) Binutils
2) Whatever bits of compiler are required to produce...
3) libc headers
4) A basic C compiler+libgcc that is sufficient to build...
5) libc
6) A full compiler+runtime, c++, fortran, etc.

The exact details of steps 2-4 are rather murky (see also crostool).  gcc 
needs libc headers to build its runtime libraries, and the C library needs a 
working gcc to build, so you've got a bootstrapping problem. The trick is 
getting the right set of partial builds/configure options to break this 
cyclic dependency.

Toplevel libgcc actually makes this easier to achieve, though there may still 
be some work to do.  The failures you're seeing probably mean your previous 
toolchains were misconfigured, and worked mainly by chance.

Paul

Reply via email to