aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/binutils-pass2.xml
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@mengyan1223.wang>2022-02-10 20:13:21 +0800
committerXi Ruoyao <xry111@mengyan1223.wang>2022-02-10 21:05:33 +0800
commit426913ea08640343690e423fa521392d44595a9c (patch)
tree27cbad01299a49bdd13bdbbd785576fead8b4b3e /chapter06/binutils-pass2.xml
parentb35ab48b26143c7dffdb101d98bf62cdad7451ee (diff)
binutils-pass2: workaround "binaries link to host libraries" issue
A very old libtool copy (2009-11-29) is shipped in binutils tarball. It does not support sysroot, so the cross-built binutils binaries may link to libraries from the host distro, if certain libraries are available. The ideal solution should be updating libtool, as libtool-2.4.6 (in LFS) has sysroot support. However, updating libtool for binutils is not trivial: it would require to rerun autoconf and binutils building system sticks to autoconf-2.69. Another issue is the sysroot support for libtool has introduced a configure option "--with-sysroot", which conflicts with an already existing option with the same name in GCC and binutils building system (we are using the GCC/binutils version of --with-sysroot in chapter 5). GCC building system has --with-build-sysroot (we are using this for GCC pass 2) for this issue. Binutils copied GCC building system, but it does not respect --with-build-sysroot. So for now we just edit libtool code to prevent "-L/usr/lib" in $LFS_TGT_gcc command line. It should fix the issue about host libiberty (reported in #lfs-support) as well, but it still need to be confirmed by someone having such a host. Tested with a jhalfs run on LFS.
Diffstat (limited to 'chapter06/binutils-pass2.xml')
-rw-r--r--chapter06/binutils-pass2.xml16
1 files changed, 10 insertions, 6 deletions
diff --git a/chapter06/binutils-pass2.xml b/chapter06/binutils-pass2.xml
index 414d782b3..e55bcf92b 100644
--- a/chapter06/binutils-pass2.xml
+++ b/chapter06/binutils-pass2.xml
@@ -43,6 +43,14 @@
<sect2 role="installation">
<title>Installation of Binutils</title>
+ <!-- Don't remove this until Binutils upstream updates the libtool
+ copy. On some host distros the issue doesn't show up. -->
+ <para>Binutils ships an outdated libtool copy in the tarball. It lacks
+ sysroot support so the produced binaries will be mistakenly linked to
+ libraries from the host distro. Workaround this issue:</para>
+
+<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
+
<para>Create a separate build directory again:</para>
<screen><userinput remap="pre">mkdir -v build
@@ -85,13 +93,9 @@ cd build</userinput></screen>
<screen><userinput remap="make">make</userinput></screen>
- <para>Install the package, and
- workaround an issue causing
- <filename class="libraryfile">libctf.so</filename>
- to link against zlib from the host distribution:</para>
+ <para>Install the package:</para>
-<screen><userinput remap="install">make DESTDIR=$LFS install
-install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib</userinput></screen>
+<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
</sect2>