pkgsrc-WIP-changes archive

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

openjdk25: fix various netbsd-9 and ZeroVM issues



Module Name:	pkgsrc-wip
Committed By:	Tobias Nygren <tnn%NetBSD.org@localhost>
Pushed By:	tnn
Date:		Sun Sep 6 14:50:20 2026 +0200
Changeset:	c2d4481459b6da869b7d03837c97ada10699f131

Modified Files:
	openjdk25/Makefile
	openjdk25/PLIST
	openjdk25/distinfo
	openjdk25/options.mk
	openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
	openjdk25/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp
Added Files:
	openjdk25/patches/patch-make_common_JdkNativeCompilation.gmk
	openjdk25/patches/patch-src_hotspot_cpu_aarch64_macroAssembler__aarch64.cpp
	openjdk25/patches/patch-src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp
	openjdk25/patches/patch-src_hotspot_os_posix_os__posix.cpp
	openjdk25/patches/patch-src_hotspot_share_runtime_arguments.cpp

Log Message:
openjdk25: fix various netbsd-9 and ZeroVM issues

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=c2d4481459b6da869b7d03837c97ada10699f131

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 openjdk25/Makefile                                 |  5 ---
 openjdk25/PLIST                                    | 32 +++++++--------
 openjdk25/distinfo                                 |  9 ++++-
 openjdk25/options.mk                               |  4 +-
 .../patch-make_autoconf_buildjdk-spec.gmk.template |  2 +-
 .../patch-make_common_JdkNativeCompilation.gmk     | 17 ++++++++
 ...hotspot_cpu_aarch64_macroAssembler__aarch64.cpp | 25 ++++++++++++
 ..._cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp | 14 ++++++-
 ...src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp | 45 ++++++++++++++++++++++
 .../patch-src_hotspot_os_posix_os__posix.cpp       | 16 ++++++++
 .../patch-src_hotspot_share_runtime_arguments.cpp  | 16 ++++++++
 11 files changed, 160 insertions(+), 25 deletions(-)

diffs:
diff --git a/openjdk25/Makefile b/openjdk25/Makefile
index 8589ec6be0..392fa31335 100644
--- a/openjdk25/Makefile
+++ b/openjdk25/Makefile
@@ -147,11 +147,6 @@ SUBST_SED.kqueue+=		-e 's/static final int EV_ONESHOT = 0x0010;/static final int
 SUBST_SED.kqueue+=		-e 's/static final int EV_CLEAR   = 0x0020;/static final int EV_CLEAR   = 0x0008;/'
 .endif
 
-PLIST_VARS+=			jvmci
-.if (${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "aarch64") && !empty(PKG_OPTIONS:Mjdk-hotspot-vm)
-PLIST.jvmci=			yes
-.endif
-
 .if ${OPSYS} == "NetBSD"
 TOOLS_PLATFORM.unzip=
 .endif
diff --git a/openjdk25/PLIST b/openjdk25/PLIST
index 9888fd756c..913c468532 100644
--- a/openjdk25/PLIST
+++ b/openjdk25/PLIST
@@ -216,8 +216,8 @@ java/openjdk25/jmods/jdk.crypto.cryptoki.jmod
 java/openjdk25/jmods/jdk.crypto.ec.jmod
 java/openjdk25/jmods/jdk.dynalink.jmod
 java/openjdk25/jmods/jdk.editpad.jmod
-java/openjdk25/jmods/jdk.graal.compiler.jmod
-java/openjdk25/jmods/jdk.graal.compiler.management.jmod
+${PLIST.hotspot}java/openjdk25/jmods/jdk.graal.compiler.jmod
+${PLIST.hotspot}java/openjdk25/jmods/jdk.graal.compiler.management.jmod
 java/openjdk25/jmods/jdk.httpserver.jmod
 java/openjdk25/jmods/jdk.incubator.vector.jmod
 java/openjdk25/jmods/jdk.internal.ed.jmod
@@ -225,7 +225,7 @@ java/openjdk25/jmods/jdk.internal.jvmstat.jmod
 java/openjdk25/jmods/jdk.internal.le.jmod
 java/openjdk25/jmods/jdk.internal.md.jmod
 java/openjdk25/jmods/jdk.internal.opt.jmod
-${PLIST.jvmci}java/openjdk25/jmods/jdk.internal.vm.ci.jmod
+${PLIST.hotspot}java/openjdk25/jmods/jdk.internal.vm.ci.jmod
 java/openjdk25/jmods/jdk.jartool.jmod
 java/openjdk25/jmods/jdk.javadoc.jmod
 java/openjdk25/jmods/jdk.jcmd.jmod
@@ -379,12 +379,12 @@ java/openjdk25/legal/jdk.dynalink/dynalink.md
 java/openjdk25/legal/jdk.editpad/ADDITIONAL_LICENSE_INFO
 java/openjdk25/legal/jdk.editpad/ASSEMBLY_EXCEPTION
 java/openjdk25/legal/jdk.editpad/LICENSE
-java/openjdk25/legal/jdk.graal.compiler.management/ADDITIONAL_LICENSE_INFO
-java/openjdk25/legal/jdk.graal.compiler.management/ASSEMBLY_EXCEPTION
-java/openjdk25/legal/jdk.graal.compiler.management/LICENSE
-java/openjdk25/legal/jdk.graal.compiler/ADDITIONAL_LICENSE_INFO
-java/openjdk25/legal/jdk.graal.compiler/ASSEMBLY_EXCEPTION
-java/openjdk25/legal/jdk.graal.compiler/LICENSE
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler.management/ADDITIONAL_LICENSE_INFO
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler.management/ASSEMBLY_EXCEPTION
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler.management/LICENSE
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler/ADDITIONAL_LICENSE_INFO
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler/ASSEMBLY_EXCEPTION
+${PLIST.hotspot}java/openjdk25/legal/jdk.graal.compiler/LICENSE
 java/openjdk25/legal/jdk.httpserver/ADDITIONAL_LICENSE_INFO
 java/openjdk25/legal/jdk.httpserver/ASSEMBLY_EXCEPTION
 java/openjdk25/legal/jdk.httpserver/LICENSE
@@ -409,9 +409,9 @@ java/openjdk25/legal/jdk.internal.opt/ADDITIONAL_LICENSE_INFO
 java/openjdk25/legal/jdk.internal.opt/ASSEMBLY_EXCEPTION
 java/openjdk25/legal/jdk.internal.opt/LICENSE
 java/openjdk25/legal/jdk.internal.opt/jopt-simple.md
-${PLIST.jvmci}java/openjdk25/legal/jdk.internal.vm.ci/ADDITIONAL_LICENSE_INFO
-${PLIST.jvmci}java/openjdk25/legal/jdk.internal.vm.ci/ASSEMBLY_EXCEPTION
-${PLIST.jvmci}java/openjdk25/legal/jdk.internal.vm.ci/LICENSE
+${PLIST.hotspot}java/openjdk25/legal/jdk.internal.vm.ci/ADDITIONAL_LICENSE_INFO
+${PLIST.hotspot}java/openjdk25/legal/jdk.internal.vm.ci/ASSEMBLY_EXCEPTION
+${PLIST.hotspot}java/openjdk25/legal/jdk.internal.vm.ci/LICENSE
 java/openjdk25/legal/jdk.jartool/ADDITIONAL_LICENSE_INFO
 java/openjdk25/legal/jdk.jartool/ASSEMBLY_EXCEPTION
 java/openjdk25/legal/jdk.jartool/LICENSE
@@ -521,6 +521,8 @@ java/openjdk25/lib/libdt_socket${DBGEXT}
 java/openjdk25/lib/libdt_socket.so
 java/openjdk25/lib/libextnet${DBGEXT}
 java/openjdk25/lib/libextnet.so
+${PLIST.zero}java/openjdk25/lib/libfallbackLinker${DBGEXT}
+${PLIST.zero}java/openjdk25/lib/libfallbackLinker.so
 java/openjdk25/lib/libfontmanager${DBGEXT}
 java/openjdk25/lib/libfontmanager.so
 java/openjdk25/lib/libinstrument${DBGEXT}
@@ -581,9 +583,9 @@ java/openjdk25/lib/psfontj2d.properties
 java/openjdk25/lib/security/blocked.certs
 java/openjdk25/lib/security/cacerts
 java/openjdk25/lib/security/public_suffix_list.dat
-java/openjdk25/lib/server/libjsig.so
-java/openjdk25/lib/server/libjvm${DBGEXT}
-java/openjdk25/lib/server/libjvm.so
+java/openjdk25/lib/${BUILD_VARIANT}/libjsig.so
+java/openjdk25/lib/${BUILD_VARIANT}/libjvm${DBGEXT}
+java/openjdk25/lib/${BUILD_VARIANT}/libjvm.so
 java/openjdk25/lib/src.zip
 java/openjdk25/lib/tzdb.dat
 java/openjdk25/release
diff --git a/openjdk25/distinfo b/openjdk25/distinfo
index 55697b9355..85643c186d 100644
--- a/openjdk25/distinfo
+++ b/openjdk25/distinfo
@@ -3,16 +3,21 @@ $NetBSD: distinfo,v 1.17 2026/08/16 11:54:29 tnn Exp $
 BLAKE2s (jdk25u-jdk-25.0.4-7-1.tar.gz) = db81e919589070cbef63d5f4df43a690cb5119a72f75b12eb1a289621b4e2b97
 SHA512 (jdk25u-jdk-25.0.4-7-1.tar.gz) = ac564673ce14b192f3136d3d92e6125d412f1f449b3fcbe1f47dd0af7a6ccf6ec4a8f4c5074dcab17faf09fc2df54e0430c1e28ea7b8e171169ad97f2213b3fe
 Size (jdk25u-jdk-25.0.4-7-1.tar.gz) = 119810522 bytes
-SHA1 (patch-make_autoconf_buildjdk-spec.gmk.template) = e9123dee6507aea4a0748d513f2f6301edc88e7f
+SHA1 (patch-make_autoconf_buildjdk-spec.gmk.template) = 050c1ac0eaa96240651555264eb0e25d5537ab04
 SHA1 (patch-make_autoconf_flags-cflags.m4) = 7b77e6688805e4c290b5a5948c054463225ccd2d
 SHA1 (patch-make_autoconf_hotspot.m4) = 6097c29677f4b84c3821b5cf7ac8c397376027d0
 SHA1 (patch-make_autoconf_lib-alsa.m4) = 999fbf951363f6b49b22aad81537728f22d7c381
 SHA1 (patch-make_autoconf_lib-bundled.m4) = 5f5b638a08abf2f2066a122a825cfa3db9e95139
 SHA1 (patch-make_autoconf_lib-freetype.m4) = bd791b99e4fd87f24432831fba1e814dd199445f
 SHA1 (patch-make_autoconf_lib-x11.m4) = 38038e6d7cfc2d15fb3537a52f11d2961cc2ec99
+SHA1 (patch-make_common_JdkNativeCompilation.gmk) = 97256807fe59d690fe0aabdcc9d221f914aac259
 SHA1 (patch-make_common_native_Link.gmk) = b453202c240959e42f1a1ba6dc84ce6c9f3a5dcc
-SHA1 (patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp) = 989bd899a7a65ad0e498dc9a4b377cd3f511d4d8
+SHA1 (patch-src_hotspot_cpu_aarch64_macroAssembler__aarch64.cpp) = fa17af7a6dc4a91d6fe7abfc6060f0d102983928
+SHA1 (patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp) = 2bf688d0e569b5b53c9da4910fdfee19c2e26118
+SHA1 (patch-src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp) = 543d5f4c39de0d17347651b0e592fc153f08caef
 SHA1 (patch-src_hotspot_os_bsd_os__bsd.cpp) = 5561ed502aa925cd3d0514c7ec298e0491d14ffc
+SHA1 (patch-src_hotspot_os_posix_os__posix.cpp) = ee7fd66ab5513a8d9027960e0b85341e69b3d698
+SHA1 (patch-src_hotspot_share_runtime_arguments.cpp) = f8a17090e8be99735553d696d4ef398a23a3a524
 SHA1 (patch-src_java.desktop_bsd_data_fontconfig_fontconfig.properties) = 01aff1bb2c14265b0ebcc9d12fba8d48b876d36e
 SHA1 (patch-src_java.desktop_unix_native_common_awt_fontpath.c) = 11f4b918f5f30b8f937308ed1263f11357283fc5
 SHA1 (patch-src_java.desktop_unix_native_libpipewire_include_spa_utils_string.h) = f677c9b907b285d6b84de65396f50e2a5e52caba
diff --git a/openjdk25/options.mk b/openjdk25/options.mk
index 3ae838f7d3..3ddfd94d3c 100644
--- a/openjdk25/options.mk
+++ b/openjdk25/options.mk
@@ -105,9 +105,11 @@ CONFIGURE_ARGS+=	--with-stdc++lib=dynamic
 #
 # Build variant. Zero VM builds a portable JVM without assembly optimization.
 #
-PLIST_VARS+=		hotspot
+PLIST_SUBST+=		BUILD_VARIANT=${BUILD_VARIANT}
+PLIST_VARS+=		hotspot zero
 .if !empty(PKG_OPTIONS:Mjdk-zero-vm)
 BUILD_VARIANT=		zero
+PLIST.zero=		yes
 .include "../../devel/libffi/buildlink3.mk"
 .elif !empty(PKG_OPTIONS:Mjdk-hotspot-vm)
 BUILD_VARIANT=		server
diff --git a/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template b/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
index 6891c32862..b6cf1b0211 100644
--- a/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
+++ b/openjdk25/patches/patch-make_autoconf_buildjdk-spec.gmk.template
@@ -15,7 +15,7 @@ use "zero". This is fine for pkgsrc since we only ever build one variant.
 -JVM_VARIANT_MAIN := server
 +JVM_VARIANTS :=  @JVM_VARIANTS@
 +JVM_VARIANT_MAIN := @JVM_VARIANT_MAIN@
-+JVM_FEATURES_zero := g1gc serialgc zero
++JVM_FEATURES_zero := cds g1gc serialgc zero
  JVM_FEATURES_server := cds compiler1 compiler2 g1gc serialgc
  
  # Some users still set EXTRA_*FLAGS on the make command line. Must
diff --git a/openjdk25/patches/patch-make_common_JdkNativeCompilation.gmk b/openjdk25/patches/patch-make_common_JdkNativeCompilation.gmk
new file mode 100644
index 0000000000..806c09c233
--- /dev/null
+++ b/openjdk25/patches/patch-make_common_JdkNativeCompilation.gmk
@@ -0,0 +1,17 @@
+$NetBSD$
+
+c.f. buildjdk-spec.gmk.template.patch.
+
+--- make/common/JdkNativeCompilation.gmk.orig	2026-09-06 09:55:09.184970691 +0000
++++ make/common/JdkNativeCompilation.gmk
+@@ -123,7 +123,9 @@ define ResolveLibPath
+       # Special treatment for hotspot
+       ifeq ($(CREATING_BUILDJDK), true)
+         # When building a buildjdk, it's always only the server variant
+-        $1_$2_JVM_VARIANT_PATH := server
++        # xxx pkgsrc: On 32-bit native builds zero may be the only available variant
++        # so follow the spec.
++        $1_$2_JVM_VARIANT_PATH := $(JVM_VARIANT_MAIN)
+       else
+         $1_$2_JVM_VARIANT_PATH := $(JVM_VARIANT_MAIN)
+       endif
diff --git a/openjdk25/patches/patch-src_hotspot_cpu_aarch64_macroAssembler__aarch64.cpp b/openjdk25/patches/patch-src_hotspot_cpu_aarch64_macroAssembler__aarch64.cpp
new file mode 100644
index 0000000000..bf462d17f3
--- /dev/null
+++ b/openjdk25/patches/patch-src_hotspot_cpu_aarch64_macroAssembler__aarch64.cpp
@@ -0,0 +1,25 @@
+$NetBSD$
+
+GCC 7 (on NetBSD 9) complains:
+
+macroAssembler_aarch64.cpp: In member function 'void MacroAssembler::clinit_barrier(Register, Register, Label*, Label*)':
+macroAssembler_aarch64.cpp:2048:48: error: call of overloaded 'cmp(Register&, InstanceKlass::ClassState)' is ambiguous
+cmp(scratch, InstanceKlass::fully_initialized);
+macroAssembler_aarch64.hpp:204:15: note: candidate: void MacroAssembler::cmp(Register, unsigned char)
+inline void cmp(Register Rd, unsigned char imm8)  { subs(zr, Rd, imm8); }
+macroAssembler_aarch64.hpp:205:15: note: candidate: void MacroAssembler::cmp(Register, unsigned int) <deleted>
+inline void cmp(Register Rd, unsigned imm) = delete;
+
+GCC 7 is not supported by OpenJDK 25 but it's an easy fix so why not.
+
+--- src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp.orig	2026-09-05 19:06:13.774758654 +0000
++++ src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
+@@ -2045,7 +2045,7 @@ void MacroAssembler::clinit_barrier(Register klass, Re
+   // Fast path check: class is fully initialized
+   lea(scratch, Address(klass, InstanceKlass::init_state_offset()));
+   ldarb(scratch, scratch);
+-  cmp(scratch, InstanceKlass::fully_initialized);
++  cmp(scratch, (unsigned char)InstanceKlass::fully_initialized);
+   br(Assembler::EQ, *L_fast_path);
+ 
+   // Fast path check: current thread is initializer thread
diff --git a/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp b/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp
index b260fa3a78..21b4b2f248 100644
--- a/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp
+++ b/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp
@@ -18,7 +18,7 @@ Add runtime CPU detection support for NetBSD.
  
  void VM_Version::get_compatible_board(char *buf, int buflen) {
    assert(buf != nullptr, "invalid argument");
-@@ -545,6 +552,98 @@ void VM_Version::get_os_cpu_info() {
+@@ -545,6 +552,110 @@ void VM_Version::get_os_cpu_info() {
    }
  #endif // __FreeBSD__
  #endif // __FreeBSD__ || __OpenBSD__
@@ -66,19 +66,31 @@ Add runtime CPU detection support for NetBSD.
 +      num_sha2++;
 +    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_CRC32) >= ID_AA64ISAR0_EL1_CRC32_CRC32X)
 +      num_crc32++;
++#if defined(ID_AA64ISAR0_EL1_ATOMIC_SWP)
 +    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_ATOMIC) >= ID_AA64ISAR0_EL1_ATOMIC_SWP)
 +      num_lse++;
++#endif
++#if defined(ID_AA64ISAR1_EL1_DPB_CVAP)
 +    if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_DPB) >= ID_AA64ISAR1_EL1_DPB_CVAP)
 +      num_dcpop++;
++#endif
++#if defined(ID_AA64ISAR0_EL1_SHA3_EOR3)
 +    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA3) >= ID_AA64ISAR0_EL1_SHA3_EOR3)
 +      num_sha3++;
++#endif
++#if defined(ID_AA64ISAR0_EL1_SHA2_SHA512HSU)
 +    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) >= ID_AA64ISAR0_EL1_SHA2_SHA512HSU)
 +      num_sha512++;
++#endif
++#if defined(ID_AA64PFR0_EL1_SVE_IMPL)
 +    if (__SHIFTOUT(id.ac_aa64pfr0,  ID_AA64PFR0_EL1_SVE) >= ID_AA64PFR0_EL1_SVE_IMPL)
 +      num_sve++;
++#endif
++#if defined(ID_AA64ISAR1_EL1_APA_QARMA) && defined(ID_AA64ISAR1_EL1_API_SUPPORTED)
 +    if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_APA) >= ID_AA64ISAR1_EL1_APA_QARMA ||
 +        __SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_API) >= ID_AA64ISAR1_EL1_API_SUPPORTED)
 +     num_paca++;
++#endif
 +    // TODO: SVE2 and SVE_BITPERM live in id.ac_aa64zfr0 but shiftout macros are not yet added to armreg.h
 +  }
 +  _features = 0;
diff --git a/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp b/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp
new file mode 100644
index 0000000000..d74a354b79
--- /dev/null
+++ b/openjdk25/patches/patch-src_hotspot_os__cpu_bsd__zero_os__bsd__zero.cpp
@@ -0,0 +1,45 @@
+$NetBSD$
+
+Fix zero build on NetBSD.
+
+--- src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp.orig	2026-09-05 20:54:45.904702461 +0000
++++ src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp
+@@ -91,7 +91,11 @@ address os::Posix::ucontext_get_pc(const ucontext_t* u
+ 
+ address os::Posix::ucontext_get_pc(const ucontext_t* uc) {
+   if (DecodeErrorContext) {
+-#if defined(IA32)
++#if defined(__NetBSD__) && defined(IA32)
++    return (address)uc->uc_mcontext.__gregs[_REG_EIP];
++#elif defined(__NetBSD__) && defined(AARCH64)
++    return (address)uc->uc_mcontext.__gregs[_REG_ELR];
++#elif defined(IA32)
+     return (address)uc->uc_mcontext.mc_eip;
+ #elif defined(AMD64)
+     return (address)uc->uc_mcontext.mc_rip;
+@@ -116,7 +120,11 @@ intptr_t* os::Bsd::ucontext_get_sp(const ucontext_t* u
+ 
+ intptr_t* os::Bsd::ucontext_get_sp(const ucontext_t* uc) {
+   if (DecodeErrorContext) {
+-#if defined(IA32)
++#if defined(__NetBSD__) && defined(IA32)
++    return (intptr_t*)uc->uc_mcontext.__gregs[_REG_ESP];
++#elif defined(__NetBSD__) && defined(AARCH64)
++    return (intptr_t*)uc->uc_mcontext.__gregs[_REG_SP];
++#elif defined(IA32)
+     return (intptr_t*)uc->uc_mcontext.mc_esp;
+ #elif defined(AMD64)
+     return (intptr_t*)uc->uc_mcontext.mc_rsp;
+@@ -137,7 +145,11 @@ intptr_t* os::Bsd::ucontext_get_fp(const ucontext_t* u
+ 
+ intptr_t* os::Bsd::ucontext_get_fp(const ucontext_t* uc) {
+   if (DecodeErrorContext) {
+-#if defined(IA32)
++#if defined(__NetBSD__) && defined(IA32)
++    return (intptr_t*)uc->uc_mcontext.__gregs[_REG_EBP];
++#elif defined(__NetBSD__) && defined(AARCH64)
++    return (intptr_t*)uc->uc_mcontext.__gregs[_REG_FP];
++#elif defined(IA32)
+     return (intptr_t*)uc->uc_mcontext.mc_ebp;
+ #elif defined(AMD64)
+     return (intptr_t*)uc->uc_mcontext.mc_rbp;
diff --git a/openjdk25/patches/patch-src_hotspot_os_posix_os__posix.cpp b/openjdk25/patches/patch-src_hotspot_os_posix_os__posix.cpp
new file mode 100644
index 0000000000..6b34fdcc27
--- /dev/null
+++ b/openjdk25/patches/patch-src_hotspot_os_posix_os__posix.cpp
@@ -0,0 +1,16 @@
+$NetBSD$
+
+NetBSD 9 has no PTHREAD_STACK_MIN declaration.
+
+--- src/hotspot/os/posix/os_posix.cpp.orig	2026-09-05 19:12:57.352207078 +0000
++++ src/hotspot/os/posix/os_posix.cpp
+@@ -105,6 +105,9 @@ static int clock_tics_per_sec = 100;
+ static int clock_tics_per_sec = 100;
+ 
+ // Platform minimum stack allowed
++#if defined(__NetBSD__) && !defined(PTHREAD_STACK_MIN)
++#define PTHREAD_STACK_MIN 4096 /* MIN_PAGE_SIZE */
++#endif
+ size_t os::_os_min_stack_allowed = PTHREAD_STACK_MIN;
+ 
+ // Check core dump limit and report possible place where core can be found
diff --git a/openjdk25/patches/patch-src_hotspot_share_runtime_arguments.cpp b/openjdk25/patches/patch-src_hotspot_share_runtime_arguments.cpp
new file mode 100644
index 0000000000..83c6705fed
--- /dev/null
+++ b/openjdk25/patches/patch-src_hotspot_share_runtime_arguments.cpp
@@ -0,0 +1,16 @@
+$NetBSD$
+
+WIP try to prevent overflow on 32-bit when running in a chroot
+and the host has more than 4 GB of RAM.
+
+--- src/hotspot/share/runtime/arguments.cpp.orig	2026-09-05 22:40:16.647006757 +0000
++++ src/hotspot/share/runtime/arguments.cpp
+@@ -1534,6 +1534,8 @@ void Arguments::set_heap_size() {
+       reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
+     }
+ 
++    reasonable_max = MIN2(reasonable_max, (julong)ULONG_MAX);
++
+     reasonable_max = limit_heap_by_allocatable_memory(reasonable_max);
+ 
+     if (!FLAG_IS_DEFAULT(InitialHeapSize)) {


Home | Main Index | Thread Index | Old Index