I've setup an x32 test environment using Gentoo in hopes of being able to both compile and run x32 tests, but I'm having problems getting a successful bootstrap. I'm guessing this is due to something currently broken with x32, but I want to make sure it's not something I'm doing wrong, and if it is broken that we are aware of it.
I'm able to get a 7.1 bootstrap using: /home/daniel/proj/sys/gcc/7.x/configure --prefix=/home/daniel/local/gcc-7.1.0 --build=x86_64-pc-linux-gnux32 --with-abi=mx32 --enable-checking=yes,rtl --enable-languages=all --enable-bootstrap --enable-option-checking --enable-lto --enable-gold=yes --with-system-zlib --enable-link-mutex --enable-libgomp --enable-targets=all --disable-gcj (I guess --disable-gcj was probably useless now) But when I configure the same way from the head (from two days ago), it fails on stage2: /home/daniel/proj/sys/gcc/unpatched/configure --prefix=/home/daniel/local/gcc-unpatched --build=x86_64-pc-linux-gnux32 --with-abi=mx32 --enable-checking=yes,rtl --enable-languages=all --enable-bootstrap --enable-option-checking --enable-lto --enable-gold=yes --with-system-zlib --enable-link-mutex --enable-libgomp --enable-targets=all --disable-gcj Here the build fails on stage 2 with: /home/daniel/proj/sys/gcc/builds/unpatched/./prev-gcc/xg++ -B/home/daniel/proj/sys/gcc/builds/unpatched/./prev-gcc/ -B/home/daniel/local/gcc-unpatched/x86_64-pc-linux-gnux32/bin/ -nostdinc++ -B/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/src/.libs -B/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/libsupc++/.libs -I/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/include/x86_64-pc-linux-gnux32 -I/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/include -I/home/daniel/proj/sys/gcc/unpatched/libstdc++-v3/libsupc++ -L/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/src/.libs -L/home/daniel/proj/sys/gcc/builds/unpatched/prev-x86_64-pc-linux-gnux32/libstdc++-v3/libsupc++/.libs -fno-PIE -c -g -O2 -gtoggle -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I/home/daniel/proj/sys/gcc/unpatched/gcc -I/home/daniel/proj/sys/gcc/unpatched/gcc/. -I/home/daniel/proj/sys/gcc/unpatched/gcc/../include -I/home/daniel/proj/sys/gcc/unpatched/gcc/../libcpp/include -I/home/daniel/proj/sys/gcc/unpatched/gcc/../libdecnumber -I/home/daniel/proj/sys/gcc/unpatched/gcc/../libdecnumber/bid -I../libdecnumber -I/home/daniel/proj/sys/gcc/unpatched/gcc/../libbacktrace -o insn-extract.o -MT insn-extract.o -MMD -MP -MF ./.deps/insn-extract.TPo insn-extract.c <lines snipped> cc1plus: out of memory allocating 56137200 bytes after a total of 3148800000 bytes make[3]: *** [Makefile:1104: insn-extract.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Nothing wrong with failing to allocate after 3002.9MiB, but it claimed to have only been trying to allocate 53MiB. I saw Uros had a few x32-related commits so I've pulled and I've got a bootstrap running again now. Thanks, Daniel PS: As an aside note, I omitting --build=x86_64-pc-linux-gnux32 and passing --with-multilib-list=m32,m64,mx32 instead of --with-abi=mx32, but configure (incorrectly) guesses x86_64-pc-linux-gnu and stage 2 breaks when it tries to call ld (which is elf32-x86_64 on this system) and fails to link in the plugin (which is elf64). I built this Gentoo system with ABI_X86="64 32 x32", so libs for all 3 ABIs are actually present but {,/usr}/bin/* are all x32, but I'm presuming that the triplet guess is still the problem here? /home/daniel/proj/sys/gcc/builds/unpatched/./gcc/xgcc -B/home/daniel/proj/sys/gcc/builds/unpatched/./gcc/ -B/home/daniel/local/gcc-unpatched/x86_64-pc-linux-gnu/bin/ -B/home/daniel/local/gcc-unpatched/x86_64-pc-linux-gnu/lib/ -isystem /home/daniel/local/gcc-unpatched/x86_64-pc-linux-gnu/include -isystem /home/daniel/local/gcc-unpatched/x86_64-pc-linux-gnu/sys-include -O2 -g -O2 -ggdb -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc.map -o 32/libgcc_s.so.1.tmp -g -O2 -ggdb -m32 -B./ _muldi3_s.o _negdi2_s.o _lshrdi3_s.o _ashldi3_s.o _ashrdi3_s.o _cmpdi2_s.o _ucmpdi2_s.o _clear_cache_s.o _trampoline_s.o __main_s.o _absvsi2_s.o _absvdi2_s.o _addvsi3_s.o _addvdi3_s.o _subvsi3_s.o _subvdi3_s.o _mulvsi3_s.o _mulvdi3_s.o _negvsi2_s.o _negvdi2_s.o _ctors_s.o _ffssi2_s.o _ffsdi2_s.o _clz_s.o _clzsi2_s.o _clzdi2_s.o _ctzsi2_s.o _ctzdi2_s.o _popcount_tab_s.o _popcountsi2_s.o _popcountdi2_s.o _paritysi2_s.o _paritydi2_s.o _powisf2_s.o _powidf2_s.o _powixf2_s.o _powitf2_s.o _mulhc3_s.o _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _multc3_s.o _divhc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _divtc3_s.o _bswapsi2_s.o _bswapdi2_s.o _clrsbsi2_s.o _clrsbdi2_s.o _fixunssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o _fixxfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixunsxfdi_s.o _floatdisf_s.o _floatdidf_s.o _floatdixf_s.o _floatundisf_s.o _floatundidf_s.o _floatundixf_s.o _divdi3_s.o _moddi3_s.o _divmoddi4_s.o _udivdi3_s.o _umoddi3_s.o _udivmoddi4_s.o _udiv_w_sdiv_s.o cpuinfo_s.o tf-signs_s.o sfp-exceptions_s.o addtf3_s.o divtf3_s.o eqtf2_s.o getf2_s.o letf2_s.o multf3_s.o negtf2_s.o subtf3_s.o unordtf2_s.o fixtfsi_s.o fixunstfsi_s.o floatsitf_s.o floatunsitf_s.o fixtfdi_s.o fixunstfdi_s.o floatditf_s.o floatunditf_s.o extendsftf2_s.o extenddftf2_s.o extendxftf2_s.o trunctfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o enable-execute-stack_s.o unwind-dw2_s.o unwind-dw2-fde-dip_s.o unwind-sjlj_s.o unwind-c_s.o emutls_s.o libgcc.a -lc && rm -f 32/libgcc_s.so && if [ -f 32/libgcc_s.so.1 ]; then mv -f 32/libgcc_s.so.1 32/libgcc_s.so.1.backup; else true; fi && mv 32/libgcc_s.so.1.tmp 32/libgcc_s.so.1 && (echo "/* GNU ld script"; echo " Use the shared library, but some functions are only in"; echo " the static library. */"; echo "GROUP ( libgcc_s.so.1 -lgcc )" ) > 32/libgcc_s.so <lines snipped> /usr/lib/gcc/x86_64-pc-linux-gnux32/5.4.0/../../../../x86_64-pc-linux-gnux32/bin/ld: /home/daniel/proj/sys/gcc/builds/unpatched/./gcc/liblto_plugin.so: error loading plugin: /home/daniel/proj/sys/gcc/builds/unpatched/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS64 collect2: error: ld returned 1 exit status make[5]: *** [Makefile:982: libgcc_s.so] Error 1 make[5]: Leaving directory '/home/daniel/proj/sys/gcc/builds/unpatched/x86_64-pc-linux-gnu/32/libgcc'