Browse Source

Moved gcc's bootstrap in the jh branch back to pass 1

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/jh/BOOK@8674 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Jeremy Huntwork 17 years ago
parent
commit
8f54b5acaf
3 changed files with 40 additions and 19 deletions
  1. 11 1
      chapter01/changelog.xml
  2. 7 10
      chapter05/gcc-pass1.xml
  3. 22 8
      chapter05/gcc-pass2.xml

+ 11 - 1
chapter01/changelog.xml

@@ -37,6 +37,17 @@
 
 -->
 
+    <listitem>
+      <para>2008-10-19</para>
+      <itemizedlist>
+        <listitem>
+          <para>[jhuntwork] - Move GCC's bootstrap back to pass 1 to correspond more closely
+	  with trunk. Cross compilation methods in the future can address the issues originally
+	  bypassed by moving the bootstrap to pass 2.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
     <listitem>
       <para>2008-10-18</para>
       <itemizedlist>
@@ -48,7 +59,6 @@
       </itemizedlist>
     </listitem>
 
-
     <listitem>
       <para>2008-10-15</para>
       <itemizedlist>

+ 7 - 10
chapter05/gcc-pass1.xml

@@ -112,18 +112,15 @@ 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>Continue with compiling by running:</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>
 

+ 22 - 8
chapter05/gcc-pass2.xml

@@ -80,6 +80,16 @@ 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,7 +156,8 @@ 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</userinput></screen>
+    --disable-libstdcxx-pch --disable-multilib \
+    --disable-bootstrap</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure options:</title>
@@ -201,15 +212,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>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>Compile the package:</para>
 
 <screen><userinput remap="make">make</userinput></screen>