GCC 4.7 has x32 ABI support checked in, however in Gentoo we apply extra patches from hjl branch. Currently it is done conditionally: # drop the x32 stuff once 4.7 goes stable if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis) ; then EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch" fi However this doesn't disable x32 ABI support, it only skips bug-fixing patch. Moreover recent gcc always have 64/x32 ABI support (without runtime libs) even on i686-pc-linux-gnu. Example: $ i686-pc-linux-gnu-gcc-4.5.3 -march=athlon64 -m64 -c test.c $ file test.o test.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped Basically it means that there is no need in x86_64 cross-compiler on i686, as system one already has 64 bit (and x32 starting from GCC 4.7) support. Reproducible: Always
the patch affects files other than just x32, so i'm not confident in merging it except when the x32 ABI is active yes, all x86 toolchains now support *code generation* for all targets, but that is independent of generating all the ABI libraries.