https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926
Bug ID: 81926 Summary: go/parse.o differs between stage2 and stage3 for gcc 7.2.0 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: dclarke at blastwave dot org CC: cmang at google dot com Target Milestone: --- configure ran thus : $ ../gcc-7.2.0/configure --build=sparc64-sun-solaris2.10 \ --target=sparc64-sun-solaris2.10 \ --host=sparc64-sun-solaris2.10 \ --prefix=/usr/local/gcc7 \ --without-gnu-as --without-gnu-ld \ --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/sparcv9/ld \ --disable-nls --enable-threads=posix --enable-shared \ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local \ --with-isl=/usr/local \ --with-build-time-tools=/usr/local/bin --with-cpu=v9 \ --enable-bootstrap \ --enable-languages=ada,c,c++,fortran,go,objc,obj-c++ \ --with-pkgversion=genunix Tue Aug 22 00:36:56 GMT 2017 This resulted in : checking build system type... sparc64-sun-solaris2.10 checking host system type... sparc64-sun-solaris2.10 checking target system type... sparc64-sun-solaris2.10 checking for a BSD-compatible install... ../gcc-7.2.0/install-sh -c checking whether ln works... yes checking whether ln -s works... yes checking for a sed that does not truncate output... /usr/local/bin/sed checking for gawk... /usr/local/bin/gawk checking for libatomic support... yes checking for libcilkrts support... yes checking for libitm support... yes checking for libsanitizer support... no checking for libvtv support... no checking for libmpx support... no checking for libhsail-rt support... no checking for sparc64-sun-solaris2.10-gcc... sparc64-sun-solaris2.10-gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether sparc64-sun-solaris2.10-gcc accepts -g... yes checking for sparc64-sun-solaris2.10-gcc option to accept ISO C89... none needed checking for sparc64-sun-solaris2.10-g++... sparc64-sun-solaris2.10-g++ checking whether we are using the GNU C++ compiler... yes checking whether sparc64-sun-solaris2.10-g++ accepts -g... yes checking whether g++ accepts -static-libstdc++ -static-libgcc... yes checking for sparc64-sun-solaris2.10-gnatbind... no checking for gnatbind... gnatbind checking for sparc64-sun-solaris2.10-gnatmake... no checking for gnatmake... gnatmake checking whether compiler driver understands Ada... yes checking how to compare bootstrapped objects... cmp $$f1 $$f2 16 16 checking for objdir... .libs checking for the correct version of gmp.h... yes checking for the correct version of mpfr.h... yes checking for the correct version of mpc.h... yes checking for the correct version of the gmp/mpfr/mpc libraries... yes checking for isl 0.15 or later... yes The following languages will be built: c,ada,c++,fortran,go,lto,objc,obj-c++ *** This configuration is not supported in the following subdirectories: target-libsanitizer target-libvtv target-libmpx target-libhsail-rt target-liboffloadmic (Any other directories should still work fine.) checking for default BUILD_CONFIG... checking for --enable-vtable-verify... no checking for bison... bison -y checking for bison... bison checking for gm4... /usr/local/bin/m4 checking for flex... flex checking for flex... flex checking for makeinfo... makeinfo checking for expect... expect checking for runtest... runtest checking for ar... (cached) /usr/xpg4/bin/ar checking for sparc64-sun-solaris2.10-ar... (cached) /usr/xpg4/bin/ar checking for as... (cached) /usr/ccs/bin/as checking for sparc64-sun-solaris2.10-as... (cached) /usr/ccs/bin/as checking for sparc64-sun-solaris2.10-dlltool... no checking for dlltool... no checking for ld... (cached) /usr/ccs/bin/ld checking for sparc64-sun-solaris2.10-ld... (cached) /usr/ccs/bin/ld checking for sparc64-sun-solaris2.10-lipo... no checking for lipo... no checking for nm... (cached) /usr/ccs/bin/sparcv9/nm -p checking for sparc64-sun-solaris2.10-nm... (cached) /usr/ccs/bin/sparcv9/nm -p checking for ranlib... (cached) /usr/ccs/bin/ranlib checking for sparc64-sun-solaris2.10-ranlib... (cached) /usr/ccs/bin/ranlib checking for strip... (cached) /usr/ccs/bin/strip checking for sparc64-sun-solaris2.10-strip... (cached) /usr/ccs/bin/strip checking for sparc64-sun-solaris2.10-windres... no checking for windres... no checking for sparc64-sun-solaris2.10-windmc... no checking for windmc... no checking for sparc64-sun-solaris2.10-objcopy... no checking for objcopy... no checking for sparc64-sun-solaris2.10-objdump... no checking for objdump... no checking for sparc64-sun-solaris2.10-readelf... no checking for readelf... no checking for cc in /usr/local/bin... no checking for gcc in /usr/local/bin... no checking for sparc64-sun-solaris2.10-cc... no checking for cc... cc checking for c++ in /usr/local/bin... no checking for g++ in /usr/local/bin... no checking for cxx in /usr/local/bin... no checking for gxx in /usr/local/bin... no checking for sparc64-sun-solaris2.10-c++... sparc64-sun-solaris2.10-c++ checking for gcc in /usr/local/bin... no checking for sparc64-sun-solaris2.10-gcc... sparc64-sun-solaris2.10-gcc checking for gfortran in /usr/local/bin... no checking for sparc64-sun-solaris2.10-gfortran... sparc64-sun-solaris2.10-gfortran checking for gccgo in /usr/local/bin... no checking for sparc64-sun-solaris2.10-gccgo... no checking for gccgo... no checking for ar in /usr/local/bin... no checking for ar... no checking for ar in /usr/local/bin... no checking for sparc64-sun-solaris2.10-ar... no checking for ar... ar checking for as in /usr/local/bin... no checking for as... no checking for as in /usr/local/bin... no checking for sparc64-sun-solaris2.10-as... no checking for as... as checking for dlltool in /usr/local/bin... no checking for dlltool... no checking for dlltool in /usr/local/bin... no checking for sparc64-sun-solaris2.10-dlltool... no checking for dlltool... no checking for ld in /usr/local/bin... no checking for ld... no checking for ld in /usr/local/bin... no checking for sparc64-sun-solaris2.10-ld... no checking for ld... ld checking for lipo in /usr/local/bin... no checking for lipo... no checking for lipo in /usr/local/bin... no checking for sparc64-sun-solaris2.10-lipo... no checking for lipo... no checking for nm in /usr/local/bin... no checking for nm... no checking for nm in /usr/local/bin... no checking for sparc64-sun-solaris2.10-nm... no checking for nm... nm checking for objcopy in /usr/local/bin... no checking for objcopy... no checking for objcopy in /usr/local/bin... no checking for sparc64-sun-solaris2.10-objcopy... no checking for objcopy... no checking for objdump in /usr/local/bin... no checking for objdump... no checking for objdump in /usr/local/bin... no checking for sparc64-sun-solaris2.10-objdump... no checking for objdump... no checking for ranlib in /usr/local/bin... no checking for ranlib... no checking for ranlib in /usr/local/bin... no checking for sparc64-sun-solaris2.10-ranlib... no checking for ranlib... ranlib checking for readelf in /usr/local/bin... no checking for readelf... no checking for readelf in /usr/local/bin... no checking for sparc64-sun-solaris2.10-readelf... no checking for readelf... no checking for strip in /usr/local/bin... no checking for strip... no checking for strip in /usr/local/bin... no checking for sparc64-sun-solaris2.10-strip... no checking for strip... strip checking for windres in /usr/local/bin... no checking for windres... no checking for windres in /usr/local/bin... no checking for sparc64-sun-solaris2.10-windres... no checking for windres... no checking for windmc in /usr/local/bin... no checking for windmc... no checking for windmc in /usr/local/bin... no checking for sparc64-sun-solaris2.10-windmc... no checking for windmc... no checking where to find the target ar... host tool checking where to find the target as... host tool checking where to find the target cc... just compiled checking where to find the target c++... just compiled checking where to find the target c++ for libstdc++... just compiled checking where to find the target dlltool... host tool checking where to find the target gcc... just compiled checking where to find the target gfortran... just compiled checking where to find the target gccgo... just compiled checking where to find the target ld... host tool checking where to find the target lipo... host tool checking where to find the target nm... host tool checking where to find the target objcopy... host tool checking where to find the target objdump... host tool checking where to find the target ranlib... host tool checking where to find the target readelf... host tool checking where to find the target strip... host tool checking where to find the target windres... host tool checking where to find the target windmc... host tool checking whether to enable maintainer-specific portions of Makefiles... no configure: creating ./config.status config.status: creating Makefile System is an Oracle SPARC M4000 running Solaris 10 with recent updates applied. The compiler to be used for the initial stage of bootstrap is gcc 6.4.0 thus : d$ /usr/local/gcc6/bin/gcc --version gcc (genunix Wed Jul 26 02:41:24 GMT 2017) 6.4.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. That had reasonable test results previously : https://gcc.gnu.org/ml/gcc-testresults/2017-07/msg02881.html The usual GNU tools but not binutils. The bootstrap halts between stage2 and stage3 with a comparison failure in a single file : gmake[2]: Entering directory '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.004' gmake[3]: Entering directory '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.004' rm -f stage_current gmake[3]: Leaving directory '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.004' Comparing stages 2 and 3 warning: gcc/cc1objplus-checksum.o differs warning: gcc/cc1obj-checksum.o differs Bootstrap comparison failure! gcc/go/parse.o differs gmake[2]: *** [Makefile:28094: compare] Error 1 gmake[2]: Leaving directory '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.004' gmake[1]: *** [Makefile:28074: stage3-bubble] Error 2 gmake[1]: Leaving directory '/usr/local/build/gcc-7.2.0_SunOS5.10_sparc64vii+.004' gmake: *** [Makefile:28137: bootstrap] Error 2 There seems to be only an 8 byte size difference : d$ ls -lo ./stage2-gcc/go/parse.o ./stage3-gcc/go/parse.o -rw-r--r-- 1 dclarke 3904088 Aug 22 04:00 ./stage2-gcc/go/parse.o -rw-r--r-- 1 dclarke 3904080 Aug 22 04:57 ./stage3-gcc/go/parse.o Also the various symbols in these object files are identical but the location of data inside the ELF files is slightly different : stage 2 : Section Header[44]: sh_name: .bss sh_addr: 0 sh_flags: [ SHF_WRITE SHF_ALLOC ] sh_size: 0x11 sh_type: [ SHT_NOBITS ] sh_offset: 0x204458 sh_entsize: 0 sh_link: 0 sh_info: 0 sh_addralign: 0x4 stage 3 : Section Header[44]: sh_name: .bss sh_addr: 0 sh_flags: [ SHF_WRITE SHF_ALLOC ] sh_size: 0x11 sh_type: [ SHT_NOBITS ] sh_offset: 0x204450 sh_entsize: 0 sh_link: 0 sh_info: 0 sh_addralign: 0x4 That sort of difference lay between the two files in many many places. Slightly different by 8 bytes again however nm tells me that the symbol listing is identical between the two files. Perhaps there is no actual "functional" difference between the files at all. Dennis