glibc-2.2.5 fails to build with gcc-3.2 unless this patch is applied. Read some background to this issue starting here. Grab the patch here.
There is a dns related security vulnerability in glibc-2.2.5. Read some background to this issue starting here. Grab the patch here.
There is an integer overflow related security vulnerability in glibc-2.2.5. Read some background to this issue starting here. Grab the patch here.
There is a memory allocation related security vulnerability in glibc-2.2.5. Read some backgound to this issue starting here. Grab the patch here.
Thread exit handling is broken in glibc-2.2.5. Read some background to this issue starting here. Grab the patch here.
Some old binaries won't run (mostly vendor supplied closed source). Read some background to this issue starting here and here. Grab the patch here.
glibc's "make check" fails 2 math tests. Read some background to this issue starting here. Grab the patch here.
Building glibc with gcc-3.2 generates some ugly compiler warnings. Read some backgound to this issue starting here. Grab the patch here.
Building glibc with gcc-3.2 generates some ugly compiler warnings. Read some backgound to this issue starting here. Grab the patch here.
All of the above glibc patches combined into one, nice, easy to download patch. Grab the patch here.
glibc contains a lot of compatibility cruft to cope with older kernels. Read some background to this issue starting here. Simply add the following command to your glibc configure line:---enable-kernel=currentThe result will be a leaner and meaner glibc (but one that won't run on kernels older than what you were running when building glibc).
When was the last time you profiled glibc? Right. You'll know if you need the profiling libs or not. Read some background to this issue starting here. Simply add the following command to your glibc configure line:-
--disable-profile
The result will be a quicker build time and less cruft in /usr/lib.
glibc's "make check" fails the "tstcxaatexit" test. Read some background to this issue starting here and here. The cause is due to gcc's configure script failing to detect that our binutils assembler has ".hidden" support. The result is that our chapter 5 gcc is broken and we use this faulty gcc to build our glibc which results in that being broken as well. The fix is to add a simple one-liner to the gcc-3.2 build instructions for chapter 5. Insert the following line after the configure command but before the make command:-
echo "#define HAVE_GAS_HIDDEN 1" >> gcc/auto-host.h &&
You don't need to do this in Chapter 6 as gcc-3.2's configure will now correctly detect our binutils.
gcc-3.2 silently mis-compiles code in certain circumstances. Read some background to this issue starting here and here. Grab the patch here.
gcc-3.2 silently mis-compiles code in certain circumstances. Read some background to this issue starting here. Grab the patch here.
For proper ABI compatibility gcc-3.2 must be built with the correct configure switches. Read some background to this issue starting here. Simply add the following command to your Chapter 6 gcc configure line:---enable-__cxa_atexitThis will result in C++ shared libraries and C++ programs that are interoperable with other linux distributions.
gcc-3.2 outputs "i386" instructions by default (ie: when no -march flag is passed). You can easily remedy this less than ideal situation! Read some background to this issue starting here and here. Grab the patch here.
Use this experimental patch to change gcc's defaults for -march= and -mcpu= at configure time. Read some background to this issue starting here. Grab the patch here. For example, you could add the following commands to your gcc configure line:-
--with-arch=pentium2 --with-cpu=pentium3
This will result in your gcc compiling for -march=pentium2 -mpcu=pentium3 by default (ie: when no -march or -mcpu flags are passed).