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'

Reply via email to