aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Huntwork <jhuntwork@linuxfromscratch.org>2007-10-07 01:57:26 +0000
committerJeremy Huntwork <jhuntwork@linuxfromscratch.org>2007-10-07 01:57:26 +0000
commitcdaf9813abba50323a1658a58967f9966114baf9 (patch)
tree754c809ede984266319a02a7fe4ead13739e804e
parent8c3423002cbf21db4016d4044f8d6441752f996a (diff)
Moved GCC's bootstrap to pass 2.
git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/jh/BOOK@8404 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r--chapter01/changelog.xml9
-rw-r--r--chapter05/gcc-pass1.xml20
-rw-r--r--chapter05/gcc-pass2.xml34
-rw-r--r--chapter06/gcc.xml8
-rw-r--r--general.ent4
5 files changed, 37 insertions, 38 deletions
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 1b2ed4583..cddd36e65 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -37,6 +37,15 @@
-->
<listitem>
+ <para>2007-10-06</para>
+ <itemizedlist>
+ <listitem>
+ <para>[jhuntwork] - Moved GCC's bootstrap to pass 2.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
<para>2007-10-05</para>
<itemizedlist>
<listitem>
diff --git a/chapter05/gcc-pass1.xml b/chapter05/gcc-pass1.xml
index cf3d9f14e..78fe83afb 100644
--- a/chapter05/gcc-pass1.xml
+++ b/chapter05/gcc-pass1.xml
@@ -53,7 +53,8 @@ cd ../gcc-build</userinput></screen>
<screen><userinput remap="configure">CC="gcc -B/usr/bin/" ../gcc-&gcc-version;/configure --prefix=/tools \
--with-local-prefix=/tools --disable-nls --disable-shared \
- --enable-languages=c --disable-multilib</userinput></screen>
+ --enable-languages=c --disable-multilib \
+ --disable-bootstrap</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
@@ -102,15 +103,18 @@ cd ../gcc-build</userinput></screen>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><parameter>--disable-bootstrap</parameter></term>
+ <listitem>
+ <para>Bootstrapping the compiler is now the default for GCC. However,
+ bootstrapping now would mean using our new Binutils to link against
+ the host's libc, which in some cases produces unexpected results.</para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
- <para>The following command will compile GCC not once, but several times. It
- uses the programs compiled in a first round to compile itself a second time,
- and then again a third time. It then compares these second and third compiles
- to make sure it can reproduce itself flawlessly. This is called
- <quote>bootstrapping</quote>. Building GCC in this way ensures that it was
- compiled correctly and is now the default configuration for the released
- package. Continue with compiling by running:</para>
+ <para>Continue with compiling by running:</para>
<screen><userinput remap="make">make</userinput></screen>
diff --git a/chapter05/gcc-pass2.xml b/chapter05/gcc-pass2.xml
index 83f59578d..ba3dfb97d 100644
--- a/chapter05/gcc-pass2.xml
+++ b/chapter05/gcc-pass2.xml
@@ -80,16 +80,6 @@ Ask your system administrator to create more.</computeroutput></screen>
<screen><userinput remap="pre">cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig &gt; gcc/Makefile.in</userinput></screen>
- <para>The bootstrap build performed in <xref linkend="ch-tools-gcc-pass1"/>
- built GCC with the <option>-fomit-frame-pointer</option> compiler flag.
- Non-bootstrap builds omit this flag by default, so apply the following
- <command>sed</command> to use it in order to ensure consistent compiler
- builds:</para>
-
-<screen><userinput remap="pre">cp -v gcc/Makefile.in{,.tmp}
-sed 's/^XCFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in.tmp \
- &gt; gcc/Makefile.in</userinput></screen>
-
<para>The following command will change the location of GCC's default
dynamic linker to use the one we installed in
<filename class="directory">/tools</filename>. It also removes <filename
@@ -146,8 +136,7 @@ cd ../gcc-build</userinput></screen>
--with-local-prefix=/tools --enable-clocale=gnu \
--enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-languages=c,c++ \
- --disable-libstdcxx-pch --disable-multilib \
- --disable-bootstrap</userinput></screen>
+ --disable-libstdcxx-pch --disable-multilib</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
@@ -202,25 +191,18 @@ cd ../gcc-build</userinput></screen>
</listitem>
</varlistentry>
- <varlistentry>
- <term><parameter>--disable-bootstrap</parameter></term>
- <listitem>
- <para>Bootstrapping the compiler is now the default for GCC. However,
- our build method should provide us with a solid compiler without the
- need to bootstrap each time.</para>
- </listitem>
- </varlistentry>
-
</variablelist>
- <para>Compile the package:</para>
+ <para>The following command will compile GCC not once, but several times. It
+ uses the programs compiled in a first round to compile itself a second time,
+ and then again a third time. It then compares these second and third compiles
+ to make sure it can reproduce itself flawlessly. This is called
+ <quote>bootstrapping</quote>. Building GCC in this way ensures that it was
+ compiled correctly and is now the default configuration for the released
+ package. Continue with compiling by running:</para>
<screen><userinput remap="make">make</userinput></screen>
- <para>There is no need to use the <parameter>bootstrap</parameter> target
- now because the compiler being used to compile this GCC was built from
- the exact same version of the GCC sources used earlier.</para>
-
<para>Compilation is now complete. As previously mentioned, running the test
suites for the temporary tools compiled in this chapter is not mandatory.
To run the GCC test suite anyway, use the following command:</para>
diff --git a/chapter06/gcc.xml b/chapter06/gcc.xml
index 9f783f8d1..9f6c01e60 100644
--- a/chapter06/gcc.xml
+++ b/chapter06/gcc.xml
@@ -48,13 +48,17 @@
<screen><userinput remap="pre">sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in</userinput></screen>
- <para>The bootstrap build performed in <xref linkend="ch-tools-gcc-pass1"/>
+ <para>For x86 machines, the bootstrap build performed in
+ <xref linkend="ch-tools-gcc-pass2"/>
built GCC with the <option>-fomit-frame-pointer</option> compiler flag.
Non-bootstrap builds omit this flag by default, so apply the following
<command>sed</command> to use it in order to ensure consistent compiler
builds:</para>
-<screen><userinput remap="pre">sed -i 's/^XCFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in</userinput></screen>
+<screen><userinput remap="pre">case `uname -m` in
+ i?86) sed -i 's/^XCFLAGS =$/&amp; -fomit-frame-pointer/' \
+ gcc/Makefile.in ;;
+esac</userinput></screen>
<para>The <command>fixincludes</command> script is known to occasionally
erroneously attempt to &quot;fix&quot; the system headers installed so far. As
diff --git a/general.ent b/general.ent
index b6c0002d8..7c2c1f857 100644
--- a/general.ent
+++ b/general.ent
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!ENTITY version "SVN-JH-20071005">
-<!ENTITY releasedate "October 5, 2007">
+<!ENTITY version "SVN-JH-20071006">
+<!ENTITY releasedate "October 6, 2007">
<!ENTITY milestone "7.0">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->