aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Dubbs <bdubbs@linuxfromscratch.org>2014-05-11 21:58:56 +0000
committerBruce Dubbs <bdubbs@linuxfromscratch.org>2014-05-11 21:58:56 +0000
commit6206f72d670d6b9de52f40e3dc54648d08146801 (patch)
tree02b5539f734d2fbe87d583789ca368b579fcfa92
parentf6fe5000d71afe93a210ee5e0976fac1a114c03f (diff)
Add a patch to binutils to enable LTO with gcc-4.9.0.
Remove omit-frame-pointer in gcc-pass2 and Chapter 6 gcc. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10561 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r--chapter01/changelog.xml9
-rw-r--r--chapter01/whatsnew.xml3
-rw-r--r--chapter03/patches.xml8
-rw-r--r--chapter05/gcc-pass2.xml6
-rw-r--r--chapter06/binutils.xml11
-rw-r--r--chapter06/gcc.xml12
-rw-r--r--general.ent4
-rw-r--r--patches.ent4
8 files changed, 42 insertions, 15 deletions
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index d83a3156c..2acc8b345 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,14 +39,19 @@
<para>2014-05-11</para>
<itemizedlist>
<listitem>
+ <para>[bdubbs] - Add a patch to binutils to enable LTO
+ with gcc-4.9.0. Fixes
+ <ulink url="&lfs-ticket-root;3569">#3569</ulink>.</para>
+ </listitem>
+ <listitem>
<para>[bdubbs] - Update bootscripts for eudev.</para>
</listitem>
<listitem>
<para>[bdubbs] - Add gcc patch for upstream changes.</para>
</listitem>
<listitem>
- <para>[bdubbs] - Change explanation for using
- omit-frame-pointer in gcc-pass2. Fixes
+ <para>[bdubbs] - Remove omit-frame-pointer in gcc-pass2
+ and Chapter 6 gcc. Fixes
<ulink url="&lfs-ticket-root;3562">#3562</ulink>.</para>
</listitem>
</itemizedlist>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index 734811852..0c0e6c336 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -239,6 +239,9 @@
<para>&bc-memory-leak-patch;</para>
</listitem>
<listitem>
+ <para>&binutils-lto-patch;</para>
+ </listitem>
+ <listitem>
<para>&coreutils-shuf-segfault-patch;</para>
</listitem>
<!--<listitem>
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 260f09a87..27c23a6f2 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -35,6 +35,14 @@
</varlistentry>
<varlistentry>
+ <term>Binutils LTO Patch - <token>&binutils-lto-patch-size;</token>:</term>
+ <listitem>
+ <para>Download: <ulink url="&patches-root;&binutils-lto-patch;"/></para>
+ <para>MD5 sum: <literal>&binutils-lto-patch-md5;</literal></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>Bzip2 Documentation Patch - <token>&bzip2-docs-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&bzip2-docs-patch;"/></para>
diff --git a/chapter05/gcc-pass2.xml b/chapter05/gcc-pass2.xml
index ce24a3867..27c411306 100644
--- a/chapter05/gcc-pass2.xml
+++ b/chapter05/gcc-pass2.xml
@@ -57,15 +57,15 @@
<screen><userinput remap="pre">cat gcc/limitx.h gcc/glimits.h gcc/limity.h &gt; \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h</userinput></screen>
-
+<!--
<para>For x86 machines, the limited number of registers is a bottleneck
- for the system. Free one up by not using a fram pointer that is not
+ for the system. Free one up by not using a frame pointer that is not
needed:</para>
<screen><userinput remap="pre">case `uname -m` in
i?86) sed -i 's/^T_CFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in ;;
esac</userinput></screen>
-
+-->
<para>Once again, change the location of GCC's default dynamic linker to
use the one installed in <filename
class="directory">/tools</filename>.</para>
diff --git a/chapter06/binutils.xml b/chapter06/binutils.xml
index ae8aff092..8daeb5616 100644
--- a/chapter06/binutils.xml
+++ b/chapter06/binutils.xml
@@ -64,6 +64,11 @@ Ask your system administrator to create more.</computeroutput></screen>
<screen><userinput remap="pre">rm -fv etc/standards.info
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in</userinput></screen>
+ <para>Add an upstream patch to use gcc's link time optimization (LTO)
+ the default:</para>
+
+<screen><userinput remap="pre">patch -Np1 -i ../&binutils-lto-patch;</userinput></screen>
+
<para>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
@@ -114,15 +119,9 @@ cd ../binutils-build</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
-<!--
- <para>Install the <filename class="headerfile">libiberty</filename> header
- file that is needed by some packages:</para>
-<screen><userinput remap="install">cp -v ../binutils-&binutils-version;/include/libiberty.h /usr/include</userinput></screen>
--->
</sect2>
-
<sect2 id="contents-binutils" role="content">
<title>Contents of Binutils</title>
diff --git a/chapter06/gcc.xml b/chapter06/gcc.xml
index 7c92ccf28..c1434e7e3 100644
--- a/chapter06/gcc.xml
+++ b/chapter06/gcc.xml
@@ -45,7 +45,7 @@
programs to fail:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-patch;</userinput></screen>
-
+<!--
<para>As in <xref linkend="ch-tools-gcc-pass2"/>, apply the following
<command>sed</command> to force the build to use the
<option>-fomit-frame-pointer</option> compiler flag in order to ensure
@@ -54,7 +54,7 @@
<screen><userinput remap="pre">case `uname -m` in
i?86) sed -i 's/^T_CFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in ;;
esac</userinput></screen>
-
+-->
<para>The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:</para>
@@ -150,6 +150,14 @@ cd ../gcc-build</userinput></screen>
<screen><userinput remap="install">ln -sv gcc /usr/bin/cc</userinput></screen>
+ <para>Add a compatibility symlink to enable building programs with
+ Link Time Optimization (LTO):</para>
+
+<screen><userinput remap="install">install -dm755 /usr/lib/bfd-plugins
+pushd /usr/lib/bfd-plugins
+ln -sfv ../../libexec/gcc/x86_64-unknown-linux-gnu/&gcc-version;/liblto_plugin.so
+popd</userinput></screen>
+
<para>Now that our final toolchain is in place, it is important to again ensure
that compiling and linking will work as expected. We do this by performing
the same sanity checks as we did earlier in the chapter:</para>
diff --git a/general.ent b/general.ent
index b11a284a4..7c4afa17f 100644
--- a/general.ent
+++ b/general.ent
@@ -1,6 +1,6 @@
-<!ENTITY version "SVN-20140510">
+<!ENTITY version "SVN-20140511">
<!ENTITY short-version "svn"> <!-- Used in dbus chapter, change to x.y for release -->
-<!ENTITY releasedate "May 10, 2014">
+<!ENTITY releasedate "May 11, 2014">
<!ENTITY copyrightdate "1999-2014"><!-- jhalfs needs a literal dash, not &ndash; -->
<!ENTITY milestone "8.0">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
diff --git a/patches.ent b/patches.ent
index 20cb11d5a..32d66f6f0 100644
--- a/patches.ent
+++ b/patches.ent
@@ -6,6 +6,10 @@
<!ENTITY bash-fixes-patch-md5 "749b4b520708300b64f8166ba2b1b4a0">
<!ENTITY bash-fixes-patch-size "14 KB">
+<!ENTITY binutils-lto-patch "binutils-&binutils-version;-load_gcc_lto_plugin_by_default-1.patch">
+<!ENTITY binutils-lto-patch-md5 "48e4e96a60bfed41804aaecf4944f5d9">
+<!ENTITY binutils-lto-patch-size "2.0 KB">
+
<!ENTITY bc-memory-leak-patch "bc-&bc-version;-memory_leak-1.patch">
<!ENTITY bc-memory-leak-patch-md5 "877e81fba316fe487ec23501059d54b8">
<!ENTITY bc-memory-leak-patch-size "1.4 KB">