Hi Art, > I've had no luck building GCC on a Sparc-based Solaris machine here > since early March - right around the time some LTO related patches > landed. I've started trying again and the build fails when linking > libgcc_so at the end of stage1. Here's the end of the build log: > > { ... snip ... } > /bin/bash /export/home/arth/src/gcc.git/libgcc/../mkinstalldirs sparcv9 > mkdir -p -- sparcv9 > /export/home/arth/src/gcc-0731/./gcc/xgcc > -B/export/home/arth/src/gcc-0731/./gcc/ > -B/export/home/arth/local/sparc-sun-solaris2.10/bin > / -B/export/home/arth/local/sparc-sun-solaris2.10/lib/ -isystem > /export/home/arth/local/sparc-sun-solaris2.10/include -isystem /expor > t/home/arth/local/sparc-sun-solaris2.10/sys-include -O2 -g -O2 -DIN_GCC -W > -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -W > no-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition > -isystem ./include -fPIC -g -DIN_LIBGCC2 -fbuilding-libg > cc -fno-stack-protector -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 > -Wl,--version-script=libgcc.map -o sparcv9/libgcc_s.so.1.t > mp -g -O2 -m64 -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 _trampol > ine_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 _popcou > ntsi2_s.o _popcountdi2_s.o _paritysi2_s.o _paritydi2_s.o _powisf2_s.o > _powidf2_s.o _powixf2_s.o _powitf2_s.o _mulsc3_s.o _muldc3_s.o > _mulxc3_s.o _multc3_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 _fixu > nssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o > _fixxfdi_s.o _fixtfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixun > sxfdi_s.o _fixunstfdi_s.o _floatdisf_s.o _floatdidf_s.o _floatdixf_s.o > _floatditf_s.o _floatundisf_s.o _floatundidf_s.o _floatundixf_ > s.o _floatunditf_s.o _divdi3_s.o _moddi3_s.o _udivdi3_s.o _umoddi3_s.o > _udiv_w_sdiv_s.o _udivmoddi4_s.o enable-execute-stack_s.o unwi > nd-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 sparcv9/libgcc_s.so && if [ -f sparcv > 9/libgcc_s.so.1 ]; then mv -f sparcv9/libgcc_s.so.1 > sparcv9/libgcc_s.so.1.backup; else true; fi && mv sparcv9/libgcc_s.so.1.tmp > sparc > v9/libgcc_s.so.1 && ln -s libgcc_s.so.1 sparcv9/libgcc_s.so > collect2: fatal error: ld terminated with signal 10 [Bus Error], core dumped > compilation terminated. > gmake[5]: *** [libgcc_s.so] Error 1 > gmake[5]: Leaving directory > `/export/home/arth/src/gcc-0731/sparc-sun-solaris2.1 > 0/sparcv9/libgcc' > gmake[4]: *** [multi-do] Error 1 > gmake[4]: Leaving directory > `/export/home/arth/src/gcc-0731/sparc-sun-solaris2.1 > 0/libgcc' > gmake[3]: *** [all-multi] Error 2 > gmake[3]: *** Waiting for unfinished jobs.... > gmake[3]: Leaving directory > `/export/home/arth/src/gcc-0731/sparc-sun-solaris2.1 > 0/libgcc' > gmake[2]: *** [all-stage1-target-libgcc] Error 2 > gmake[2]: Leaving directory `/export/home/arth/src/gcc-0731' > gmake[1]: *** [stage1-bubble] Error 2 > gmake[1]: Leaving directory `/export/home/arth/src/gcc-0731' > gmake: *** [bootstrap] Error 2 > > The machine has the 2.24 release of GNU binutils installed. The crash > leaves a core file which contains this backtrace: > > $ cd ~/src/gcc-0731/sparc-sun-solaris2.10/sparcv9/libgcc > $ pstack core > core 'core' of 20626: /export/home/arth/local/bin/ld -plugin > /export/home/arth/src/gcc-0731/ > fbb54bc0 claim_file_handler (ffbfb664, ffbfb5fc, 0, 0, 0, 0) + 38 > 0003198c plugin_maybe_claim (ffbfb664, 186840, 2, 181000, 181000, 189220) + > 6c > 0002ecf0 ldfile_try_open_bfd (1, 186840, fbb43800, 0, 6, ffbfbf59) + 1b0 > 0002f3ec ldfile_open_file (186840, 1, e8070, fba563a0, fbb3e3c0, fbb485b8) + > ac > 00022560 load_symbols (186840, ffbfb7a0, ffffffff, fffffff8, 0, 186840) + 20 > 000233a0 open_input_bfds (186840, 0, 1b174, 1, 1859ac, 1811ac) + 1a0 > 000259a4 lang_process (185800, 185800, 181000, 0, 181000, 1859d8) + a4 > 000129e4 main (185a64, 181000, 185800, 185ab8, 1859d8, 0) + 604 > 00012f9c _start (0, 0, 0, 0, 0, 0) + 5c > $ > > I hope the backtrace is helpful to some degree even though the crash is > in the GNU 'ld' linker.
Not necessarily: claim_file_handler is most likely in lto-plugin.so, which is from the gcc tree. I'd initially have said that any ld crash is ld's fault, but this is probably different due to the plugin involved. To investigate more closely, you'd have to run ld under gdb and check what exactly is breaking here. That said, I'm bootstrapping with gas/gld 2.24 on Solaris/SPARC all the time, and it works fine for me. One important issue is that I configure binutils with --enable-largefile to avoid the issues mentioned in PR lto/50935. > When looking over the mailing list archives I found the long thread > regarding the LTO linker change and the resulting fallout: > > Patch lands: > https://gcc.gnu.org/ml/gcc-patches/2014-03/msg00157.html > > Maintainer notes it breaks the build: > https://gcc.gnu.org/ml/gcc-patches/2014-03/msg00391.html > > After several days a fix was applied, but my builds still fail. Is there > a configuration change needed to activate the fix? Could be, see above. Apart from that, I wonder why you insist on using GNU ld on Solaris. install.texi strongly suggests to use the Solaris linker instead, and I stand by that advise. > Here's the info for my last successful GCC build: > > $ gcc -v > Using built-in specs. > COLLECT_GCC=gcc > COLLECT_LTO_WRAPPER=/export/home/arth/local/libexec/gcc/sparc-sun-solaris2.10/4.9.0/lto-wrapper > Target: sparc-sun-solaris2.10 > Configured with: /export/home/arth/src/gcc.git/configure > --prefix=/export/home/arth/local --enable-languages=c,c++,objc > --disable-nls --with-gmp=/export/home/arth/local > --with-mpfr=/export/home/arth/local --with-mpc=/export/home/arth/local > --enable-checking=release --enable-threads --with-gnu-as > --with-as=/export/home/arth/local/bin/as --with-gnu-ld > --with-ld=/export/home/arth/local/bin/ld --enable-libstdcxx-pch=no A couple of comments on those configure options: avoid everything not strictly necessary and stay with the defaults. * --enable-threads: unnecessary, default * GNU as is ok in general (both Solaris/SPARC and x86), but Solaris as should work just as well * See above for GNU ld. * I never saw any need for (or even knew about) --enable-libstdcxx-pch=no. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University