Gnu Toolchain/Compatibility Matrix

This page is designated for tabulating version dependencies between different toolchain packages in order to identify stable toolchains for release. It can also be used to outline version [in]compatibility issues e.g. GLIBC 2.4 will not work with gcc 3.4.3 because GLIBC 2.4 requires thread local storage (i.e. __THREAD) and GCC 3.4.3 doesn't provide TLS support.

=Inter-Package Compatibility Matrix= =Stabilized Toolchain Dependency Tables=
 * 1)  From the GCC 4.2.1 manual: always_inline(function attribute):
 * "Generally, functions are not inlined unless optimization is specified.
 * For functions declared inline, this attribute inlines the function
 * even if no optimization level was specified."
 * Given the following prototype:
 * static inline function_name
 * If explicit optimization wasn't specified then the function would not be inlined as necessary. One could direct GCC to inline even without the optimization flags using __attribute__((always_inline)) but for GLIBC this is never done, e.g.
 * static inline function_name __attribute__((always_inline))
 * 1)  libc-alpha Re: glibc only with optimization?
 * "In the early startup of the dynamic loader (_dl_start), before
 * relocation of the PLT, you cannot make function calls. You must inline
 * the functions you will use during early startup, or call compiler
 * builtins (__builtin_*).
 * Without optimizations enabled gcc will not inline functions. The early
 * startup of the dynamic loader will make function calls via an
 * unrelocated PLT and crash." -- Carlos O'Donell
 * glibc-bugs: Bug faq/5012 Why must glibc be compiled with optimizations enabled?
 * "Without auditing the dynamic linker code it would be difficult to remove
 * this requirement. In practice there is no reason to compile without
 * optimizations, therefore we require that GNU libc be compiled with
 * optimizations enabled." -- Carlos O'Donell
 * glibc-bugs: Bug faq/5012 Why must glibc be compiled with optimizations enabled?
 * "There are other reasons. For instance, nested functions must be inlined in many cases to avoid executable stacks. "  -- Ulrich Drepper
 * 1)  From the libc-alpha mailing list: glibc --with-headers and GCC 4.3ish trunk: include-fixed required
 * Roland uses a different method (see patch set below).
 * 1)  Patches from glibc-cvs mailing list: libc configure.in configure
 * 2)  From the libc-alpha mailing list: glibc-2.7 and autoconf 2.61 dependency in libc/nptl/sysdeps/configure
 * 1)  From the libc-alpha mailing list: glibc-2.7 and autoconf 2.61 dependency in libc/nptl/sysdeps/configure


 * 1)  Binutils 2.17.50 provides BFD support for an extended 'mtfsfi' instruction, among others, which take a optional third parameter as necessary on Power6 for setting the high-order 32-bits of the new 64-bit FPSCR register.
 * 2)  GDB Version 6.6
 * 3)  GMP Version 4.2.1
 * 4)  MPFR Version 2.3.0
 * 5)  GLIBC private futex Patch
 * 6)  Libgcc plt-fix patch
 * 7)  GLIBC sysdep-cancel.h patch
 * 8)  GLIBC socket.S patch