I'm not completely sure I got your issue here.
I have written several builders that, for different reasons, need to work with a specific toolchain for an architecture/bit, so I treat them *like if* they were completely different architectures
ARMaarch64-unknown-linux-gnu-12
armv5tel-softfloat-linux-gnueabi-12
armv7a-unknown-linux-gnueabihf-12
HPPAhppa-unknown-linux-gnu-12
hppa64-unknown-linux-gnu-12
x86i686-pc-linux-gnu-11,12
x86_64-pc-linux-gnu-12
MIPSloongarch64-unknown-linux-gnu (actually, this is not MIPS64 compatibile at the binary level)
mips-unknown-linux-gnu
mips64-unknown-linux-gnu
mipsel-unknown-linux-gnu ("el" means little endian, this compiles for the SONY Playstation1, as well as for MK routers)
mips64el-unknown-linux-gnu
mips5p-myc (this compiles for MIPS5++, it's my compiler, myc forced to "c/89" compatibility, which is 90%)
PPCpowerpc-unknown-linux-gnu-13
powerpc64-unknown-linux-gnu-13
RISCVriscv-unknown-linux-gnu-13
riscv64-unknown-linux-gnu-13
But if you're wondering about which gcc supports what, historically the x86_64 targets well, AMD64 and i686, 32-bit x86 CPUs.
Yup, precisely
crossdev was written by
Vapier (Gentoo dev), I'm trying to understand a bit of his motivations.
Given that on x86_32 stage4 (like in the exable above, taken from my old macmini 2009 with 2GB of ram, running both 32bit kernel and 32bit userland)
crossdev has no problems keeping separate
i686-pc-linux-gnu-11 * <------------ host compiler
x86_64-pc-linux-gnu-12 * <----------- crosscompiler
While on x86_64 stage4 (on my new mac-mini 2009 with 8GB of ram)
crossdev suggests using gcc_x86_64 also for { i486, i586, i686 }, which is ... a bit weird for me
x86_64-pc-linux-gnu-12 * <----------- host compiler
i686-pc-linux-gnu-11 * <------------ should be *THE* cross compiler, but
crossdev refuses to emerge, suggests templates to the host compiler
...and I wonder... if this is okay.
But I think you can use just a x86_64 gcc and generate 32-bit code with it using the -m32 option flag.
(Unless possibly 32-bit support has been disabled when building it, which is possible.)
from the standard profile, it has been configured:
/var/tmp/portage/sys-devel/gcc-12.2.1_p20230121-r1/work/gcc-12-20230121/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/12 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/12/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/12 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/12/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/12/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/12/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 12.2.1_p20230121-r1 p10' --with-gcc-major-version-only --disable-esp --enable-libstdcxx-time --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-cet --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --without-isl --enable-default-pie --enable-default-ssp
ummm