https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926
--- Comment #14 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> --- > --- Comment #12 from Dennis Clarke <dclarke at blastwave dot org> --- > I don't mean to ask what may seem obvious but does it make sense to > add a not required "dummy .text" section? I mean to say, is there a > valid reason why gas would add in a blank ".text" where none is actually > required? While I agree with you in principle, emitting such a dummy .text on Solaris/SPARC when all of gas (both sparc and x86) and Solaris/x86 as do so seems to cause not much harm, but helps avoid the weird comparison failures we're seeing (which aren't cause by functional changes in this case). > Also, as a follow up, I did actually get a full three stage bootstrap of > 7.2.0 while using --enable-languages=ada,c,c++,fortran,go,lto,objc,obj-c++. > This surprised me however at this point I had already installed the > previous 7.2.0 build and also did specify --enable-stage1-languages=c,c++ > to get a minimal stage1 compiler. The test results looked like : > > https://gcc.gnu.org/ml/gcc-testresults/2017-08/msg02494.html > > I question those results because neither the bootstrap nor the testsuite > would complete without a strange error at the last moment. The bootstrap > will fail because of a complaint for "missing-objcopy" in stage 3 thus : > > libtool: compile: > /usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008/./gcc/gccgo > -B/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008/./gcc/ > -B/usr/local/gcc7/sparc64-sun-solaris2.10/bin/ > -B/usr/local/gcc7/sparc64-sun-solaris2.10/lib/ -isystem > /usr/local/gcc7/sparc64-sun-solaris2.10/include -isystem > /usr/local/gcc7/sparc64-sun-solaris2.10/sys-include -O2 -g -I . -c > -fgo-pkgpath=runtime/internal/atomic -fgo-compiling-runtime > ../../../gcc-7.2.0/libgo/go/runtime/internal/atomic/gccgo.go > ../../../gcc-7.2.0/libgo/go/runtime/internal/atomic/stubs.go -o > runtime/internal/atomic.o >/dev/null 2>&1 > f=`echo runtime/internal/atomic.lo | sed -e 's/.lo$/.o/'`; missing-objcopy -j > .go_export $f runtime/internal/atomic.s-gox.tmp; /usr/local/bin/bash > ../../../gcc-7.2.0/libgo/mvifdiff.sh runtime/internal/atomic.s-gox.tmp `echo > runtime/internal/atomic.s-gox | sed -e 's/s-gox/gox/'` > /usr/local/bin/bash: missing-objcopy: command not found > mv: cannot access runtime/internal/atomic.s-gox.tmp > gmake[4]: *** [Makefile:3331: runtime/internal/atomic.s-gox] Error 2 > gmake[4]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008/sparc64-sun-solaris2.10/libgo' > gmake[3]: *** [Makefile:2746: all-recursive] Error 1 > gmake[3]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008/sparc64-sun-solaris2.10/libgo' > gmake[2]: *** [Makefile:1344: all] Error 2 > gmake[2]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008/sparc64-sun-solaris2.10/libgo' > gmake[1]: *** [Makefile:23963: all-target-libgo] Error 2 > gmake[1]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.008' > gmake: *** [Makefile:28139: bootstrap] Error 2 In this case, the bootstrap *didn't* complete successfully. Building Go requires objcopy from GNU binutils. > The testsuite fails with a strange error also : > > === libatomic Summary === > > # of expected passes 54 > gmake[4]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic/testsuite' > gmake[3]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic/testsuite' > gmake[3]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic' > /usr/local/bin/gmake DO=all multi-do # /usr/local/bin/gmake > gmake[4]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic' > if [ -z "sparcv8plus" ]; then \ > true; \ > else \ > rootpre=`${PWDCMD-pwd}`/; export rootpre; \ > srcrootpre=`cd ../../../gcc-7.2.0/libatomic; ${PWDCMD-pwd}`/; export > srcrootpre; \ > lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \ > compiler="/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/./gcc/xgcc > -B/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/./gcc/ > -B/usr/local/gcc7/sparc64-sun-solaris2.10/bin/ > -B/usr/local/gcc7/sparc64-sun-solaris2.10/lib/ -isystem > /usr/local/gcc7/sparc64-sun-solaris2.10/include -isystem > /usr/local/gcc7/sparc64-sun-solaris2.10/sys-include "; \ > for i in `${compiler} --print-multi-lib 2>/dev/null`; do \ > dir=`echo $i | sed -e 's/;.*$//'`; \ > if [ "${dir}" = "." ]; then \ > true; \ > else \ > if [ -d ../${dir}/${lib} ]; then \ > flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ > if (cd ../${dir}/${lib}; /usr/local/bin/gmake \ > CFLAGS="-g -O2 ${flags}" \ > CCASFLAGS="-g -O2 ${flags}" \ > FCFLAGS=" ${flags}" \ > FFLAGS=" ${flags}" \ > ADAFLAGS=" ${flags}" \ > prefix="/usr/local/gcc7" \ > exec_prefix="/usr/local/gcc7" \ > GOCFLAGS="-O2 -g ${flags}" \ > CXXFLAGS="-g -O2 ${flags}" \ > LIBCFLAGS="-g -O2 ${flags}" \ > LIBCXXFLAGS="-g -O2 -fno-implicit-templates ${flags}" > \ > LDFLAGS=" ${flags}" \ > MULTIFLAGS="${flags}" \ > DESTDIR="" \ > INSTALL="/usr/local/build/gcc-7.2.0/install-sh -c" \ > INSTALL_DATA="/usr/local/build/gcc-7.2.0/install-sh -c > -m 644" \ > INSTALL_PROGRAM="/usr/local/build/gcc-7.2.0/install-sh > -c" \ > INSTALL_SCRIPT="/usr/local/build/gcc-7.2.0/install-sh > -c" \ > all); then \ > true; \ > else \ > exit 1; \ > fi; \ > else true; \ > fi; \ > fi; \ > done; \ > fi > gmake[5]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > /usr/local/bin/gmake all-recursive > gmake[6]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > Making all in testsuite > gmake[7]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic/testsuite' > gmake[7]: Nothing to be done for 'all'. > gmake[7]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic/testsuite' > gmake[7]: Entering directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > true DO=all multi-do # /usr/local/bin/gmake > gmake[7]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > gmake[6]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > gmake[5]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/sparcv8plus/libatomic' > gmake[4]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic' > gmake[3]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic' > gmake[2]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009/sparc64-sun-solaris2.10/libatomic' > gmake[1]: Target 'check-target' not remade because of errors. > gmake[1]: Leaving directory > '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.009' > gmake: *** [Makefile:2280: do-check] Error 2 > gmake: Target 'check' not remade because of errors. You should have run make -k check as documented in https://gcc.gnu.org/install/test.html: you won't find a single gcc target where all tests complete successfully, and as soon as one test of a testsuite fails, the corresponding subdir make check will exit with a non-zero exit status, eventually halting the check. Besides, all those scan-not-hidden failures in your testresults shouldn't happen either: they occur because the corresponding test needs objdump which seems to be missing on your system. > It is hard to know what to trust in the results of the bootstrap or the > testsuite when I see both processes terminate with errors and yet they > seem to do so in the very last gasp. In stage3 ? That surprised me. As I said, the make/make bootstrap part is expected to complete successfully, everything else is a problem. For make check, you need to run make -k check to cope with the expected errors. Rainer