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
This commit is contained in:
Bruce Dubbs 2014-05-11 21:58:56 +00:00
parent f6fe5000d7
commit 6206f72d67
8 changed files with 42 additions and 15 deletions

View File

@ -38,6 +38,11 @@
<listitem>
<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>
@ -45,8 +50,8 @@
<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>

View File

@ -238,6 +238,9 @@
<listitem>
<para>&bc-memory-leak-patch;</para>
</listitem>
<listitem>
<para>&binutils-lto-patch;</para>
</listitem>
<listitem>
<para>&coreutils-shuf-segfault-patch;</para>
</listitem>

View File

@ -34,6 +34,14 @@
</listitem>
</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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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}]" -->

View File

@ -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">