tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: gcc 16 bootstrap, stage 2 and 3 differ



On Sat, Aug 15, 2026 at 10:22:40AM +0100, RVP wrote:
> On Thu, 13 Aug 2026, Thomas Klausner wrote:
> 
> > I have a problem when packaging gcc 16.1.0 for pkgsrc.  Using the same
> > flags and patches that work for gcc 15.3.0, I see a problem late in
> > the build when the stage2 and stage3 files are compared:
> > 
> > Comparing stages 2 and 3
> > warning: gcc/cobol/parse.o differs
> > Bootstrap comparison failure!
> > gcc/build/genoutput.o differs
> > gcc/build/gensupport.o differs
> > gcc/build/genrecog.o differs
> > gcc/build/genmatch.o differs
> > ... and many more ...
> > 
> 
> No real insight here except to ask, are the same command lines being passed
> to both the stage2 and stage3 compilers?

Not sure.

> > For now, the package (lang/gcc16) is using the --disable-bootstrap
> > workaround.
> > 
> 
> You could compare only the code bits (ie. omit the debug section comparisons
> which're added by as(1)from binutils  anyway). The build instructions suggest
> ‘bootstrap-debug’:
> 
> https://gcc.gnu.org/install/build.html

I tried this.

Index: Makefile.common
===================================================================
RCS file: /cvsroot/pkgsrc/lang/gcc16/Makefile.common,v
retrieving revision 1.1
diff -u -r1.1 Makefile.common
--- Makefile.common     10 Aug 2026 21:41:34 -0000      1.1
+++ Makefile.common     16 Aug 2026 18:34:19 -0000
@@ -89,14 +89,18 @@
 MAKE_ENV.NetBSD+=      ac_cv_func_uselocale=no
 MAKE_ENV.SunOS+=       ac_cv_func_mkostemp=no

-.if !empty(PKGSRC_COMPILER:Mclang) || ${OPSYS} == "DragonFly" \
-    || ${OPSYS} == "NetBSD"
-# GCC 16.1.0's stage2/stage3 bootstrap comparison currently fails on
-# NetBSD/x86_64, so disable it. Revisit on updates.
-# https://gcc.gnu.org/pipermail/gcc-help/2026-August/145120.html
+.if !empty(PKGSRC_COMPILER:Mclang) || ${OPSYS} == "DragonFly"
 CONFIGURE_ARGS+=       --disable-bootstrap
 .endif

+.if ${OPSYS} == "NetBSD"
+# GCC 16.1.0's stage2/stage3 bootstrap comparison currently fails
+# on NetBSD/x86_64 because of mismatches in debug information, so
+# disable it. Revisit on updates.
+# https://gcc.gnu.org/pipermail/gcc-help/2026-August/145120.html
+CONFIGURE_ARGS+=       --with-build-config=bootstrap-debug
+.endif
+
 .if ${MACHINE_PLATFORM:MNetBSD-*-i386} || ${MACHINE_PLATFORM:MLinux-*-i386}
 CONFIGURE_ARGS+=       --with-arch=i486 --with-tune=i486
 .endif

it failed again, and now I have much bigger diffs with objdump --dwarf=loc:

2c2,42447
< work/build/stage2-gcc/cp/class.o:     file format elf64-x86-64
---
> work/build/stage3-gcc/cp/class.o:     file format elf64-x86-64
>
> Contents of the .debug_loclists section:
>
> Table at Offset 0
>   Length:          0x1fcf7
>   DWARF version:   5
>   Address size:    8
>   Segment size:    0
>   Offset entries:  0
>
...

i.e. stage3 has a .debug_loclists section, but stage2 doesn't.

This looks more and more like an upstream bug, doesn't it?
Especially since gcc 15 doesn't have this problem.
 Thomas


Home | Main Index | Thread Index | Old Index