Re: sparc64 bulk build report

Kirill A. Korinsky <[email protected]> Mon, 27 Jul 2026 04:30:31 +0200
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
On Mon, 27 Jul 2026 04:27:24 +0200,
Kurt Mosiejczuk <[email protected]> wrote:
> 
> On Mon, Jul 27, 2026 at 04:21:35AM +0200, Kirill A. Korinsky wrote:
> > On Mon, 27 Jul 2026 00:11:18 +0200,
> > [email protected] wrote:
> 
> > > Bulk build on sparc64-0a.ports.openbsd.org
> 
> > > Started : Fri Jul 24 16:00:35 MDT 2026
> > > Finished: Sun Jul 26 16:10:34 MDT 2026
> > > Duration: 2 Days 0 hours 10 minutes
> 
> > > Built using OpenBSD 8.0-beta (GENERIC.MP) #32: Mon Jul 20 16:19:45 MDT 2026
> 
> > > Built 8466 packages
> 
> > > Number of packages built each day:
> > > Jul 24: 4655
> > > Jul 25: 2820
> > > Jul 26: 991
> 
> > Am I right that this bulk is based on checkout after switch to gcc-16?
> 
> Correct. It looks like gcc 16 is not getting along with Cython and maybe some other things.
> 

For llvm-toolchain I need this diff.

Any chance that it can help here? Can you test it?

Index: Makefile
===================================================================
RCS file: /home/cvs/ports/lang/gcc/16/Makefile,v
diff -u -p -r1.11 Makefile
--- Makefile	23 Jul 2026 21:09:51 -0000	1.11
+++ Makefile	24 Jul 2026 20:42:16 -0000
@@ -19,7 +19,7 @@ USE_NOEXECONLY = Yes
 V = 16.1.0
 GCC_PKGSPEC = >=16,<17
 
-REVISION = 5
+REVISION = 6
 
 # aarch64, powerpc64 and sparc64 bootstrap contain only gdc
 BOOTSTRAP-aarch64 = gcc-bootstrap-aarch64-16.1.0-0.tar.xz
Index: patches/patch-gcc_config_sparc_openbsd64_h
===================================================================
RCS file: /home/cvs/ports/lang/gcc/16/patches/patch-gcc_config_sparc_openbsd64_h,v
diff -u -p -r1.1.1.1 patch-gcc_config_sparc_openbsd64_h
--- patches/patch-gcc_config_sparc_openbsd64_h	2 Jun 2026 20:00:17 -0000	1.1.1.1
+++ patches/patch-gcc_config_sparc_openbsd64_h	24 Jul 2026 20:42:29 -0000
@@ -22,7 +22,7 @@ Index: gcc/config/sparc/openbsd64.h
  	builtin_define ("__sparc64__");		\
  	builtin_define ("__sparcv9__");		\
  	builtin_define ("__sparc_v9__");	\
-@@ -42,10 +39,17 @@ along with GCC; see the file COPYING3.  If not see
+@@ -42,11 +39,27 @@ along with GCC; see the file COPYING3.  If not see
    while (0)
  
  #undef ASM_SPEC
@@ -38,9 +38,19 @@ Index: gcc/config/sparc/openbsd64.h
  "
 +#endif
  
++/* Keep jump tables out of execute-only text segments.  */
++#define SPARC_CASE_VECTOR_IN_RODATA 1
++
++#undef ASM_OUTPUT_ADDR_VEC
++#undef ASM_OUTPUT_ADDR_DIFF_VEC
++
++#define PIC_CASE_VECTOR_ADDRESS(ADDR) \
++  sparc_pic_case_vector_address (ADDR)
++
  /* Layout of source language data types.  */
  #undef WCHAR_TYPE
-@@ -54,6 +58,15 @@ along with GCC; see the file COPYING3.  If not see
+ #define WCHAR_TYPE "int"
+@@ -54,6 +67,15 @@ along with GCC; see the file COPYING3.  If not see
  #undef WCHAR_TYPE_SIZE
  #define WCHAR_TYPE_SIZE 32
  
@@ -56,7 +66,7 @@ Index: gcc/config/sparc/openbsd64.h
  #undef SPARC_LONG_DOUBLE_TYPE_SIZE
  #define SPARC_LONG_DOUBLE_TYPE_SIZE 128
  
-@@ -63,13 +76,15 @@ along with GCC; see the file COPYING3.  If not see
+@@ -63,13 +85,15 @@ along with GCC; see the file COPYING3.  If not see
     %{shared:-shared} %{R*} \
     %{static:-Bstatic} \
     %{!static:-Bdynamic} \
Index: patches/patch-gcc_config_sparc_sparc-protos_h
===================================================================
RCS file: patches/patch-gcc_config_sparc_sparc-protos_h
diff -N patches/patch-gcc_config_sparc_sparc-protos_h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-gcc_config_sparc_sparc-protos_h	24 Jul 2026 20:42:29 -0000
@@ -0,0 +1,11 @@
+Index: gcc/config/sparc/sparc-protos.h
+--- gcc/config/sparc/sparc-protos.h.orig
++++ gcc/config/sparc/sparc-protos.h
+@@ -63,6 +63,7 @@ extern rtx sparc_legitimize_reload_address (rtx, machi
+ extern void load_got_register (void);
+ extern void sparc_emit_call_insn (rtx, rtx);
+ extern void sparc_defer_case_vector (rtx, rtx, int);
++extern rtx sparc_pic_case_vector_address (rtx);
+ extern bool sparc_expand_move (machine_mode, rtx *);
+ extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
+ extern int sparc_split_reg_mem_legitimate (rtx, rtx);
Index: patches/patch-gcc_config_sparc_sparc_cc
===================================================================
RCS file: /home/cvs/ports/lang/gcc/16/patches/patch-gcc_config_sparc_sparc_cc,v
diff -u -p -r1.1.1.1 patch-gcc_config_sparc_sparc_cc
--- patches/patch-gcc_config_sparc_sparc_cc	2 Jun 2026 20:00:17 -0000	1.1.1.1
+++ patches/patch-gcc_config_sparc_sparc_cc	24 Jul 2026 20:42:29 -0000
@@ -9,7 +9,24 @@ Index: gcc/config/sparc/sparc.cc
  #include "explow.h"
  #include "expr.h"
  #include "debug.h"
-@@ -6207,6 +6208,9 @@ sparc_flat_expand_prologue (void)
+@@ -2287,6 +2288,16 @@ can_use_mov_pic_label_ref (rtx label)
+   return true;
+ }
+ 
++rtx
++sparc_pic_case_vector_address (rtx address)
++{
++  gcc_assert (GET_CODE (address) == PLUS
++	      && LABEL_REF_P (XEXP (address, 1)));
++
++  LABEL_REF_NONLOCAL_P (XEXP (address, 1)) = 1;
++  return memory_address (CASE_VECTOR_MODE, address);
++}
++
+ /* Expand a move instruction.  Return true if all work is done.  */
+ 
+ bool
+@@ -6207,6 +6218,9 @@ sparc_flat_expand_prologue (void)
  				         sparc_frame_base_offset
  					   - sparc_apparent_frame_size,
  					 SORR_SAVE);
Index: patches/patch-gcc_config_sparc_sparc_md
===================================================================
RCS file: /home/cvs/ports/lang/gcc/16/patches/patch-gcc_config_sparc_sparc_md,v
diff -u -p -r1.1.1.1 patch-gcc_config_sparc_sparc_md
--- patches/patch-gcc_config_sparc_sparc_md	2 Jun 2026 20:00:17 -0000	1.1.1.1
+++ patches/patch-gcc_config_sparc_sparc_md	24 Jul 2026 20:42:29 -0000
@@ -75,3 +75,13 @@ Index: gcc/config/sparc/sparc.md
  }
    [(set_attr "type" "load")
     (set_attr "subtype" "regular")])
+@@ -6836,6 +6860,9 @@
+     {
+       rtx tmp, tmp2;
+       tmp = gen_rtx_LABEL_REF (Pmode, operands[1]);
++#ifdef SPARC_CASE_VECTOR_IN_RODATA
++      LABEL_REF_NONLOCAL_P (tmp) = 1;
++#endif
+       tmp2 = operands[0];
+       if (CASE_VECTOR_MODE != Pmode)
+         tmp2 = gen_rtx_SIGN_EXTEND (Pmode, tmp2);


-- 
wbr, Kirill