Prechádzať zdrojové kódy

Moved GCC's bootstrap to pass 2.

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/jh/BOOK@8404 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Jeremy Huntwork 18 rokov pred
rodič
commit
cdaf9813ab

+ 9 - 0
chapter01/changelog.xml

@@ -36,6 +36,15 @@
     </listitem>
 -->
 
+     <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>

+ 12 - 8
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>
 

+ 8 - 26
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>

+ 6 - 2
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

+ 2 - 2
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}]" -->