Index: Makefile
===================================================================
--- Makefile	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ Makefile	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -35,4 +35,17 @@
 endif
 
+ifndef ARCH
+  ARCH = default
+endif
+ifneq ($(ARCH), default)
+  ifneq ($(ARCH), ml_32)
+    ifneq ($(ARCH), ml_x32)
+      ifneq ($(ARCH), ml_all)
+        $(error ARCH must be either 'default' (default if unset), 'ml_32', 'ml_x32' or 'ml_all'.)
+      endif
+    endif
+  endif
+endif
+
 book: validate profile-html
 	@echo "Generating chunked XHTML files at $(BASEDIR)/ ..."
@@ -130,4 +143,5 @@
                 --output $(RENDERTMP)/lfs-html2.xml   \
                 --stringparam profile.revision $(REV) \
+                --stringparam profile.arch $(ARCH)    \
                 stylesheets/lfs-xsl/profile.xsl       \
                 index.xml
@@ -183,4 +197,5 @@
 	$(Q)xsltproc --nonet --xinclude                   \
                 --stringparam profile.revision $(REV) \
+                --stringparam profile.arch $(ARCH)    \
                 --output $(RENDERTMP)/md5sum.xml      \
                 stylesheets/lfs-xsl/profile.xsl       \
Index: chapter01/askforhelp.xml
===================================================================
--- chapter01/askforhelp.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter01/askforhelp.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -61,5 +61,5 @@
     <itemizedlist>
       <listitem>
-        <para>The version of the book being used (in this case &version;)</para>
+        <para>The version of the book being used (in this case &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase>)</para>
       </listitem>
       <listitem>
@@ -76,5 +76,5 @@
       </listitem>
       <listitem>
-        <para>Note whether you have deviated from the book at all </para>
+        <para>Note whether you have deviated from the book at all</para>
       </listitem>
     </itemizedlist>
Index: chapter01/changelog.xml
===================================================================
--- chapter01/changelog.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter01/changelog.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -11,5 +11,5 @@
   <title>Changelog</title>
 
-  <para>This is version &version; of the Linux From Scratch book, dated
+  <para>This is version &version;<phrase arch="ml_32,ml_x32,ml_all">&version;-multilib</phrase> of the Linux From Scratch book, dated
   &releasedate;. If this book is more than six months old, a newer and better
   version is probably already available. To find out, please check one of the
Index: chapter02/hostreqs.xml
===================================================================
--- chapter02/hostreqs.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter02/hostreqs.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -265,4 +265,25 @@
 bash version-check.sh</userinput></screen>
 
- </sect2>
+    <para arch="ml_32,ml_x32,ml_all">
+      Building multilib support requires the kernel of the host system
+      to have 32-bit emulation support included.
+    </para>
+<screen arch="ml_32,ml_x32,ml_all">Binary Emulations  ---&gt;
+    [*] IA32 Emulation
+    &lt;M&gt;   IA32 a.out support
+    [*] x32 ABI for 64-bit mode
+</screen>
+
+    <para arch="ml_32,ml_x32,ml_all">The option 'IA32 a.out support' is
+      optional. In case your kernel does not have 'x32 ABI for 64-bit mode'
+      enabled but only 'IA32 Emulation', you can continue to build your
+      system but you have to leave out any sections showing instructions
+      for building x32 objects. If neither 'IA32 Emulation' nor 
+      'x32 ABI for 64-bit mode' is enabled, you will run in errors 
+      latest when building <application>glibc</application> in Chapter 6,
+      so an upgrade of your host system kernel is required.
+    </para>
+    
+  </sect2>
+
 </sect1>
Index: chapter03/packages.xml
===================================================================
--- chapter03/packages.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter03/packages.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -378,4 +378,13 @@
 
     <varlistentry>
+      <term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&isl-home;"/></para>
+        <para>Download: <ulink url="&isl-url;"/></para>
+        <para>MD5 sum: <literal>&isl-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
       <listitem>
Index: chapter04/addinguser.xml
===================================================================
--- chapter04/addinguser.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter04/addinguser.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -85,4 +85,7 @@
   x86_64) chown -v lfs $LFS/lib64 ;;
 esac</userinput></screen>
+<screen arch="ml_32"  ><userinput>chown -v lfs $LFS/lib32</userinput></screen>
+<screen arch="ml_x32" ><userinput>chown -v lfs $LFS/libx32</userinput></screen>
+<screen arch="ml_all" ><userinput>chown -v lfs $LFS/{lib32,libx32}</userinput></screen>
 
 <note><para>In some host systems, the following <command>su</command> command does not complete
Index: chapter04/creatingminlayout.xml
===================================================================
--- chapter04/creatingminlayout.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter04/creatingminlayout.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -31,4 +31,11 @@
   x86_64) mkdir -pv $LFS/lib64 ;;
 esac</userinput></screen>
+<screen arch="ml_32"><userinput>mkdir -pv $LFS/usr/lib32
+ln -sv usr/lib32 $LFS/lib32</userinput></screen>
+<screen arch="ml_x32"><userinput>mkdir -pv $LFS/usr/libx32
+ln -sv usr/libx32 $LFS/libx32</userinput></screen>
+<screen arch="ml_all"><userinput>mkdir -pv $LFS/usr/lib{,x}32
+ln -sv usr/lib32 $LFS/lib32
+ln -sv usr/libx32 $LFS/libx32</userinput></screen>
 
   <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
Index: chapter04/settingenviron.xml
===================================================================
--- chapter04/settingenviron.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter04/settingenviron.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -39,5 +39,5 @@
   <filename>.bashrc</filename> file now:</para>
 
-<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
+<screen arch="default"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
 <literal>set +h
 umask 022
@@ -50,4 +50,18 @@
 CONFIG_SITE=$LFS/usr/share/config.site
 export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</literal>
+EOF</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
+<literal>set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=x86_64-lfs-linux-gnu
+LFS_TGT32=i686-lfs-linux-gnu
+LFS_TGTX32=x86_64-lfs-linux-gnux32
+PATH=/usr/bin
+if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
+PATH=$LFS/tools/bin:$PATH
+CONFIG_SITE=$LFS/usr/share/config.site
+export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH</literal>
 EOF</userinput></screen>
 
Index: chapter05/binutils-pass1.xml
===================================================================
--- chapter05/binutils-pass1.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter05/binutils-pass1.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -71,5 +71,5 @@
     <para>Now prepare Binutils for compilation:</para>
 
-    <screen><userinput remap="configure">../configure --prefix=$LFS/tools \
+    <screen arch="default"><userinput remap="configure">../configure --prefix=$LFS/tools \
              --with-sysroot=$LFS \
              --target=$LFS_TGT   \
@@ -77,4 +77,11 @@
              --enable-gprofng=no \
              --disable-werror</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=$LFS/tools       \
+             --with-sysroot=$LFS \
+             --target=$LFS_TGT   \
+             --disable-nls       \
+             --enable-gprofng=no \
+             --disable-werror    \
+             --enable-multilib</userinput></screen>
 
     <variablelist>
@@ -133,4 +140,11 @@
       </varlistentry>
 
+      <varlistentry arch="ml_32,ml_x32,ml_all">
+        <term><parameter>--enable-multilib</parameter></term>
+        <listitem>
+          <para>Enables multilib support.</para>
+        </listitem>
+      </varlistentry>
+
     </variablelist>
 
Index: chapter05/gcc-pass1.xml
===================================================================
--- chapter05/gcc-pass1.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter05/gcc-pass1.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -63,8 +63,8 @@
 mv -v mpc-&mpc-version; mpc</userinput></screen>
 
-    <para>On x86_64 hosts, set the default directory name for
+    <para arch="default">On x86_64 hosts, set the default directory name for
     64-bit libraries to <quote>lib</quote>:</para>
 
-<screen><userinput remap="pre">case $(uname -m) in
+<screen arch="default"><userinput remap="pre">case $(uname -m) in
   x86_64)
     sed -e '/m64=/s/lib64/lib/' \
@@ -73,4 +73,12 @@
 esac</userinput></screen>
 
+    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for
+    libraries:</para>
+
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
+    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
+    -i.orig gcc/config/i386/t-linux64
+</userinput></screen>
+
     <para>The GCC documentation recommends building GCC
     in a dedicated build directory:</para>
@@ -81,5 +89,5 @@
     <para>Prepare GCC for compilation:</para>
 
-<screen><userinput remap="configure">../configure                  \
+<screen arch="default"><userinput remap="configure">../configure                  \
     --target=$LFS_TGT         \
     --prefix=$LFS/tools       \
@@ -101,4 +109,31 @@
     --disable-libstdcxx       \
     --enable-languages=c,c++</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure" 
+    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
+    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
+    arch="ml_all">mlist=m64,m32,mx32</userinput>
+<userinput remap="configure">../configure                  \
+    --target=$LFS_TGT                              \
+    --prefix=$LFS/tools                            \
+    --with-glibc-version=&glibc-version;                      \
+    --with-sysroot=$LFS                            \
+    --with-newlib                                  \
+    --without-headers                              \
+    --enable-default-pie                           \
+    --enable-default-ssp                           \
+    --enable-initfini-array                        \
+    --disable-nls                                  \
+    --disable-shared                               \
+    --enable-multilib --with-multilib-list=$mlist  \
+    --disable-decimal-float                        \
+    --disable-threads                              \
+    --disable-libatomic                            \
+    --disable-libgomp                              \
+    --disable-libquadmath                          \
+    --disable-libssp                               \
+    --disable-libvtv                               \
+    --disable-libstdcxx                            \
+    --enable-languages=c,c++</userinput></screen>
+
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -157,9 +192,16 @@
       </varlistentry>
 
-      <varlistentry>
+      <varlistentry arch="default">
         <term><parameter>--disable-multilib</parameter></term>
         <listitem>
           <para>On x86_64, LFS does not support a multilib configuration.
           This switch is harmless for x86.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry arch="ml_32,ml_x32,ml_all">
+        <term><parameter>--enable-multilib --with-multilib-list=...</parameter></term>
+        <listitem>
+          <para>LFS canbe used to support multilib. Which they are is
+          specified in the multilib list.</para>
         </listitem>
       </varlistentry>
Index: chapter05/glibc.xml
===================================================================
--- chapter05/glibc.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter05/glibc.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -48,5 +48,5 @@
     operation of the dynamic library loader:</para>
 
-<screen><userinput remap="pre">case $(uname -m) in
+<screen arch="default"><userinput remap="pre">case $(uname -m) in
     i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
     ;;
@@ -55,4 +55,7 @@
     ;;
 esac</userinput></screen>
+<!-- no ld-linux.so.2 here as multilib is based on x86_64, not on i686 -->
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
+ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen>
 
     <note>
@@ -86,5 +89,5 @@
     <para>Next, prepare Glibc for compilation:</para>
 
-<screen><userinput remap="configure">../configure                             \
+<screen arch="default"><userinput remap="configure">../configure                             \
       --prefix=/usr                      \
       --host=$LFS_TGT                    \
@@ -94,4 +97,12 @@
       --disable-nscd                     \
       libc_cv_slibdir=/usr/lib</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGT                    \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=&min-kernel;                \
+      --with-headers=$LFS/usr/include    \
+      --enable-multi-arch                \
+      libc_cv_slibdir=/usr/lib</userinput></screen>
 
     <variablelist>
@@ -213,5 +224,5 @@
 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
 
-      <para>Note that for 32-bit machines, the interpreter name will be
+      <para arch="default">Note that for 32-bit machines, the interpreter name will be
       <filename>/lib/ld-linux.so.2</filename>.</para>
 
@@ -241,4 +252,146 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all">
+    <title>Building Glibc - 32bit</title>
+
+    <para>Now recompile for m32. The extracted source can be
+    reused but needs to be cleaned before installing the m32
+    version of Glibc.</para>
+
+    <para>Clear the build directory and remove artefacts from
+    previous build:</para>
+      
+<screen><userinput remap="pre">make clean
+find .. -name "*.a" -delete</userinput></screen>
+
+    <para>Configure Glibc for m32 with the following commands:</para>
+
+<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
+CXX="$LFS_TGT-g++ -m32" \
+../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGT32                  \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=&min-kernel;                \
+      --with-headers=$LFS/usr/include    \
+      --enable-multi-arch                \
+      --libdir=/usr/lib32                \
+      --libexecdir=/usr/lib32            \
+      libc_cv_slibdir=/usr/lib32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -a DESTDIR/usr/lib32 $LFS/usr/
+install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
+               $LFS/usr/include/gnu/
+ln -svf ../lib32/ld-linux.so.2 $LFS/lib/ld-linux.so.2</userinput></screen>
+
+
+    <caution>
+      <para>At this point, it is imperative to stop and ensure that the basic
+      functions (compiling and linking) of the new toolchain are working as
+      expected. To perform a sanity check, run the following commands:</para>
+
+<screen><userinput>echo 'int main(){}' &gt; dummy.c
+$LFS_TGT-gcc -m32 dummy.c
+readelf -l a.out | grep '/ld-linux'</userinput></screen>
+
+      <para>If everything is working correctly, there should be no errors,
+      and the output of the last command will be of the form:</para>
+
+<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
+
+      <para>If the output is not shown as above or there was no output at all,
+      then something is wrong. Investigate and retrace the steps to find out
+      where the problem is and correct it. This issue must be resolved before
+      continuing on.</para>
+
+      <para>Once all is well, clean up the test files:</para>
+
+<screen><userinput>rm -v dummy.c a.out</userinput></screen>
+
+    </caution>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all">
+    <title>Building Glibc - x32bit</title>
+
+    <para>Now recompile for mx32. The extracted source can be
+    reused but needs to be cleaned before installing the mx32
+    version of Glibc.</para>
+
+    <para>Clear the build directory and remove artefacts from
+    previous build:</para>
+      
+<screen><userinput remap="pre">make clean
+find .. -name "*.a" -delete</userinput></screen>
+
+    <para>Configure Glibc for mx32 with the following commands:</para>
+
+<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
+CXX="$LFS_TGT-g++ -mx32" \
+../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGTX32                 \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=&min-kernel;                \
+      --with-headers=$LFS/usr/include    \
+      --enable-multi-arch                \
+      --libdir=/usr/libx32               \
+      --libexecdir=/usr/libx32           \
+      libc_cv_slibdir=/usr/libx32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -a DESTDIR/usr/libx32 $LFS/usr/
+install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
+               $LFS/usr/include/gnu/
+ln -svf ../libx32/ld-linux-x32.so.2 $LFS/lib/ld-linux-x32.so.2</userinput></screen>
+
+    <caution>
+      <para>At this point, it is imperative to stop and ensure that the basic
+      functions (compiling and linking) of the new toolchain are working as
+      expected. To perform a sanity check, run the following commands:</para>
+
+<screen><userinput>echo 'int main(){}' &gt; dummy.c
+$LFS_TGT-gcc -mx32 dummy.c
+readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
+
+      <para>If everything is working correctly, there should be no errors,
+      and the output of the last command will be of the form:</para>
+
+<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
+
+      <para>If the output is not shown as above or there was no output at all,
+      then something is wrong. Investigate and retrace the steps to find out
+      where the problem is and correct it. This issue must be resolved before
+      continuing on.</para>
+
+      <para>Once all is well, clean up the test files:</para>
+
+<screen><userinput>rm -v dummy.c a.out</userinput></screen>
+
+    </caution>
+
+  </sect2><!-- mx32 -->
+
   <sect2 role="content">
     <title/>
Index: chapter05/libstdc++.xml
===================================================================
--- chapter05/libstdc++.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter05/libstdc++.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -61,5 +61,13 @@
     <para>Prepare Libstdc++ for compilation:</para>
 
-<screen><userinput remap="configure">../libstdc++-v3/configure           \
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../libstdc++-v3/configure           \
+    --host=$LFS_TGT                 \
+    --build=$(../config.guess)      \
+    --prefix=/usr                   \
+    --enable-multilib               \
+    --disable-nls                   \
+    --disable-libstdcxx-pch         \
+    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</userinput></screen>
+<screen arch="default"><userinput remap="configure">../libstdc++-v3/configure           \
     --host=$LFS_TGT                 \
     --build=$(../config.guess)      \
@@ -79,4 +87,11 @@
           should be used instead of the one in
           <filename>/usr/bin</filename>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry arch="ml_32,ml_x32,ml_all">
+        <term><parameter>--enable-multilib</parameter></term>
+        <listitem>
+          <para>Enable building multilib objects.</para>
         </listitem>
       </varlistentry>
Index: chapter05/libxcrypt.xml
===================================================================
--- chapter05/libxcrypt.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
+++ chapter05/libxcrypt.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libxcrypt" role="wrap">
+  <?dbhtml filename="libxcrypt.html"?>
+
+  <sect1info condition="script">
+    <productname>libxcrypt</productname>
+    <productnumber>&libxcrypt-version;</productnumber>
+    <address>&libxcrypt-url;</address>
+  </sect1info>
+
+  <title>Libxcrypt-&libxcrypt-version;</title>
+
+  <indexterm zone="ch-tools-libxcrypt">
+    <primary sortas="a-Libxcrypt">Libxcrypt</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../chapter08/libxcrypt.xml"
+    xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libxcrypt-fin-sbu;</seg>
+        <seg>&libxcrypt-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Libxcrypt</title>
+
+    <para>Prepare Libxcrypt for compilation:</para>
+
+<screen><userinput remap="configure">./configure --target=$LFS_TGT            \
+            --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=no     \
+            --disable-static             \
+            --disable-failure-tokens</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the new configure options:</title>
+
+      <varlistentry>
+        <term><parameter>--enable-hashes=strong,glibc</parameter></term>
+        <listitem>
+          <para>Build strong hash algorithms recommended for security use
+          cases, and the hash algorithms provided by traditional Glibc
+          <systemitem class='library'>libcrypt</systemitem> for
+          compatibility.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--enable-obsolete-api=no</parameter></term>
+        <listitem>
+          <para>Disable obsolete API functions.  They are not needed for
+          a modern Linux system built from source.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--disable-failure-tokens</parameter></term>
+        <listitem>
+          <para>Disable failure token feature.  It's needed for
+          compatibility with the traditional hash libraries of some
+          platforms, but a Linux system based on Glibc does not need
+          it.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make check</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
+
+  </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libxcrypt - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare File for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" \
+./configure --target=$LFS_TGT32          \
+            --prefix=/usr                \
+            --host=i686-pc-linux-gnu     \
+            --libdir=/usr/lib32          \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=glibc  \
+            --disable-static             \
+            --disable-failure-tokens</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">cp -av .libs/libcrypt.so* $LFS/usr/lib32/ &amp;&amp;
+make DESTDIR=$LFS install-pkgconfigDATA &amp;&amp;
+ln -svf libxcrypt.pc $LFS/usr/lib32/pkgconfig/libcrypt.pc</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libxcrypt - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare File for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" \
+./configure --target=$LFS_TGT32           \
+            --prefix=/usr                 \
+            --host=x86_64-pc-linux-gnux32 \
+            --libdir=/usr/libx32          \
+            --enable-hashes=strong,glibc  \
+            --enable-obsolete-api=glibc   \
+            --disable-static              \
+            --disable-failure-tokens</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">cp -av .libs/libcrypt.so* $LFS/usr/libx32/ &amp;&amp;
+make DESTDIR=$LFS install-pkgconfigDATA &amp;&amp;
+ln -svf libxcrypt.pc $LFS/usr/libx32/pkgconfig/libcrypt.pc</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
+  <sect2 role="content">
+    <title/>
+
+    <para>Details on this package are located in
+    <xref linkend="contents-libxcrypt" role="."/></para>
+
+  </sect2>
+</sect1>
Index: chapter06/binutils-pass2.xml
===================================================================
--- chapter06/binutils-pass2.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter06/binutils-pass2.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -65,5 +65,5 @@
     <para>Prepare Binutils for compilation:</para>
 
-<screen><userinput remap="configure">../configure                   \
+<screen arch="default"><userinput remap="configure">../configure                   \
     --prefix=/usr              \
     --build=$(../config.guess) \
@@ -74,4 +74,14 @@
     --disable-werror           \
     --enable-64-bit-bfd</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                   \
+    --prefix=/usr              \
+    --build=$(../config.guess) \
+    --host=$LFS_TGT            \
+    --disable-nls              \
+    --enable-shared            \
+    --enable-gprofng=no        \
+    --disable-werror           \
+    --enable-64-bit-bfd        \
+    --enable-multilib</userinput></screen>
 
     <variablelist>
@@ -92,4 +102,11 @@
           <para>Enables 64-bit support (on hosts with smaller word sizes).
           This may not be needed on 64-bit systems, but it does no harm.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry arch="ml_32,ml_x32,ml_all">
+        <term><parameter>--enable-multilib</parameter></term>
+        <listitem>
+          <para>Enables multilib support in bintutils.</para>
         </listitem>
       </varlistentry>
Index: chapter06/gcc-pass2.xml
===================================================================
--- chapter06/gcc-pass2.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter06/gcc-pass2.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -58,8 +58,9 @@
 mv -v mpc-&mpc-version; mpc</userinput></screen>
 
-    <para>If building on x86_64, change the default directory name for 64-bit
+
+    <para arch="default">If building on x86_64, change the default directory name for 64-bit
     libraries to <quote>lib</quote>:</para>
 
-<screen><userinput remap="pre">case $(uname -m) in
+<screen arch="default"><userinput remap="pre">case $(uname -m) in
   x86_64)
     sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
@@ -67,4 +68,11 @@
 esac</userinput></screen>
 
+    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for the
+    libraries:</para>
+
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
+    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
+    -i.orig gcc/config/i386/t-linux64</userinput></screen>
+
     <para>Override the building rule of libgcc and libstdc++ headers, to
     allow building these libraries with POSIX threads support:</para>
@@ -83,5 +91,5 @@
     <para>Now prepare GCC for compilation:</para>
 
-<screen><userinput remap="configure">../configure                                       \
+<screen arch="default"><userinput remap="configure">../configure                                       \
     --build=$(../config.guess)                     \
     --host=$LFS_TGT                                \
@@ -101,4 +109,26 @@
     --disable-libvtv                               \
     --enable-languages=c,c++</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure" 
+    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
+    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
+    arch="ml_all">mlist=m64,m32,mx32</userinput>
+<userinput remap="configure">../configure                                       \
+    --build=$(../config.guess)                     \
+    --host=$LFS_TGT                                \
+    --target=$LFS_TGT                              \
+    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
+    --prefix=/usr                                  \
+    --with-build-sysroot=$LFS                      \
+    --enable-default-pie                           \
+    --enable-default-ssp                           \
+    --disable-nls                                  \
+    --enable-multilib --with-multilib-list=$mlist  \
+    --disable-libatomic                            \
+    --disable-libgomp                              \
+    --disable-libquadmath                          \
+    --disable-libsanitizer                         \
+    --disable-libssp                               \
+    --disable-libvtv                               \
+    --enable-languages=c,c++</userinput></screen>
 
     <variablelist>
Index: chapter06/ncurses.xml
===================================================================
--- chapter06/ncurses.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter06/ncurses.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -190,4 +190,84 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all">
+    <title>Building Ncurses - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Ncurses for compilation:</para>
+
+<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32"              \
+CXX="$LFS_TGT-g++ -m32"             \
+./configure --prefix=/usr           \
+            --host=$LFS_TGT32       \
+            --build=$(./config.guess)    \
+            --libdir=/usr/lib32     \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-normal        \
+            --with-cxx-shared       \
+            --without-debug         \
+            --without-ada           \
+            --disable-stripping     \
+            --enable-widec</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
+ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so
+cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_x32,ml_all">
+    <title>Building Ncurses - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Ncurses for compilation:</para>
+
+<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32"             \
+CXX="$LFS_TGT-g++ -mx32"            \
+./configure --prefix=/usr           \
+            --host=$LFS_TGTX32      \
+            --build=$(./config.guess)    \
+            --libdir=/usr/libx32    \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-normal        \
+            --with-cxx-shared       \
+            --without-debug         \
+            --without-ada           \
+            --disable-stripping     \
+            --enable-widec</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
+ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so
+cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 role="content">
     <title/>
Index: chapter07/changingowner.xml
===================================================================
--- chapter07/changingowner.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter07/changingowner.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -39,3 +39,8 @@
 esac</userinput></screen>
 
+  <para arch="ml_32,ml_x32,ml_all">Some more directories exists for
+  multilib support. Change their ownership, too:</para>
+<screen arch="ml_32,ml_x32,ml_all"><userinput arch="ml_32,ml_all">chown -R root:root $LFS/lib32</userinput>
+<userinput arch="ml_x32,ml_all">chown -R root:root $LFS/libx32</userinput></screen>
+  
 </sect1>
Index: chapter07/cleanup.xml
===================================================================
--- chapter07/cleanup.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter07/cleanup.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -24,5 +24,8 @@
     failures.  Remove those files now:</para>
 
-<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
+<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput><userinput arch="ml_32">
+find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32">
+find /usr/libx32 -name \*.la -delete</userinput><userinput arch="ml_all">
+find /usr/lib{,x}32 -name \*.la -delete</userinput></screen>
 
     <para>
Index: chapter07/creatingdirs.xml
===================================================================
--- chapter07/creatingdirs.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter07/creatingdirs.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -42,4 +42,7 @@
 install -dv -m 1777 /tmp /var/tmp</userinput></screen>
 
+  <para arch="ml_32,ml_x32,ml_all">Required directories for multilib
+  support has already been created while previous installation steps.</para>
+
   <para>Directories are, by default, created with permission mode 755, but
   this is not desirable everywhere. In the commands above, two
Index: chapter07/util-linux.xml
===================================================================
--- chapter07/util-linux.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter07/util-linux.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -127,4 +127,86 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Util-linux - 32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Util-linux for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
+            --libdir=/usr/lib32      \
+            --host=i686-pc-linux-gnu \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            runstatedir=/run</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Util-linux - x32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Util-linux for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
+            --libdir=/usr/libx32 \
+            --host=x86_64-pc-linux-gnux32 \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            runstatedir=/run</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 role="content">
     <title/>
Index: chapter08/acl.xml
===================================================================
--- chapter08/acl.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/acl.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -64,4 +64,68 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Acl - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Acl for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --prefix=/usr         \
+    --disable-static      \
+    --libdir=/usr/lib32   \
+    --libexecdir=/usr/lib32   \
+    --host=i686-pc-linux-gnu</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Acl - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Acl for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --prefix=/usr          \
+    --disable-static       \
+    --libdir=/usr/libx32   \
+    --libexecdir=/usr/libx32   \
+    --host=x86_64-pc-linux-gnux32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-acl" role="content">
Index: chapter08/attr.xml
===================================================================
--- chapter08/attr.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/attr.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -65,4 +65,68 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Attr - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Attr for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --prefix=/usr         \
+    --disable-static      \
+    --sysconfdir=/etc     \
+    --libdir=/usr/lib32   \
+    --host=i686-pc-linux-gnu</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Attr - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Attr for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --prefix=/usr          \
+    --disable-static       \
+    --sysconfdir=/etc      \
+    --libdir=/usr/libx32   \
+    --host=x86_64-pc-linux-gnux32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-attr" role="content">
     <title>Contents of Attr</title>
Index: chapter08/binutils.xml
===================================================================
--- chapter08/binutils.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/binutils.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -50,5 +50,5 @@
     <para>Prepare Binutils for compilation:</para>
 
-<screen><userinput remap="configure">../configure --prefix=/usr       \
+<screen arch="default"><userinput remap="configure">../configure --prefix=/usr       \
              --sysconfdir=/etc   \
              --enable-gold       \
@@ -59,4 +59,15 @@
              --enable-64-bit-bfd \
              --with-system-zlib</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr       \
+             --sysconfdir=/etc   \
+             --enable-gold       \
+             --enable-ld=default \
+             --enable-plugins    \
+             --enable-shared     \
+             --disable-werror    \
+             --enable-64-bit-bfd \
+             --with-system-zlib  \
+             --enable-multilib</userinput></screen>
+
     <variablelist>
       <title>The meaning of the configure parameters:</title>
@@ -90,4 +101,11 @@
            <para>Enables 64-bit support (on hosts with narrower word sizes).
            May not be needed on 64-bit systems, but does no harm.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry arch="ml_32,ml_x32,ml_all">
+        <term><parameter>--enable-multilib</parameter></term>
+        <listitem>
+          <para>Enables multilib support in bintutils.</para>
         </listitem>
       </varlistentry>
Index: chapter08/bzip2.xml
===================================================================
--- chapter08/bzip2.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/bzip2.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -103,4 +103,58 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Bzip2 - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make clean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -m32/" -i Makefile{,-libbz2_so}
+make -f Makefile-libbz2_so
+make libbz2.a</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0.8
+ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so
+ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1
+ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0
+install -Dm644 libbz2.a /usr/lib32/libbz2.a</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Bzip2 - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make clean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -mx32/" -i Makefile{,-libbz2_so}
+make -f Makefile-libbz2_so
+make libbz2.a</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0.8
+ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so
+ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1
+ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0
+install -Dm644 libbz2.a /usr/libx32/libbz2.a</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-bzip2" role="content">
Index: chapter08/chapter08.xml
===================================================================
--- chapter08/chapter08.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/chapter08.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -35,4 +35,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
Index: chapter08/cleanup.xml
===================================================================
--- chapter08/cleanup.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/cleanup.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -22,5 +22,7 @@
   builds.  Remove those files now:</para>
 
-<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen>
+<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput><userinput arch="ml_32,ml_all">
+find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32,ml_all">
+find /usr/libx32 -name \*.la -delete</userinput></screen>
 
    <para>For more information about libtool archive files, see the <ulink
Index: chapter08/expat.xml
===================================================================
--- chapter08/expat.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/expat.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -66,4 +66,70 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Expat - 32bit</title>
+
+    <para>Clean previous build but keep precompiled doc because it
+    cannot be rebuilt in this stage of the system:</para>
+
+<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
+make clean</userinput></screen>
+
+    <para>Prepare Expat for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --prefix=/usr        \
+    --disable-static     \
+    --libdir=/usr/lib32  \
+    --host=i686-pc-linux-gnu</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Expat - x32bit</title>
+
+    <para>Clean previous build but keep precompiled doc because it
+    cannot be rebuilt in this stage of the system:</para>
+
+<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
+make clean</userinput></screen>
+
+    <para>Prepare Expat for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --prefix=/usr        \
+    --disable-static     \
+    --libdir=/usr/libx32 \
+    --host=x86_64-pc-linux-gnux32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-expat" role="content">
     <title>Contents of Expat</title>
Index: chapter08/file.xml
===================================================================
--- chapter08/file.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/file.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -60,4 +60,63 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of File - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare File for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --prefix=/usr         \
+    --libdir=/usr/lib32   \
+    --host=i686-pc-linux-gnu</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of File - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare File for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --prefix=/usr          \
+    --libdir=/usr/libx32   \
+    --host=x86_64-pc-linux-gnux32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-file" role="content">
Index: chapter08/gcc.xml
===================================================================
--- chapter08/gcc.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/gcc.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -58,5 +58,5 @@
     libraries to <quote>lib</quote>:</para>
 
-<screen><userinput remap="pre">case $(uname -m) in
+<screen arch="default"><userinput remap="pre">case $(uname -m) in
   x86_64)
     sed -e '/m64=/s/lib64/lib/' \
@@ -65,4 +65,11 @@
 esac</userinput></screen>
 
+    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for 64-bit
+    libraries to <quote>lib</quote>:</para>
+
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
+    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
+    -i.orig gcc/config/i386/t-linux64</userinput></screen>
+
     <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
 
@@ -72,5 +79,5 @@
     <para>Prepare GCC for compilation:</para>
 
-<screen><userinput remap="configure">../configure --prefix=/usr            \
+<screen arch="default"><userinput remap="configure">../configure --prefix=/usr            \
              LD=ld                    \
              --enable-languages=c,c++ \
@@ -80,4 +87,18 @@
              --disable-bootstrap      \
              --disable-fixincludes    \
+             --with-system-zlib</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure" 
+  arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
+  arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
+  arch="ml_all">mlist=m64,m32,mx32</userinput>
+<userinput remap="configure">../configure --prefix=/usr               \
+             LD=ld                       \
+             --enable-languages=c,c++    \
+             --enable-default-pie        \
+             --enable-default-ssp        \
+             --enable-multilib           \
+             --with-multilib-list=$mlist \
+             --disable-bootstrap         \
+             --disable-fixincludes       \
              --with-system-zlib</userinput></screen>
 
@@ -304,8 +325,9 @@
 SEARCH_DIR("/usr/lib");</computeroutput></screen>
 
-   <para>A 32-bit system may use a few other directories. For example, here
+   <para arch="default">A 32-bit system may use a few other directories. For example, here
    is the output from an i686 machine:</para>
 
-<screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
+<!-- not using entities here as the dir names has nothing to do with multilib -->
+<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
 SEARCH_DIR("/usr/local/lib32")
 SEARCH_DIR("/lib32")
Index: chapter08/glibc.xml
===================================================================
--- chapter08/glibc.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/glibc.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -70,5 +70,5 @@
     <para>Prepare Glibc for compilation:</para>
 
-<screen><userinput remap="configure">../configure --prefix=/usr                            \
+<screen arch="default"><userinput remap="configure">../configure --prefix=/usr                            \
              --disable-werror                         \
              --enable-kernel=&min-kernel;                     \
@@ -76,4 +76,11 @@
              --with-headers=/usr/include              \
              --disable-nscd                           \
+             libc_cv_slibdir=/usr/lib</userinput></screen>
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr                            \
+             --disable-werror                         \
+             --enable-kernel=&min-kernel;                      \
+             --enable-stack-protector=strong          \
+             --with-headers=/usr/include              \
+             --enable-multi-arch                      \
              libc_cv_slibdir=/usr/lib</userinput></screen>
 
@@ -496,4 +503,154 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all">
+    <title>Building Glibc - 32bit</title>
+
+    <para>Now recompile for m32. The extracted source can be
+    reused but needs to be cleaned before installing the m32
+    version of Glibc.</para>
+
+    <para>Clear the build directory and remove artefacts from
+    previous build:</para>
+      
+<screen><userinput remap="pre">rm -rf ./*
+find .. -name "*.a" -delete</userinput></screen>
+
+    <para>Configure Glibc for m32 with the following commands:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
+../configure                             \
+      --prefix=/usr                      \
+      --host=i686-pc-linux-gnu           \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=&min-kernel;                \
+      --with-headers=/usr/include        \
+      --enable-multi-arch                \
+      --libdir=/usr/lib32                \
+      --libexecdir=/usr/lib32            \
+      libc_cv_slibdir=/usr/lib32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -a DESTDIR/usr/lib32/* /usr/lib32/
+install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
+               /usr/include/gnu/</userinput></screen>
+<!-- no longer required as they are created in chap5
+ln -svf ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
+-->
+
+    <para>Add the library name to the dynamic loader config:</para>
+
+<screen role="install"><userinput>echo "/usr/lib32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
+
+    <caution>
+      <para>At this point, it is imperative to stop and ensure that the basic
+      functions (compiling and linking) of the new toolchain are working as
+      expected. To perform a sanity check, run the following commands:</para>
+
+<screen><userinput>echo 'int main(){}' &gt; dummy.c
+gcc -m32 dummy.c
+readelf -l a.out | grep '/ld-linux'</userinput></screen>
+
+      <para>If everything is working correctly, there should be no errors,
+      and the output of the last command will be of the form:</para>
+
+<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
+
+      <para>If the output is not shown as above or there was no output at all,
+      then something is wrong. Investigate and retrace the steps to find out
+      where the problem is and correct it. This issue must be resolved before
+      continuing on.</para>
+
+      <para>Once all is well, clean up the test files:</para>
+
+<screen><userinput>rm -v dummy.c a.out</userinput></screen>
+
+    </caution>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all">
+    <title>Building Glibc - x32bit</title>
+
+    <para>Now recompile for mx32. The extracted source can be
+    reused but needs to be cleaned before installing the mx32
+    version of Glibc.</para>
+
+    <para>Clear the build directory and remove artefacts from
+    previous build:</para>
+      
+<screen><userinput remap="pre">rm -rf ./*
+find .. -name "*.a" -delete</userinput></screen>
+
+    <para>Configure Glibc for mx32 with the following commands:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
+../configure                             \
+      --prefix=/usr                      \
+      --host=x86_64-pc-linux-gnux32      \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=&min-kernel;                \
+      --with-headers=/usr/include        \
+      --enable-multi-arch                \
+      --libdir=/usr/libx32               \
+      --libexecdir=/usr/libx32           \
+      libc_cv_slibdir=/usr/libx32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -a DESTDIR/usr/libx32/* /usr/libx32/
+install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
+               /usr/include/gnu/</userinput></screen>
+<!-- no longer required as they are created in chap5
+ln -svf ../libx32/ld-linux-x32.so.2 /lib/ld-linux-x32.so.2
+-->
+    <para>Add the library name to the dynamic loader config:</para>
+
+<screen role="install"><userinput>echo "/usr/libx32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
+
+    <caution>
+      <para>At this point, it is imperative to stop and ensure that the basic
+      functions (compiling and linking) of the new toolchain are working as
+      expected. To perform a sanity check, run the following commands:</para>
+
+<screen><userinput>echo 'int main(){}' &gt; dummy.c
+gcc -mx32 dummy.c
+readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
+
+      <para>If everything is working correctly, there should be no errors,
+      and the output of the last command will be of the form:</para>
+
+<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
+
+      <para>If the output is not shown as above or there was no output at all,
+      then something is wrong. Investigate and retrace the steps to find out
+      where the problem is and correct it. This issue must be resolved before
+      continuing on.</para>
+
+      <para>Once all is well, clean up the test files:</para>
+
+<screen><userinput>rm -v dummy.c a.out</userinput></screen>
+
+    </caution>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-glibc" role="content">
     <title>Contents of Glibc</title>
Index: chapter08/gmp.xml
===================================================================
--- chapter08/gmp.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/gmp.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -125,4 +125,136 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of GMP - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Generic libraries can be created by running
+    the following:</para>
+
+<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
+cp -v configfsf.sub   config.sub</userinput></screen>
+
+    <para>Prepare GMP for compilation:</para>
+
+<screen><userinput remap="configure">ABI="32" \
+CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
+CXXFLAGS="$CFLAGS" \
+PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
+./configure                      \
+    --host=i686-pc-linux-gnu     \
+    --prefix=/usr                \
+    --disable-static             \
+    --enable-cxx                 \
+    --libdir=/usr/lib32          \
+    --includedir=/usr/include/m32/gmp</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the new configure options:</title>
+
+      <varlistentry>
+        <term><parameter>--includedir=/usr/include/m32/gmp</parameter></term>
+        <listitem>
+          <para>Some definitions in gmp.h differs for each arch but
+          has same name. Therefore, the headers must be separated from
+          each other.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
+make</userinput></screen>
+
+    <important>
+      <para>The test suite for GMP in this section is considered critical.
+      Do not skip it under any circumstances.</para>
+    </important>
+
+    <para>Test the results:</para>
+
+<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
+ 
+    <para>Ensure that all 197 tests in the test suite passed.
+    Check the results by issuing the following command:</para>
+
+<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of GMP - x32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Generic libraries can be created by running
+    the following:</para>
+
+<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
+cp -v configfsf.sub   config.sub</userinput></screen>
+
+    <para>Prepare GMP for compilation:</para>
+
+<screen><userinput remap="configure">ABI="x32" \
+CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
+CXXFLAGS="$CFLAGS" \
+PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
+./configure                       \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --disable-static              \
+    --enable-cxx                  \
+    --libdir=/usr/libx32          \
+    --includedir=/usr/include/mx32/gmp</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
+make</userinput></screen>
+
+    <important>
+      <para>The test suite for GMP in this section is considered critical.
+      Do not skip it under any circumstances.</para>
+    </important>
+
+    <para>Test the results:</para>
+
+<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
+ 
+    <para>Ensure that all 197 tests in the test suite passed.
+    Check the results by issuing the following command:</para>
+
+<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-gmp" role="content">
     <title>Contents of GMP</title>
Index: chapter08/isl.xml
===================================================================
--- chapter08/isl.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
+++ chapter08/isl.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-isl" role="wrap">
+  <?dbhtml filename="isl.html"?>
+
+  <sect1info condition="script">
+    <productname>isl</productname>
+    <productnumber>&isl-version;</productnumber>
+    <address>&isl-url;</address>
+  </sect1info>
+
+  <title>ISL-&isl-version;</title>
+
+  <indexterm zone="ch-system-isl">
+    <primary sortas="a-ISL">ISL</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>ISL is a thread-safe C library for manipulating sets and relations
+    of integer points bounded by affine constraints.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&isl-fin-sbu;</seg>
+        <seg>&isl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of ISL</title>
+
+    <para>Prepare ISL for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/isl-&isl-version;</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the new configure options:</title>
+
+      <varlistentry>
+        <term><parameter>--docdir=/usr/share/doc/isl-&isl-version;</parameter></term>
+        <listitem>
+          <para>This variable specifies the correct place for the
+          documentation.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package and its documentation:</para>
+
+<screen><userinput remap="install">make install
+install -vd /usr/share/doc/isl-&isl-version;
+install -m644 doc/{CodingStyle,manual.pdf,SubmittingPatches,user.pod} \
+        /usr/share/doc/isl-&isl-version;</userinput></screen>
+
+    <para>Finally, move a misplaced file:</para>
+
+<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/libisl*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-isl" role="content">
+    <title>Contents of ISL</title>
+
+    <segmentedlist>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed directory</segtitle>
+
+      <seglistitem>
+        <seg>libisl.so</seg>
+        <seg>/usr/share/doc/isl-&isl-version;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libisl">
+        <term><filename class="libraryfile">libisl</filename></term>
+        <listitem>
+          <para>Contains integer set manipulation functions</para>
+          <indexterm zone="ch-system-isl libisl">
+            <primary sortas="c-libisl">libisl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+  </sect2>
+
+</sect1>
+
Index: chapter08/kmod.xml
===================================================================
--- chapter08/kmod.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/kmod.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -98,4 +98,80 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Kmod - 32bit</title>
+
+    <para>Clean previous build but keep man pages as they cannot
+    be recreated since xsltproc isn't installed yet:</para>
+
+<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
+make clean</userinput></screen>
+
+    <para>Prepare Kmod for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --host=i686-pc-linux-gnu      \
+    --prefix=/usr                 \
+    --libdir=/usr/lib32           \
+    --sysconfdir=/etc             \
+    --with-openssl                \
+    --with-xz                     \
+    --with-zstd                   \
+    --with-zlib                   \
+    --with-rootlibdir=/usr/lib32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Kmod - x32bit</title>
+
+    <para>Clean previous build but keep man pages as they cannot
+    be recreated since xsltproc isn't installed yet:</para>
+
+<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
+make clean</userinput></screen>
+
+    <para>Prepare Kmod for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --libdir=/usr/libx32          \
+    --sysconfdir=/etc             \
+    --with-openssl                \
+    --with-xz                     \
+    --with-zstd                   \
+    --with-zlib                   \
+    --with-rootlibdir=/usr/libx32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-kmod" role="content">
Index: chapter08/libcap.xml
===================================================================
--- chapter08/libcap.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/libcap.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -76,4 +76,54 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libcap - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make CC="gcc -m32 -march=i686"</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make CC="gcc -m32 -march=i686" lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+sed -e "s|^libdir=.*|libdir=/usr/lib32|" -i /usr/lib32/pkgconfig/lib{cap,psx}.pc
+chmod -v 755 /usr/lib32/libcap.so.&libcap-version;
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libcap - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make CC="gcc -mx32 -march=x86-64"</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make CC="gcc -mx32 -march=x86-64" lib=libx32 prefix=$PWD/DESTDIR/usr -C libcap install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+sed -e "s|^libdir=.*|libdir=/usr/libx32|" -i /usr/libx32/pkgconfig/lib{cap,psx}.pc
+chmod -v 755 /usr/libx32/libcap.so.&libcap-version;
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-libcap" role="content">
     <title>Contents of Libcap</title>
Index: chapter08/libelf.xml
===================================================================
--- chapter08/libelf.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/libelf.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -67,4 +67,70 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libelf - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libelf for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --host=i686-pc-linux-gnu \
+    --prefix=/usr            \
+    --libdir=/usr/lib32      \
+    --disable-debuginfod     \
+    --enable-libdebuginfod=dummy</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
+install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libelf - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libelf for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --libdir=/usr/libx32          \
+    --disable-debuginfod          \
+    --enable-libdebuginfod=dummy</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
+install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-elfutils" role="content">
     <title>Contents of Libelf</title>
Index: chapter08/libffi.xml
===================================================================
--- chapter08/libffi.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/libffi.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -97,4 +97,76 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libffi - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libffi for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
+    --host=i686-pc-linux-gnu \
+    --prefix=/usr            \
+    --libdir=/usr/lib32      \
+    --disable-static         \
+    --with-gcc-arch=i686</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make check</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libffi - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libffi for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
+    --host=x86_64-unknown-linux-gnux32 \
+    --prefix=/usr            \
+    --libdir=/usr/libx32     \
+    --disable-static         \
+    --with-gcc-arch=x86_64</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make check</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-libffi" role="content">
     <title>Contents of Libffi</title>
@@ -127,3 +199,2 @@
 
 </sect1>
-
Index: chapter08/libtool.xml
===================================================================
--- chapter08/libtool.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/libtool.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -79,4 +79,63 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libtool - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libtool for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --host=i686-pc-linux-gnu \
+    --prefix=/usr            \
+    --libdir=/usr/lib32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libtool - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libtool for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --libdir=/usr/libx32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-libtool" role="content">
Index: chapter08/libxcrypt.xml
===================================================================
--- chapter08/libxcrypt.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/libxcrypt.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -116,4 +116,70 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Libxcrypt - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libxcrypt for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" \
+./configure --prefix=/usr                \
+            --host=i686-pc-linux-gnu     \
+            --libdir=/usr/lib32          \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=glibc  \
+            --disable-static             \
+            --disable-failure-tokens</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">cp -av .libs/libcrypt.so* /usr/lib32/ &amp;&amp;
+make install-pkgconfigDATA &amp;&amp;
+ln -svf libxcrypt.pc /usr/lib32/pkgconfig/libcrypt.pc</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Libxcrypt - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Libxcrypt for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" \
+./configure --prefix=/usr                 \
+            --host=x86_64-pc-linux-gnux32 \
+            --libdir=/usr/libx32          \
+            --enable-hashes=strong,glibc  \
+            --enable-obsolete-api=glibc   \
+            --disable-static              \
+            --disable-failure-tokens</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">cp -av .libs/libcrypt.so* /usr/libx32/ &amp;&amp;
+make install-pkgconfigDATA &amp;&amp;
+ln -svf libxcrypt.pc /usr/libx32/pkgconfig/libcrypt.pc</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-libxcrypt" role="content">
     <title>Contents of Libxcrypt</title>
Index: chapter08/ncurses.xml
===================================================================
--- chapter08/ncurses.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/ncurses.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -172,8 +172,9 @@
 
 <screen role="nodump"><userinput>make distclean
-./configure --prefix=/usr    \
-            --with-shared    \
-            --without-normal \
-            --without-debug  \
+./configure --prefix=/usr     \
+            --with-shared     \
+            --without-normal  \
+            --with-cxx-shared \
+            --without-debug   \
             --without-cxx-binding \
             --with-abi-version=5
@@ -183,4 +184,95 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all">
+    <title>Building Ncurses - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Ncurses for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
+./configure --prefix=/usr           \
+            --host=i686-pc-linux-gnu \
+            --libdir=/usr/lib32     \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-debug         \
+            --without-normal        \
+            --with-cxx-shared       \
+            --enable-pc-files       \
+            --enable-widec          \
+            --with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+mkdir -p DESTDIR/usr/lib32/pkgconfig
+for lib in ncurses form panel menu ; do
+    rm -vf                    DESTDIR/usr/lib32/lib${lib}.so
+    echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
+    ln -svf ${lib}w.pc        DESTDIR/usr/lib32/pkgconfig/$lib.pc
+done
+rm -vf                     DESTDIR/usr/lib32/libcursesw.so
+echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
+ln -sfv libncurses.so      DESTDIR/usr/lib32/libcurses.so
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_x32,ml_all">
+    <title>Building Ncurses - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Ncurses for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
+./configure --prefix=/usr           \
+            --host=x86_64-pc-linux-gnux32 \
+            --libdir=/usr/libx32    \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-debug         \
+            --without-normal        \
+            --enable-pc-files       \
+            --enable-widec          \
+            --with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+mkdir -p DESTDIR/usr/libx32/pkgconfig
+for lib in ncurses form panel menu ; do
+    rm -vf                    DESTDIR/usr/libx32/lib${lib}.so
+    echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
+    ln -svf ${lib}w.pc        DESTDIR/usr/libx32/pkgconfig/$lib.pc
+done
+rm -vf                     DESTDIR/usr/libx32/libcursesw.so
+echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
+ln -sfv libncurses.so      DESTDIR/usr/libx32/libcurses.so
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-ncurses" role="content">
Index: chapter08/openssl.xml
===================================================================
--- chapter08/openssl.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/openssl.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -111,4 +111,68 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of OpenSSL - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare OpenSSL for compilation:</para>
+
+<screen><userinput remap="configure">./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib32        \
+         shared                \
+         zlib-dynamic          \
+         linux-x86</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of OpenSSL - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare OpenSSL for compilation:</para>
+
+<screen><userinput remap="configure">./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=libx32       \
+         shared                \
+         zlib-dynamic          \
+         linux-x32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-openssl" role="content">
Index: chapter08/pkgconf.xml
===================================================================
--- chapter08/pkgconf.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/pkgconf.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -69,5 +69,41 @@
 <screen><userinput remap="install">ln -sv pkgconf   /usr/bin/pkg-config
 ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</userinput></screen>
+<!--
+    <para arch="ml_32,ml_x32,ml_all">
+      For better support of the multilib platform create some
+      additional files by executing the following commands:
+    </para>
 
+<screen arch="ml_32,ml_x32,ml_all"><userinput remap="install">ln -sv pkgconf /usr/bin/i686-pc-linux-gnu-pkg-config
+ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnux32-pkg-config
+ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnu-pkg-config
+
+mkdir -pv /usr/share/pkgconfig/personality.d
+
+cat &gt; /usr/share/pkgconfig/personality.d/i686-pc-linux-gnu.personality &lt;&lt;EOF
+Triplet: i686-pc-linux-gnu
+SysrootDir: /
+DefaultSearchPaths: /usr/lib32/pkgconfig:/usr/share/pkgconfig
+SystemIncludePaths: /usr/include
+SystemLibraryPaths: /usr/lib32
+EOF
+
+cat &gt; /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnux32.personality &lt;&lt;EOF
+Triplet: x86_64-pc-linux-gnux32
+SysrootDir: /
+DefaultSearchPaths: /usr/libx32/pkgconfig:/usr/share/pkgconfig
+SystemIncludePaths: /usr/include
+SystemLibraryPaths: /usr/libx32
+EOF
+
+cat &gt; /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnu.personality &lt;&lt;EOF
+Triplet: x86_64-pc-linux-gnu
+SysrootDir: /
+DefaultSearchPaths: /usr/lib/pkgconfig:/usr/share/pkgconfig
+SystemIncludePaths: /usr/include
+SystemLibraryPaths: /usr/lib
+EOF
+</userinput></screen>
+-->
   </sect2>
 
Index: chapter08/readline.xml
===================================================================
--- chapter08/readline.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/readline.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -105,4 +105,68 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Readline - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Readline for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --host=i686-pc-linux-gnu      \
+    --prefix=/usr                 \
+    --libdir=/usr/lib32           \
+    --disable-static              \
+    --with-curses</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Readline - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Readline for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --libdir=/usr/libx32          \
+    --disable-static              \
+    --with-curses</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-readline" role="content">
     <title>Contents of Readline</title>
Index: chapter08/stripping.xml
===================================================================
--- chapter08/stripping.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/stripping.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -80,5 +80,4 @@
 
 cd /usr/lib
-
 for LIB in $save_usrlib; do
     objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg
@@ -88,5 +87,25 @@
     install -vm755 /tmp/$LIB /usr/lib
     rm /tmp/$LIB
-done
+done</userinput>
+<userinput arch="ml_32,ml_all">
+cd /usr/lib32
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg
+    cp $LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib32
+    rm /tmp/$LIB
+done</userinput>
+<userinput arch="ml_x32,ml_all">
+cd /usr/libx32
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg
+    cp $LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/libx32
+    rm /tmp/$LIB
+done</userinput><userinput>
 
 online_usrbin="bash find strip"
@@ -113,5 +132,17 @@
     install -vm755 /tmp/$LIB /usr/lib
     rm /tmp/$LIB
-done
+done</userinput><userinput arch="ml_32,ml_all">
+for LIB in $online_usrlib; do
+    cp /usr/lib32/$LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib32
+    rm /tmp/$LIB
+done</userinput><userinput arch="ml_x32,ml_all">
+for LIB in $online_usrlib; do
+    cp /usr/libx32/$LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/libx32
+    rm /tmp/$LIB
+done</userinput><userinput>
 
 for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
@@ -124,5 +155,23 @@
             ;;
     esac
-done
+done</userinput><userinput arch="ml_32,ml_all">
+for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg) \
+         $(find /usr/lib32 -type f -name \*.a); do
+    case "$online_usrbin $online_usrlib $save_usrlib" in
+        *$(basename $i)* )
+            ;;
+        * ) strip --strip-unneeded $i
+            ;;
+    esac
+done</userinput><userinput arch="ml_x32,ml_all">
+for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg) \
+         $(find /usr/libx32 -type f -name \*.a); do
+    case "$online_usrbin $online_usrlib $save_usrlib" in
+        *$(basename $i)* )
+            ;;
+        * ) strip --strip-unneeded $i
+            ;;
+    esac
+done</userinput><userinput>
 
 unset BIN LIB save_usrlib online_usrbin online_usrlib
Index: chapter08/systemd.xml
===================================================================
--- chapter08/systemd.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/systemd.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -231,4 +231,127 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of systemd - 32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">rm -rf *</userinput></screen>
+
+    <para>Create a symlink to work around missing xsltproc:</para>
+
+<!-- screen><userinput remap="pre">ln -sf /tools/bin/true /usr/bin/xsltproc</userinput></screen -->
+<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
+
+<!-- with cross-LFS we have util-linux in place:
+    <para>Because we have not yet installed the final version of Util-Linux,
+    create links to the libraries in the approprite location:</para>
+
+<screen><userinput remap="pre">for file in /tools/lib32/lib{blkid,mount,uuid}*; do
+    ln -sf $file /usr/lib32/
+done</userinput></screen>
+-->
+
+    <para>Prepare systemd for compilation:</para>
+
+    <screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
+CC="gcc -m32 -march=i686"              \
+CXX="g++ -m32 -march=i686"             \
+LANG=en_US.UTF-8                       \
+meson --prefix=/usr                    \
+      --sysconfdir=/etc                \
+      --localstatedir=/var             \
+      --libdir=/usr/lib32              \
+      -Drootlibdir=/usr/lib32          \
+      -Dblkid=true                  \
+      -Ddefault-dnssec=no           \
+      -Dfirstboot=false             \
+      -Dinstall-tests=false         \
+      -Dldconfig=false              \
+      -Dsysusers=false              \
+      -Db_lto=false                 \
+      -Drpmmacrosdir=no             \
+      -Dhomed=false                 \
+      -Duserdb=false                \
+      -Dman=false                   \
+      -Dmode=release                \
+      ..</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR
+rm -f /usr/bin/xsltproc</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of systemd - x32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">rm -rf *</userinput></screen>
+
+    <para>Create a symlink to work around missing xsltproc:</para>
+
+<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
+<!--
+    <para>Fix an issue on x32:</para>
+
+<screen><userinput remap="pre">sed '/log_debug/s@PRI_TIMEX@PRIi64@' -i src/timesync/timesyncd-manager.c
+sed '/long drift_freq;/s@long @int64_t @' -i src/timesync/timesyncd-manager.h</userinput></screen>
+-->
+    <para>Prepare systemd for compilation:</para>
+
+<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
+CC="gcc -mx32"                          \
+CXX="g++ -mx32"                         \
+CFLAGS+=" -Wno-error=shift-overflow"    \
+CXXFLAGS+=" -Wno-error=shift-overflow"  \
+LANG=en_US.UTF-8                        \
+meson --prefix=/usr                     \
+      --sysconfdir=/etc                 \
+      --localstatedir=/var              \
+      --libdir=/usr/libx32              \
+      -Drootlibdir=/usr/libx32          \
+      -Dblkid=true                  \
+      -Ddefault-dnssec=no           \
+      -Dfirstboot=false             \
+      -Dinstall-tests=false         \
+      -Dldconfig=false              \
+      -Dsysusers=false              \
+      -Db_lto=false                 \
+      -Drpmmacrosdir=no             \
+      -Dhomed=false                 \
+      -Duserdb=false                \
+      -Dman=false                   \
+      -Dmode=release                \
+      ..</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR
+rm -f /usr/bin/xsltproc</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-systemd" role="content">
Index: chapter08/udev.xml
===================================================================
--- chapter08/udev.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/udev.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -161,4 +161,83 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Udev - 32bit</title>
+
+    <para>Clean previous build (while still in the build directory):</para>
+
+<screen><userinput remap="pre">rm -rf *</userinput></screen>
+
+    <para>Prepare Udev for compilation:</para>
+
+<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
+CC="gcc -m32 -march=i686"              \
+CXX="g++ -m32 -march=i686"             \
+LANG=en_US.UTF-8                       \
+meson setup \
+      --prefix=/usr                 \
+      --buildtype=release           \
+      -Dmode=release                \
+      -Ddev-kvm-mode=0660           \
+      -Dlink-udev-shared=false      \
+      ..</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">ninja \
+      $(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
+        build.ninja | awk '{ print $2 }')                              \
+      $(realpath libudev.so --relative-to .)</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">mkdir -pv /usr/lib32/pkgconfig &amp;&amp;
+cp -av libudev.so{,*[0-9]} /usr/lib32/ &amp;&amp;
+sed -e "s;/usr/lib;&amp;32;g" src/libudev/libudev.pc > /usr/lib32/pkgconfig/libudev.pc</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Udev - x32bit</title>
+    <para>Clean previous build (while still in the build directory):</para>
+
+<screen><userinput remap="pre">rm -rf *</userinput></screen>
+
+    <para>Prepare Udev for compilation:</para>
+
+<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
+CC="gcc -mx32"                          \
+CXX="g++ -mx32"                         \
+CFLAGS+=" -Wno-error=shift-overflow"    \
+CXXFLAGS+=" -Wno-error=shift-overflow"  \
+LANG=en_US.UTF-8                        \
+meson setup \
+      --prefix=/usr                 \
+      --buildtype=release           \
+      -Dmode=release                \
+      -Ddev-kvm-mode=0660           \
+      -Dlink-udev-shared=false      \
+      ..</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">ninja \
+      $(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
+        build.ninja | awk '{ print $2 }')                              \
+      $(realpath libudev.so --relative-to .)</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">mkdir -pv /usr/libx32/pkgconfig &amp;&amp;
+cp -av libudev.so{,*[0-9]} /usr/libx32/ &amp;&amp;
+sed -e "s;/usr/lib;&amp;x32;g" src/libudev/libudev.pc > /usr/libx32/pkgconfig/libudev.pc</userinput></screen>
+
+  </sect2><!-- mx32 -->
+  
   <sect2 id="conf-udev" role="configuration">
     <title>Configuring Udev</title>
Index: chapter08/util-linux.xml
===================================================================
--- chapter08/util-linux.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/util-linux.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -125,4 +125,136 @@
 -->
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Util-linux - 32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Move a tool out of the way which is optionally used by
+    configure but will report invalid pathes for multilib builds.</para>
+
+<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
+
+    <para>Prepare Util-linux for compilation:</para>
+
+<screen revision="sysv"><userinput remap="configure">CC="gcc -m32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
+            --host=i686-pc-linux-gnu \
+            --libdir=/usr/lib32      \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh      \
+            --disable-login          \
+            --disable-nologin        \
+            --disable-su             \
+            --disable-setpriv        \
+            --disable-runuser        \
+            --disable-pylibmount     \
+            --disable-static         \
+            --without-python         \
+            --without-systemd        \
+            --without-systemdsystemunitdir</userinput></screen>
+
+<screen revision="systemd"><userinput remap="configure">CC="gcc -m32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
+            --host=i686-pc-linux-gnu \
+            --libdir=/usr/lib32      \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh      \
+            --disable-login          \
+            --disable-nologin        \
+            --disable-su             \
+            --disable-setpriv        \
+            --disable-runuser        \
+            --disable-pylibmount     \
+            --disable-static         \
+            --without-python</userinput></screen>
+
+    <para>Restore the tool previously moved away:</para>
+
+<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Util-linux - x32-bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Move a tool out of the way which is optionally used by
+    configure but will report invalid pathes for multilib builds.</para>
+
+<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
+
+    <para>Prepare Util-linux for compilation:</para>
+
+<screen revision="sysv"><userinput remap="configure">CC="gcc -mx32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
+            --host=x86_64-pc-linux-gnux32 \
+            --libdir=/usr/libx32 \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            --without-systemd    \
+            --without-systemdsystemunitdir</userinput></screen>
+
+<screen revision="systemd"><userinput remap="configure">CC="gcc -mx32" \
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
+            --host=x86_64-pc-linux-gnux32 \
+            --libdir=/usr/libx32 \
+            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python</userinput></screen>
+
+    <para>Restore the tool previously moved away:</para>
+
+<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-utillinux" role="content">
Index: chapter08/xz.xml
===================================================================
--- chapter08/xz.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/xz.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -68,4 +68,66 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Xz - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Xz for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -m32" ./configure \
+    --host=i686-pc-linux-gnu      \
+    --prefix=/usr                 \
+    --libdir=/usr/lib32           \
+    --disable-static</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Xz - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Xz for compilation:</para>
+
+<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
+    --host=x86_64-pc-linux-gnux32 \
+    --prefix=/usr                 \
+    --libdir=/usr/libx32          \
+    --disable-static</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-xz" role="content">
Index: chapter08/zlib.xml
===================================================================
--- chapter08/zlib.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/zlib.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -64,4 +64,60 @@
   </sect2>
 
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Zlib - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Zlib for compilation:</para>
+
+<screen><userinput remap="configure">CFLAGS+=" -m32" CXXFLAGS+=" -m32" \
+./configure --prefix=/usr \
+    --libdir=/usr/lib32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib32/* /usr/lib32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Zlib - x32bit</title>
+
+<screen><userinput remap="pre">make distclean</userinput></screen>
+
+    <para>Prepare Zlib for compilation:</para>
+
+<screen><userinput remap="configure">CFLAGS+=" -mx32" CXXFLAGS+=" -mx32" \
+./configure --prefix=/usr    \
+    --libdir=/usr/libx32</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/libx32/* /usr/libx32
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
+
   <sect2 id="contents-zlib" role="content">
     <title>Contents of Zlib</title>
Index: chapter08/zstd.xml
===================================================================
--- chapter08/zstd.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter08/zstd.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -65,4 +65,52 @@
 
   </sect2>
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - 32bit  -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_32,ml_all" role="installation">
+    <title>Installation of Zstd - 32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make clean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">CC="gcc -m32" make prefix=/usr</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib/* /usr/lib32/
+sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- m32 -->
+
+  <!-- - - - - - - - - - -->
+  <!-- Multilib - x32bit -->
+  <!-- - - - - - - - - - -->
+  
+  <sect2 arch="ml_x32,ml_all" role="installation">
+    <title>Installation of Zstd - x32bit</title>
+
+    <para>Clean previous build:</para>
+
+<screen><userinput remap="pre">make clean</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">CC="gcc -mx32" make prefix=/usr</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
+cp -Rv DESTDIR/usr/lib/* /usr/libx32/
+sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc
+rm -rf DESTDIR</userinput></screen>
+
+  </sect2><!-- mx32 -->
 
   <sect2 id="contents-zstd" role="content">
Index: chapter10/kernel.xml
===================================================================
--- chapter10/kernel.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ chapter10/kernel.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -187,4 +187,36 @@
     </note>
 
+    <note arch="ml_32,ml_x32,ml_all">
+      <para>
+        The kernel on a multilib system needs to be able to
+        identify and start binaries compiled for different architectures
+        than the default.
+      </para>
+
+      <para arch="ml_32,ml_all">
+        If support for any 32bit ABI was built, make sure that the option
+        "IA32 Emulation" is selected. The option 'IA32 a.out support' is
+        optional.
+      </para>
+
+      <para arch="ml_x32,ml_all">
+        If support for the x32bit ABI was built, make sure that the option
+        "x32 ABI for 64-bit mode" is selected.
+      </para>
+
+<screen arch="ml_32">Binary Emulations  ---&gt;
+    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
+    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
+</screen>
+<screen arch="ml_x32">Binary Emulations  ---&gt;
+    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
+</screen>
+<screen arch="ml_all">Binary Emulations  ---&gt;
+    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
+    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
+    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
+</screen>
+    </note>
+    
     <variablelist>
       <title>The rationale for the above configuration items:</title>
Index: packages.ent
===================================================================
--- packages.ent	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ packages.ent	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -349,4 +349,13 @@
 <!ENTITY iproute2-fin-du "17 MB">
 <!ENTITY iproute2-fin-sbu "0.1 SBU">
+
+<!ENTITY isl-version "0.24">
+<!ENTITY isl-size "2.1 MB">
+<!-- ENTITY isl-url "http://isl.gforge.inria.fr/isl-&isl-version;.tar.xz" -->
+<!ENTITY isl-url "https://gcc.gnu.org/pub/gcc/infrastructure/isl-&isl-version;.tar.bz2">
+<!ENTITY isl-md5 "dd2f7b78e118c25bd96134a52aae7f4d">
+<!ENTITY isl-home "http://isl.gforge.inria.fr/">
+<!ENTITY isl-fin-du "20 MB">
+<!ENTITY isl-fin-sbu "0.1 SBU">
 
 <!ENTITY jinja2-version "3.1.2">
Index: prologue/bookinfo.xml
===================================================================
--- prologue/bookinfo.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ prologue/bookinfo.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -8,5 +8,5 @@
 <bookinfo>
   <title>Linux From Scratch</title>
-  <subtitle>Version &version;</subtitle>
+  <subtitle>Version &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase></subtitle>
   <subtitle>Published &releasedate;</subtitle>
 
@@ -29,4 +29,9 @@
       <firstname>Editor: DJ</firstname>
       <surname>Lucas</surname>
+    </author>
+
+    <author arch="ml_32,ml_x32,ml_all">
+      <firstname>Editor: Thomas</firstname>
+      <surname>Trepl</surname>
     </author>
   </authorgroup>
Index: prologue/multilib.xml
===================================================================
--- prologue/multilib.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
+++ prologue/multilib.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 arch="ml_32,ml_x32,ml_all" id="pre-multilib">
+  <?dbhtml filename="multilib.html"?>
+
+  <title>About the Multilib Edition</title>
+
+  <sect2><title>What is Multilib</title>
+
+    <para>Today, most systems in the x86 world have a word size of 64 
+      bit. The word size is a number of bits which can be used at once
+      in the most efficient way. Previous architectures of x86 processors
+      had a word size of 32 bit which means they have a different 
+      understanding of what is the best alignment of data in memory as
+      well as they have a different mechanism to address a different size
+      of memory. Even the instruction set of the 64 bit processors is 
+      quite simmilar to the instructions of 32 bit processors, binaries
+      (objects compiled to machine code) cannot directly be executed on
+      64 bit systems.</para>
+
+    <para>Multilib is a mechanism to provide support for the 32 bit 
+      binaries so that they can be executed of modern 64 bit CPUs.</para>
+
+  </sect2>
+
+  <sect2><title>Why doing Multilib?</title>
+
+    <para>From an educational point of view, LFS in its 'native' form is
+      probably the best way to see how a Linux system is built from source.
+      There is no need to confuse with different architectures. But when
+      there is a need to run 32 binaries and you don't want to build the 
+      whole system in 32 bit (which would be waste of ressources 
+      nowadays) then LFS-multilib is an option. Examples for such a
+      need could be
+      <itemizedlist>
+        <listitem><para>Closed-source software without source only 
+          available for 32 bit. That may be the case for printer driver 
+          or any other kind of hardware drivers, the company provides 
+          the binaries. If you have such a driver, LFS-multilib 
+          may help you getting the stuff running</para>
+        </listitem>
+        <listitem><para>If you want to go far beyond LFS and setup a 
+          virtualization platform like <application>VirtualBox</application>,
+          you will need multilib support</para>
+        </listitem>
+        <listitem><para>or even just because you can</para>
+        </listitem>
+      </itemizedlist>
+      
+    </para>
+
+    <para>The multilib edition of LFS goes a small step beyond and a 
+      small step back to what has been said in the previous section 
+      when talking about target architectures. On one hand, the multilib 
+      edition is focused and <emphasis>limited</emphasis> to x86_64 
+      architectures only, on the other hand, it <emphasis>expands</emphasis>
+      the instructions to utilize both possible architectures, namely
+      32-bit as well as 64-bit.</para>
+
+    <para>It also goes a bit beyond the basic educational 
+      approach of LFS which is to show you how to build a Linux system. 
+      To achieve this, no support for additional architectures than 
+      the default one for your system is required. If you haven't 
+      previously built by the standard LFS book, you are encouraged to 
+      do so before using this edition.</para>
+
+  </sect2>
+
+  <sect2><title>Building a Multilib System</title>
+
+    <para>Building a multilib system is not that much different from 
+      building a system by using the 'native' LFS book. Beside some 
+      tweaks here and there the most prominent difference is that 
+      multilib requires compiling some applications up to three times:
+      one for the primary 64-bit architecture,
+      one for the 32-bit architecture (m32),
+      and once again for the 32-bit architecture with is 32-bit memory 
+      access and 64 bit instruction set (mx32).</para>
+
+    <para>Continue only if you and your system meets the following 
+      requirements:
+      <itemizedlist>
+        <listitem>
+          <para>you have a x86_64 compatible machine</para>
+          <note><para>
+            If you have access to the kernel config for your system,
+            you will need to have
+            <parameter>CONFIG_IA32_EMULATION=y</parameter>
+            set in order to build for <parameter>m32</parameter> and
+            <parameter>CONFIG_X86_X32=y</parameter> set in order to
+            build for <parameter>mx32</parameter>. 
+          </para>
+          <para>
+           If you do not have access to the kernel config for your system,
+            you may be able to test for compatability by running the 
+            following commands:
+          </para>
+<screen><userinput>echo 'int main(){}' &gt; dummy.c
+gcc -m32 dummy.c
+./a.out
+
+gcc -mx32 dummy.c
+./a.out</userinput></screen>
+          <para>
+            If either of the <command>./a.out</command> commands results in an 
+            "Exec format error" message, then you do not have a system kernel
+            capable of building for that architecture within LFS, and so you
+            should probably look to build an LFS system without Multilib, but
+            with the required kernel capabilities, and use that to build a
+            Multilib system.
+          </para></note>
+        </listitem>
+        <listitem><para>you already have some experience with LFS</para></listitem>
+        <listitem><para>you have a need for 32-bit support</para></listitem>
+      </itemizedlist>
+    </para>
+
+    <para>If you passed all three requirements, go ahead and build LFS 
+      in multilib mode.</para>
+
+  </sect2>
+
+</sect1>
Index: prologue/preface.xml
===================================================================
--- prologue/preface.xml	(revision d11686c6f0d1ef2d7c739e06ef151155b19e3469)
+++ prologue/preface.xml	(revision a161ad9dfcdae7105e02bf80b04086d45c17c14e)
@@ -16,4 +16,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="prerequisites.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="multilib.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
