Bug 236839

Summary: lang/gcc8: Fails to compile on sparc64 platform (FreeBSD 12.0 STABLE)
Product: Ports & Packages Reporter: bmeyer
Component: Individual Port(s)Assignee: freebsd-toolchain mailing list <toolchain>
Status: Open ---    
Severity: Affects Some People CC: andreast, emaste, gerald, linimon, sparc64
Priority: ---    
Version: Latest   
Hardware: sparc64   
OS: Any   

Description bmeyer 2019-03-27 22:37:32 UTC
GCC8 fails to compile on SPARC64.  The port fails with the compile error messages (truncated for brevity) included below.  

Errors from the build (i.e. cd /usr/ports/lang/gcc8 && make)

---> CUT HERE <---
Comparing stages 2 and 3
warning: gcc/cc1obj-checksum.o differs
Bootstrap comparison failure!
gcc/objc/objc-next-runtime-abi-01.o differs
sparc64-portbld-freebsd12.0/libgomp/loop.o differs
sparc64-portbld-freebsd12.0/libgcc/_moddi3_s.o differs
gmake[7]: *** [Makefile:22711: compare] Error 1
gmake[7]: Leaving directory '/usr/ports/lang/gcc8/work/.build'
gmake[6]: *** [Makefile:22691: stage3-bubble] Error 2
gmake[6]: Leaving directory '/usr/ports/lang/gcc8/work/.build'
gmake[5]: *** [Makefile:22765: bootstrap-lean] Error 2
gmake[5]: Leaving directory '/usr/ports/lang/gcc8/work/.build'
===> Compilation failed unexpectedly.
---> END CUT <---

Summary:

It would *appear* as though that GCC is comparing the output from the stage2 and stage3 compiles, but stage 3 is being built with debug info being attached.  

This conclusion is based on examination of some of the files in question from the error above.  

---> CUT HERE <---
hercules : Thu Mar 28 09:07:26 AEDT 2019 : /tmp/mesoft-base
-> 982# cat /tmp/d
/cc1obj-checksum.o
/objc-next-runtime-abi-01.o
/loop.o
/_moddi3_s.o

hercules : Thu Mar 28 09:07:40 AEDT 2019 : /tmp/mesoft-base
-> 983# find /usr/ports/lang/gcc8/work -type f -print | fgrep -if /tmp/d | xargs ls -ld
-rw-r--r--  1 root  wheel      992 Mar 28 06:25 /usr/ports/lang/gcc8/work/.build/stage2-gcc/cc1obj-checksum.o
-rw-r--r--  1 root  wheel    82816 Mar 28 06:11 /usr/ports/lang/gcc8/work/.build/stage2-gcc/objc/objc-next-runtime-abi-01.o
-rw-r--r--  1 root  wheel    23640 Mar 28 06:26 /usr/ports/lang/gcc8/work/.build/stage2-sparc64-portbld-freebsd12.0/libgcc/_moddi3_s.o
-rw-r--r--  1 root  wheel   103216 Mar 28 06:28 /usr/ports/lang/gcc8/work/.build/stage2-sparc64-portbld-freebsd12.0/libgomp/.libs/loop.o
-rw-r--r--  1 root  wheel   102864 Mar 28 06:28 /usr/ports/lang/gcc8/work/.build/stage2-sparc64-portbld-freebsd12.0/libgomp/loop.o
-rw-r--r--  1 root  wheel    24720 Mar 28 08:04 /usr/ports/lang/gcc8/work/.build/stage3-gcc/cc1obj-checksum.o
-rw-r--r--  1 root  wheel  1372048 Mar 28 08:00 /usr/ports/lang/gcc8/work/.build/stage3-gcc/objc/objc-next-runtime-abi-01.o
-rw-r--r--  1 root  wheel    23672 Mar 28 08:09 /usr/ports/lang/gcc8/work/.build/stage3-sparc64-portbld-freebsd12.0/libgcc/_moddi3_s.o
-rw-r--r--  1 root  wheel   103216 Mar 28 08:10 /usr/ports/lang/gcc8/work/.build/stage3-sparc64-portbld-freebsd12.0/libgomp/.libs/loop.o
-rw-r--r--  1 root  wheel   102864 Mar 28 08:10 /usr/ports/lang/gcc8/work/.build/stage3-sparc64-portbld-freebsd12.0/libgomp/loop.o

hercules : Thu Mar 28 09:08:36 AEDT 2019 : /tmp/mesoft-base
-> 984# file /usr/ports/lang/gcc8/work/.build/stage2-gcc/cc1obj-checksum.o /usr/ports/lang/gcc8/work/.build/stage3-gcc/cc1obj-checksum.o
/usr/ports/lang/gcc8/work/.build/stage2-gcc/cc1obj-checksum.o: ELF 64-bit MSB relocatable, SPARC V9, relaxed memory ordering, version 1 (SYSV), not stripped
/usr/ports/lang/gcc8/work/.build/stage3-gcc/cc1obj-checksum.o: ELF 64-bit MSB relocatable, SPARC V9, relaxed memory ordering, version 1 (SYSV), with debug_info, not stripped

hercules : Thu Mar 28 09:09:19 AEDT 2019 : /tmp/mesoft-base
-> 985# file /usr/ports/lang/gcc8/work/.build/stage2-gcc/objc/objc-next-runtime-abi-01.o /usr/ports/lang/gcc8/work/.build/stage3-gcc/objc/objc-next-runtime-abi-01.o
/usr/ports/lang/gcc8/work/.build/stage2-gcc/objc/objc-next-runtime-abi-01.o: ELF 64-bit MSB relocatable, SPARC V9, relaxed memory ordering, version 1 (SYSV), not stripped
/usr/ports/lang/gcc8/work/.build/stage3-gcc/objc/objc-next-runtime-abi-01.o: ELF 64-bit MSB relocatable, SPARC V9, relaxed memory ordering, version 1 (SYSV), with debug_info, not stripped
---> END CUT <---


Base OS - FreeBSD 12.0 (STABLE) - R345472, dated 2019/03/25
Ports Release - R496756, dated 2019/03/25
Build Platform - Sun Fire V240 with UltraSPARC III

OS Release Info (UNAME)

---> CUT HERE <---
hercules : Thu Mar 28 09:01:10 AEDT 2019 : /tmp/mesoft-base
-> 974# uname -a
FreeBSD hercules.sydney.mesoft.com.au 12.0-STABLE FreeBSD 12.0-STABLE GENERIC  sparc64
---> END CUT <---


/etc/make.conf contents:

---> CUT HERE <---
hercules : Thu Mar 28 09:02:59 AEDT 2019 : /tmp/mesoft-base
-> 975 cat /etc/make.conf
WITHOUT_X11=yes
OPTIONS_UNSET+=X11
PAPERSIZE=a4
A4=yes
---> END CUT <---

Ports Options for GCC:

---> CUT HERE <---
# This file is auto-generated by 'make config'.
# Options for gcc8-8.3.0
_OPTIONS_READ=gcc8-8.3.0
_FILE_COMPLETE_OPTIONS_LIST=BOOTSTRAP GRAPHITE
OPTIONS_FILE_SET+=BOOTSTRAP
OPTIONS_FILE_UNSET+=GRAPHITE
---> END CUT <---


Ports Base Makefile Version

---> CUT HERE <---
hercules : Thu Mar 28 09:04:43 AEDT 2019 : /usr/ports/lang/gcc8
-> 978# ident Makefile
Makefile:
     $FreeBSD: lang/gcc8/Makefile 494921 2019-03-07 09:55:52Z gerald $
---> END CUT <---

If you need any additional information from me, feel free to email me directly.
Comment 1 Gerald Pfeifer freebsd_committer 2019-03-30 14:45:32 UTC
I have to admit that the most sensible option at this point may be
removing sparc64 from the list of platforms supported by lang/gcc8
(and newer). And making sparc64 tier 3 given that the platform is,
essentially, dead and doesn't really have production usage on FreeBSD.

toolchain@ and Andreas, what's your take?  Any idea on how to fix this?
Comment 2 Ed Maste freebsd_committer 2019-08-14 13:18:38 UTC
(In reply to Gerald Pfeifer from comment #1)
> the most sensible option at this point may be
> removing sparc64 from the list of platforms supported by lang/gcc8

I agree with this.