In Linux From Scratch chapter 5.5 (GCC-4.9.2 - Pass 1), building a GCC that is used to build glibc, we uses a hack in GCC's configure script to tell GCC that stack protection will be available (gcc_cv_libc_provides_ssp=yes). However when I tried to bootstrap a cross-toolchain, I found recent versions of GCC introduced the '--with-glibc-version' configure option just for this purpose, and so the hack is not needed anymore.
I also verified that the configure option is indeed present in GCC 4.9.0 (not in 4.8.x or before). See also <https://gcc.gnu.org/ml/gcc-patches/2013-11/msg00619.html>. Thanks to GCC and glibc developers. A quick Google search shows that '--with-glibc-version' is already used in Linaro toolchain in its bootstrapping <https://lists.linaro.org/pipermail/linaro-toolchain/2014-September/004581.html> So LFS can use it too. By the way, the '--with-newlib' option may be still needed (along with '--without-headers'), for defining GCC's internal 'inhibit_libc' constant. This may sound confusing when used together with '--with-glibc-version', so something should be noted to clarify the usage. P.S. (2015-03-30) I've tried building a cross-toolchain for my own use - not for LFS, and experimented with 2-compiler bootstrap [1] and 3-compiler bootstrap [2], and found out the libc binaries between two methods are not necessary bit-identical. In particular, two symbol names are different, like this: completed.3589 , completed.6241 dtor_idx.3591 , dtor_idx.6243 Other parts (text, data sections, etc) are all the same. Just for your reference. Tested on a i686-linux-gnu (Ubuntu 12.04 in Virtualbox) building a cross-toolchain with x86_64-linux-gnu target. [1] For the 2-compiler bootstrap here I mean the method similar to LFS, but with '--with-glibc-version' instead of configure script hack. My steps are roughly: Build first GCC (with '--with-glibc-version=2.19 --without-headers --with-newlib' and disable all support libraries) --> Use first GCC to build glibc --> Build second GCC and all its support libraries. [2] For 3-compiler bootstrap I mean the method similar to <http://code.metager.de/source/xref/lib/eglibc/libc/EGLIBC.cross-building>. My steps are roughly: Build first GCC (--without-headers --with-newlib and disable all support libraries) --> Build glibc but only headers and crt*.o --> Build second GCC (--enable-shared=libgcc but no other targer libraries) --> Build glibc --> Build third GCC and all its support libraries. ---- Kang-Che Sung ("Explorer") -- http://lists.linuxfromscratch.org/listinfo/lfs-support FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page Do not top post on this list. A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing in e-mail? http://en.wikipedia.org/wiki/Posting_style