Diff below contains 3 things and is widely discussed with kirill@, and
gone through miod, but sending it here so other people get a chance to
chime in.
1) The report keyword results in an #error with newer gcc build system.
   Simply removing the keyword suggested by kirill@.
2) LINK_SPEC is already defined in gcc itself and causes a lot of
   redefine noise. Going for the gcc definition as suggested by kirill@.
3) upstream gcc has the same stack protector logic as was recently
   fixed in base by miod@. This fixes similar build issues found with
   gcc-16. Confirmed by miod@.

OK?

martijn@

diff /usr/ports
path + /usr/ports
commit - 3eff4995526c542b34b298dfecc2ca0816223f67
blob - 7e52e1631fd8664214ee99b79e895e58771f431a
file + lang/gcc/16/patches/patch-gcc_config_alpha_alpha_md
--- lang/gcc/16/patches/patch-gcc_config_alpha_alpha_md
+++ lang/gcc/16/patches/patch-gcc_config_alpha_alpha_md
@@ -1,6 +1,28 @@
 Index: gcc/config/alpha/alpha.md
 --- gcc/config/alpha/alpha.md.orig
 +++ gcc/config/alpha/alpha.md
+@@ -467,15 +467,15 @@
+         (plus:DI (match_operand:DI 1 "reg_no_subreg_operand" "r,r,r")
+                (match_operand:DI 2 "const_int_operand" "K,L,n")))]
+   "NONSTRICT_REG_OK_FP_BASE_P (operands[1])
+-   && INTVAL (operands[2]) >= 0
+-   /* This is the largest constant an lda+ldah pair can add, minus
++   && INTVAL (operands[2]) < 0
++   /* This is the largest constant an lda+ldah pair can subtract, minus
+       an upper bound on the displacement between SP and AP during
+       register elimination.  See INITIAL_ELIMINATION_OFFSET.  */
+    && INTVAL (operands[2])
+-      < (0x7fff8000
+-         - FIRST_PSEUDO_REGISTER * UNITS_PER_WORD
+-         - ALPHA_ROUND(crtl->outgoing_args_size)
+-         - (ALPHA_ROUND (get_frame_size ()
++      >= ((HOST_WIDE_INT) -0x7fffffff /* - (HOST_WIDE_INT) 0x8000 */
++         + FIRST_PSEUDO_REGISTER * UNITS_PER_WORD
++         + ALPHA_ROUND(crtl->outgoing_args_size)
++         + (ALPHA_ROUND (get_frame_size ()
+                          + max_reg_num () * UNITS_PER_WORD
+                          + crtl->args.pretend_args_size)
+             - crtl->args.pretend_args_size))"
 @@ -4953,7 +4953,8 @@
    if (CONST_INT_P (operands[1])
        && INTVAL (operands[1]) < 32768)
commit - 3eff4995526c542b34b298dfecc2ca0816223f67
blob - 9fb76b06167a7cc7f1aa5a3309e7339f0bf68ec3
file + lang/gcc/16/patches/patch-gcc_config_alpha_alpha_opt
--- lang/gcc/16/patches/patch-gcc_config_alpha_alpha_opt
+++ lang/gcc/16/patches/patch-gcc_config_alpha_alpha_opt
@@ -6,7 +6,7 @@ Index: gcc/config/alpha/alpha.opt
  Emit IEEE-conformant code, without inexact exceptions.
  
 +mno-ieee
-+Target Report RejectNegative InverseMask(IEEE)
++Target RejectNegative InverseMask(IEEE)
 +Emit non-IEEE-conformant code
 +
  mieee-with-inexact
commit - 3eff4995526c542b34b298dfecc2ca0816223f67
blob - bc6b41ec3410694d603eb9fe58a90a2c1b54354e
file + lang/gcc/16/patches/patch-gcc_config_alpha_openbsd_h
--- lang/gcc/16/patches/patch-gcc_config_alpha_openbsd_h
+++ lang/gcc/16/patches/patch-gcc_config_alpha_openbsd_h
@@ -1,7 +1,7 @@
 Index: gcc/config/alpha/openbsd.h
 --- gcc/config/alpha/openbsd.h.orig
 +++ gcc/config/alpha/openbsd.h
-@@ -41,6 +41,28 @@ along with GCC; see the file COPYING3.  If not see
+@@ -41,6 +41,19 @@ along with GCC; see the file COPYING3.  If not see
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
  
@@ -9,15 +9,6 @@ Index: gcc/config/alpha/openbsd.h
 +#define TARGET_DEFAULT \
 +      (MASK_FPREGS | MASK_IEEE | MASK_IEEE_CONFORMANT)
 +
-+#define LINK_SPEC \
-+  "%{!shared:%{!nostdlib:%{!r:%{!e*:-e __start}}}} \
-+   %{shared:-shared} %{R*} \
-+   %{static:-Bstatic} \
-+   %{!static:-Bdynamic} \
-+   %{rdynamic:-export-dynamic} \
-+   %{assert*} \
-+   %{!static:-dynamic-linker /usr/libexec/ld.so}"
-+
 +/* As an elf system, we need crtbegin/crtend stuff.  */
 +#undef STARTFILE_SPEC
 +#define STARTFILE_SPEC "\

Reply via email to