This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/81926] go/parse.o differs between stage2 and stage3
- From: "ro at CeBiTec dot Uni-Bielefeld.DE" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 29 Aug 2017 08:35:15 +0000
- Subject: [Bug bootstrap/81926] go/parse.o differs between stage2 and stage3
- Auto-submitted: auto-generated
- References: <bug-81926-4@http.gcc.gnu.org/bugzilla/>
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