From b385e9cc10fc8c0c369a59fe77c08eb3afa3724c Mon Sep 17 00:00:00 2001
From: jklos <jklos@pkgsrc.org>
Date: Thu, 2 Jan 2025 15:24:13 +0000
Subject: [PATCH] Void NaN and infinity on VAX. Only fixes build, not usage.
 See:

https://github.com/Perl/perl5/issues/22882
---
 lang/perl5/distinfo                |  3 +-
 lang/perl5/patches/patch-builtin.c | 50 ++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 1 deletion(-)
 create mode 100644 lang/perl5/patches/patch-builtin.c

diff --git a/lang/perl5/distinfo b/lang/perl5/distinfo
index 0f31567c22c0..8b1e22b2263e 100644
--- a/lang/perl5/distinfo
+++ b/lang/perl5/distinfo
@@ -1,10 +1,11 @@
-$NetBSD: distinfo,v 1.185 2024/11/20 07:35:44 wiz Exp $
+$NetBSD: distinfo,v 1.186 2025/01/02 15:24:13 jklos Exp $
 
 BLAKE2s (perl-5.40.0.tar.xz) = 6d1a2dc936370f834497bd6ac1b117c3038925c513a81568e1ba1b6f448ad2bc
 SHA512 (perl-5.40.0.tar.xz) = a2fb1a24c6367b4043f4e929b2d74fc3bad1415e53b791ed1f219f1701064ae21b2bd3164ba95fcf24eaf458bd54433024ccae43725c0bb82a1ec6a98dc7052d
 Size (perl-5.40.0.tar.xz) = 13804184 bytes
 SHA1 (patch-Configure) = f3bd324a90254405b3ce8e29846b4ddc9ebf7d73
 SHA1 (patch-Makefile.SH) = 56203aea57c429a94760f039a978463b8859b0a9
+SHA1 (patch-builtin.c) = 7ac5821ab3f4c9ae29d2cbe9db0407560aee2328
 SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__BeOS.pm) = 79e5aeccfa272ca5ec08bffc616d8053ae90ac51
 SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm) = 6171a21a24e3bea312155b1d5f692d76ef733d23
 SHA1 (patch-cpan_ExtUtils-MakeMaker_t_MM__BeOS.t) = 9b0e7ab85fdab4887b1754599a8879bd7d9f36cc
diff --git a/lang/perl5/patches/patch-builtin.c b/lang/perl5/patches/patch-builtin.c
new file mode 100644
index 000000000000..34b1d91d494c
--- /dev/null
+++ b/lang/perl5/patches/patch-builtin.c
@@ -0,0 +1,50 @@
+$NetBSD: patch-builtin.c,v 1.1 2025/01/02 15:24:13 jklos Exp $
+
+--- builtin.c.orig	2025-01-01 21:26:38.327210188 +0000
++++ builtin.c
+@@ -90,6 +90,7 @@ XS(XS_builtin_false)
+     XSRETURN_NO;
+ }
+ 
++#ifndef __vax__
+ XS(XS_builtin_inf);
+ XS(XS_builtin_inf)
+ {
+@@ -109,12 +110,15 @@ XS(XS_builtin_nan)
+     EXTEND(SP, 1);
+     XSRETURN_NV(NV_NAN);
+ }
++#endif
+ 
+ enum {
+     BUILTIN_CONST_FALSE,
+     BUILTIN_CONST_TRUE,
++#ifndef __vax__
+     BUILTIN_CONST_INF,
+     BUILTIN_CONST_NAN,
++#endif
+ };
+ 
+ static OP *ck_builtin_const(pTHX_ OP *entersubop, GV *namegv, SV *ckobj)
+@@ -135,8 +139,10 @@ static OP *ck_builtin_const(pTHX_ OP *en
+     switch(builtin->ckval) {
+         case BUILTIN_CONST_FALSE: constval = &PL_sv_no; break;
+         case BUILTIN_CONST_TRUE:  constval = &PL_sv_yes; break;
++#ifndef __vax__
+         case BUILTIN_CONST_INF:   constval = newSVnv(NV_INF); break;
+         case BUILTIN_CONST_NAN:   constval = newSVnv(NV_NAN); break;
++#endif
+         default:
+             DIE(aTHX_ "panic: unrecognised builtin_const value %" IVdf,
+                       builtin->ckval);
+@@ -546,8 +552,10 @@ static const struct BuiltinFuncDescripto
+     /* constants */
+     { "true",  SHORTVER(5,39), &XS_builtin_true,   &ck_builtin_const, BUILTIN_CONST_TRUE,  false },
+     { "false", SHORTVER(5,39), &XS_builtin_false,  &ck_builtin_const, BUILTIN_CONST_FALSE, false },
++#ifndef __vax__
+     { "inf",        NO_BUNDLE, &XS_builtin_inf,    &ck_builtin_const, BUILTIN_CONST_INF,   true },
+     { "nan",        NO_BUNDLE, &XS_builtin_nan,    &ck_builtin_const, BUILTIN_CONST_NAN,   true },
++#endif
+ 
+     /* unary functions */
+     { "is_bool",         NO_BUNDLE, &XS_builtin_func1_scalar, &ck_builtin_func1, OP_IS_BOOL,    true  },