public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* CFT: toplevel bootstrap (stage 2 project)
@ 2005-06-22 13:25 Paolo Bonzini
  2005-06-22 19:00 ` Giovanni Bajo
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Paolo Bonzini @ 2005-06-22 13:25 UTC (permalink / raw)
  To: gcc

So we are ready!  Please try this and let me know of any rough spots. 
I'll be on holiday from Friday 24th to July 4th, with no connectivity, 
but I will read my e-mail when I come back.

To recap, toplevel bootstrap has several aims, including:

1) simplifying the binary compatibility problems when you are 
bootstrapping GCC with a proprietary compiler, or maybe a very old GCC.

2) being able to fully bootstrap a toolchain, that is building 
assemblers, linkers and even tools such as bison and flex with the 
compiler that is in your tree.

3) in 4.2, it will allow removing an awful lot of hair from the gcc 
Makefile, for example the stageXYZ dangling links that the configure 
script creates in language subdirectories.  A small special casing for 
the current bootstrapping system had even percolated in gcc.c :-/

4) possibly it could be used to simplify the way libada and gnattools 
are built, by three-staging them as well.

Toplevel bootstrap is able to bootstrap a compiler with separate 
reconfigurations and rebuilds of libiberty/libcpp/gcc in all the three 
stages.  It is actually possible to bootstrap a whole toolchain, so that 
the final executable is built with the assembler and linker that are in 
a combined tree.

To enable toplevel bootstrap, just configure with --enable-bootstrap. 
Then, "make" will do more or less what "make bubblestrap" used to do: 
start from stage1, rebuild everything that had to be rebuilt, configure 
stage2 if it has not been configured yet, build stage2, and the same for 
stage3.  As mentioned, "rebuilding" is not limited to GCC: libiberty, 
libcpp, and other dependencies of GCC are all configured and compiled 
three times. It is the same as rebuilding a whole tree from scratch 
three times, each time using the previous build as the result.

It supports all the bells and whistles like bubblestraps and restageN, 
which help during development.  "make restrap" is not supported. "make 
restageN" is called "make all-stageN", and there is also "make 
all-stageN-gcc" to rebuild gcc only.

The idea is that just before or just after the end of stage2, I will 
post the obvious patch making --enable-bootstrap the default.  Then, 
"make" will just DTRT, bootstrapping whenever possible.  In 4.1, 
old-style bootstrap will still be available with "./configure 
--disable-bootstrap; make bootstrap" (non intuitive maybe, but in the 
long term, it would only be one more historic wart if the flag was 
called --{enable,disable}-toplevel-bootstrap).

"Lean" bootstraps are also supported, but they are enabled with 
--enable-bootstrap=lean rather than with special targets.

"make profiledbootstrap" works with the patch at 
http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01770.html.

Combined tree builds currently trigger warnings in binutils and ld, but 
you can use --disable-werror to try them.  A few weeks ago it worked, 
but this morning I tried a combined tree profiledbootstrap and it 
crashed while linking libstdc++. :-(  I have not yet investigated 
whether it is a profiledbootstrap miscompilation, or a genuine libbfd bug.

I see no regression on i686-pc-linux-gnu with toplevel bootstrap.

Paolo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-22 13:25 CFT: toplevel bootstrap (stage 2 project) Paolo Bonzini
@ 2005-06-22 19:00 ` Giovanni Bajo
  2005-06-23  7:27   ` Paolo Bonzini
  2005-06-24 23:11   ` Gerald Pfeifer
  2005-06-22 21:35 ` CFT: " Geoffrey Keating
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 10+ messages in thread
From: Giovanni Bajo @ 2005-06-22 19:00 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: gcc

Paolo Bonzini <bonzini@gnu.org> wrote:

> To recap, toplevel bootstrap has several aims, including:
>[...]

I suggest you to add this to the Wiki.

> To enable toplevel bootstrap, just configure with --enable-bootstrap.
> Then, "make" will do more or less what "make bubblestrap" used to do:

What does "./configure --enable-botstrap; make bootstrap" do?

> It supports all the bells and whistles like bubblestraps and restageN,
> which help during development.  "make restrap" is not supported. "make
> restageN" is called "make all-stageN", and there is also "make
> all-stageN-gcc" to rebuild gcc only.

It would help also if you add to the wiki explanation of what exactly all
these options do. Especially bubblestrap vs quickstrap vs restrap.

Thanks!
-- 
Giovanni Bajo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: CFT: toplevel bootstrap (stage 2 project)
  2005-06-22 13:25 CFT: toplevel bootstrap (stage 2 project) Paolo Bonzini
  2005-06-22 19:00 ` Giovanni Bajo
@ 2005-06-22 21:35 ` Geoffrey Keating
       [not found] ` <m364w3hei3.fsf@localhost.localdomain>
  2005-08-06 11:47 ` Joseph S. Myers
  3 siblings, 0 replies; 10+ messages in thread
From: Geoffrey Keating @ 2005-06-22 21:35 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: gcc


I haven't actually tried it, but it looks like the 'compare' rule tries
to compare every .o file in all the directories, which will surely
cause the same problems with stabs and assembly that is described in:

<http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00552.html>

and other related messages.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-22 19:00 ` Giovanni Bajo
@ 2005-06-23  7:27   ` Paolo Bonzini
  2005-06-24 23:11   ` Gerald Pfeifer
  1 sibling, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2005-06-23  7:27 UTC (permalink / raw)
  To: Giovanni Bajo, GCC Development


>What does "./configure --enable-botstrap; make bootstrap" do?
>  
>
The same as plain make.  bootstrap is the default target when 
--enable-bootstrap is given, and its behavior resembles a "bubblestrap" 
(see later) in the old system.

This removes the wart where "make" following a "make bootstrap" invoked 
a "quickstrap" and often caused comparison failures.  To the next topic...

> It would help also if you add to the wiki explanation of what exactly all
> these options do. Especially bubblestrap vs quickstrap vs restrap.

... bubblestrap rebuilds only changed files.  quickstrap rebuilds only 
the last stage.  restrap takes (took?) a non-bootstrap build, uses it as 
stage1, and then completes the bootstrap.

Paolo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-22 19:00 ` Giovanni Bajo
  2005-06-23  7:27   ` Paolo Bonzini
@ 2005-06-24 23:11   ` Gerald Pfeifer
  2005-06-28  9:43     ` Giovanni Bajo
  1 sibling, 1 reply; 10+ messages in thread
From: Gerald Pfeifer @ 2005-06-24 23:11 UTC (permalink / raw)
  To: Giovanni Bajo; +Cc: Paolo Bonzini, gcc

On Wed, 22 Jun 2005, Giovanni Bajo wrote:
> It would help also if you add to the wiki explanation of what exactly all
> these options do. Especially bubblestrap vs quickstrap vs restrap.

Why to the WIki??  This should be part of the regular documentation,
and if anything is to improve, the improvements should be made there
instead of having that on the Wiki (or, even worse, causing duplication).

Gerald

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-24 23:11   ` Gerald Pfeifer
@ 2005-06-28  9:43     ` Giovanni Bajo
  2005-06-28 13:27       ` Daniel Berlin
  0 siblings, 1 reply; 10+ messages in thread
From: Giovanni Bajo @ 2005-06-28  9:43 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Paolo Bonzini, gcc

Gerald Pfeifer <gerald@pfeifer.com> wrote:

>> It would help also if you add to the wiki explanation of what exactly all
>> these options do. Especially bubblestrap vs quickstrap vs restrap.
>
> Why to the WIki??  This should be part of the regular documentation,
> and if anything is to improve, the improvements should be made there
> instead of having that on the Wiki (or, even worse, causing duplication).


Well, because Wiki is more attractive to people writing documentation for
several reasons (faster than writing a HTML/TeX patch and submitting it for
review, etc.). Maybe we should think if we want to use the Wiki as our rapid
documentation prototyping: people could write documentation there for
review, be refined by others, and eventually converted to real TeX
documentation.
-- 
Giovanni Bajo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-28  9:43     ` Giovanni Bajo
@ 2005-06-28 13:27       ` Daniel Berlin
  2005-06-28 17:00         ` Giovanni Bajo
  0 siblings, 1 reply; 10+ messages in thread
From: Daniel Berlin @ 2005-06-28 13:27 UTC (permalink / raw)
  To: Giovanni Bajo; +Cc: Gerald Pfeifer, Paolo Bonzini, gcc

On Tue, 2005-06-28 at 11:43 +0200, Giovanni Bajo wrote:
> Gerald Pfeifer <gerald@pfeifer.com> wrote:
> 
> >> It would help also if you add to the wiki explanation of what exactly all
> >> these options do. Especially bubblestrap vs quickstrap vs restrap.
> >
> > Why to the WIki??  This should be part of the regular documentation,
> > and if anything is to improve, the improvements should be made there
> > instead of having that on the Wiki (or, even worse, causing duplication).
> 
> 
> Well, because Wiki is more attractive to people writing documentation for
> several reasons (faster than writing a HTML/TeX patch and submitting it for
> review, etc.). Maybe we should think if we want to use the Wiki as our rapid
> documentation prototyping: people could write documentation there for
> review, be refined by others, and eventually converted to real TeX
> documentation.

This is what i did with the decl hierarchy documentation i submitted as
part of the decl cleanup patch.

The Texinfo version took significantly longer than the wiki portion, but
it was mainly just mechanical formatting, etc, where wiki knows what to
do automatically or with a trivial command and Texinfo doesn't.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: toplevel bootstrap (stage 2 project)
  2005-06-28 13:27       ` Daniel Berlin
@ 2005-06-28 17:00         ` Giovanni Bajo
  0 siblings, 0 replies; 10+ messages in thread
From: Giovanni Bajo @ 2005-06-28 17:00 UTC (permalink / raw)
  To: Daniel Berlin; +Cc: Gerald Pfeifer, Paolo Bonzini, gcc

Daniel Berlin <dberlin@dberlin.org> wrote:

>> Well, because Wiki is more attractive to people writing
>> documentation for several reasons (faster than writing a HTML/TeX
>> patch and submitting it for review, etc.). Maybe we should think if
>> we want to use the Wiki as our rapid documentation prototyping:
>> people could write documentation there for review, be refined by
>> others, and eventually converted to real TeX documentation.
>
> This is what i did with the decl hierarchy documentation i submitted
> as part of the decl cleanup patch.
>
> The Texinfo version took significantly longer than the wiki portion,
> but it was mainly just mechanical formatting, etc, where wiki knows what
> to do automatically or with a trivial command and Texinfo doesn't.

I believe we could conceive something to convert raw wiki text into texinfo
with our commands. It would handle the boring part of the conversion.

Giovanni Bajo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: CFT: toplevel bootstrap (stage 2 project)
       [not found] ` <m364w3hei3.fsf@localhost.localdomain>
@ 2005-07-05  9:58   ` Paolo Bonzini
  0 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2005-07-05  9:58 UTC (permalink / raw)
  To: tromey, GCC Development


>How difficult do you think this will be with the new toplevel
>bootstrap?
>  
>
Make gcjx depend on libstdc++-v3, and add "bootstrap=true" to both in 
Makefile.def.  In cp/Make-lang.in, set boot_language=yes.  It should 
just work.

Paolo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: CFT: toplevel bootstrap (stage 2 project)
  2005-06-22 13:25 CFT: toplevel bootstrap (stage 2 project) Paolo Bonzini
                   ` (2 preceding siblings ...)
       [not found] ` <m364w3hei3.fsf@localhost.localdomain>
@ 2005-08-06 11:47 ` Joseph S. Myers
  3 siblings, 0 replies; 10+ messages in thread
From: Joseph S. Myers @ 2005-08-06 11:47 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: gcc

On Wed, 22 Jun 2005, Paolo Bonzini wrote:

> The idea is that just before or just after the end of stage2, I will post the
> obvious patch making --enable-bootstrap the default.  Then, "make" will just

Is this switch to toplevel bootstrap as default still planned for 4.1?

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2005-08-06 11:47 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-06-22 13:25 CFT: toplevel bootstrap (stage 2 project) Paolo Bonzini
2005-06-22 19:00 ` Giovanni Bajo
2005-06-23  7:27   ` Paolo Bonzini
2005-06-24 23:11   ` Gerald Pfeifer
2005-06-28  9:43     ` Giovanni Bajo
2005-06-28 13:27       ` Daniel Berlin
2005-06-28 17:00         ` Giovanni Bajo
2005-06-22 21:35 ` CFT: " Geoffrey Keating
     [not found] ` <m364w3hei3.fsf@localhost.localdomain>
2005-07-05  9:58   ` Paolo Bonzini
2005-08-06 11:47 ` Joseph S. Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).