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

Reply via email to