"The command below shows an example of nested command substitution
using two methods: backquotes and a $() construct. It could be
rewritten using the same method for both substitutions, but is
shown this way to demonstrate how they can be mixed. Generally
the $() method is preferred."
We need to enable decimal float here or MPFR will be built w/o decimal
float support. Then 2 of 183 tests will be skipped, and this will also
cause an ICA issue.
Q: Why we need decimal float in pass 1?
A: We need pass-1 GCC with decimal float support to build decimal float
routines in pass-2 libgcc.
Expand tabs to 8 spaces like everywhere else in the book.
Explain that shared libraries are already covered by ASLR, PIE expands
the ASLR to cover the exetutables.
In 2022, stack smashing attackings are mostly constructing a sequence of
faked returning addresses to exectute a series of function already
existing in the programs or libraries itself (ret2lib). Returning into
the code injected by the attacker is almost impossible because on
i686 (with a PAE/NX enabled kernel) or x86_64, running injected code
needs W/X mappings and those are very rare these days.
Committing only the commands for now, so that others can test the
build. TODO:
- add command explanations
- add changelog
- comment on failing tests in binutils and gcc
A requirement on Glibc is not needed at all. It's enough once
$LFS_TGT-* is runnable. A test on Alpine (using musl as libc) has
practically proved this.
We'd raised binutils and GCC requirements mostly for Glibc. But now
Glibc is cross compiled by our cross toolchain with latest GCC and
binutils release, the host tools really does not matter. In the Glibc
building process only two .c files are build with BUILD_CC (the C
compiler from the host), and they are highly conservative (mostly
unchanged for years).
Binutils does not have too much requirement on host GCC & Binutils:
there is even a Binutils commit in this week fixing a build failure with
GCC-4.2!
So the most strict limitation comes from GCC. GCC requires host GCC to
support ISO C++ 11 so GCC >= 4.8 is needed. And both GCC-4.8 and latest
GCC-11.2 claims a requirement for Binutils-2.12 (for x86_64) or 2.13.1
(for 32-bit x86), so we make minimal Binutils version 2.13.1.
And, host bzip2 is never used now: the only .tar.bz2 files are elfutils
and python docs. They are not decompressed before entering chroot.
"info gccinstall" says:
'--with-glibc-version=MAJOR.MINOR'
Tell GCC that when the GNU C Library (glibc) is used on the target
it will be version MAJOR.MINOR or later. Normally this can be
detected from the C library's header files, but this option may be
needed when bootstrapping a cross toolchain without the header
files available for building the initial bootstrap compiler.
So it can, and should be set to the version of glibc which will be built
for the chroot environment.
On x86_64, currently it does not make any difference with values >=
2.13. But it may make a difference if a new feature is added to glibc,
or on other platforms.
Update to gmp-6.1.2.
Update to iproute2-4.9.0.
Update to man-pages-4.09.
Update to man-db-2.7.6.1.
Update to linux-4.9.
Update to eudev-3.2.1.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@11157 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Update to eudev-3.1.2.
Update to mpfr-3.1.3.
Update to linux-4.1.
Simplify gcc-pass1 instructions. Thanks to Pierre Labastie for the patch.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10918 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Update to file-5.18
Update to flex-2.5.39
Update to GMP-6.0.0a
Update to libpipeline-1.3.0
Update to man-pages-3.64
Update to systemd-212
Update to udev-lfs-20140408
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10532 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689