Index: Makefile =================================================================== RCS file: /mnt/ext/cvs/ports/lang/node/Makefile,v diff -u -p -r1.169 Makefile --- Makefile 30 Jun 2026 18:46:22 -0000 1.169 +++ Makefile 12 Jul 2026 14:41:40 -0000 @@ -13,6 +13,7 @@ DIST_TUPLE = github qbit node-pledge 1. DISTNAME = node-${NODE_VERSION} PKGNAME = ${DISTNAME:S/v//g} EPOCH = 0 +REVISION = 0 CATEGORIES = lang devel Index: patches/patch-deps_v8_src_flags_flag-definitions_h =================================================================== RCS file: patches/patch-deps_v8_src_flags_flag-definitions_h diff -N patches/patch-deps_v8_src_flags_flag-definitions_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-deps_v8_src_flags_flag-definitions_h 12 Jul 2026 14:49:26 -0000 @@ -0,0 +1,19 @@ +Disable regexp JIT by default. + +Index: deps/v8/src/flags/flag-definitions.h +--- deps/v8/src/flags/flag-definitions.h.orig ++++ deps/v8/src/flags/flag-definitions.h +@@ -2835,7 +2835,13 @@ DEFINE_BOOL(serialization_statistics, false, + "Collect statistics on serialized objects.") + // Regexp + DEFINE_BOOL(regexp_optimization, true, "generate optimized regexp code") ++#ifdef V8_OS_OPENBSD ++// OpenBSD: Irregexp JIT rewrites a C++ return address, which conflicts with ++// retguard. Use bytecode interpretation by default. ++DEFINE_BOOL(regexp_interpret_all, true, "interpret all regexp code") ++#else + DEFINE_BOOL(regexp_interpret_all, false, "interpret all regexp code") ++#endif + #ifdef V8_TARGET_BIG_ENDIAN + #define REGEXP_PEEPHOLE_OPTIMIZATION_BOOL false + #else Index: patches/patch-deps_v8_src_wasm_jump-table-assembler_cc =================================================================== RCS file: patches/patch-deps_v8_src_wasm_jump-table-assembler_cc diff -N patches/patch-deps_v8_src_wasm_jump-table-assembler_cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-deps_v8_src_wasm_jump-table-assembler_cc 12 Jul 2026 14:41:40 -0000 @@ -0,0 +1,28 @@ +See https://chromium-review.googlesource.com/c/v8/v8/+/8063803 +Index: deps/v8/src/wasm/jump-table-assembler.cc +--- deps/v8/src/wasm/jump-table-assembler.cc.orig ++++ deps/v8/src/wasm/jump-table-assembler.cc +@@ -114,6 +114,10 @@ void JumpTableAssembler::EmitLazyCompileJumpSlot(uint3 + } + + bool JumpTableAssembler::EmitJumpSlot(Address target) { ++ intptr_t displacement = target - (pc_ + kJumpTableSlotEntryMarkerSize + ++ MacroAssembler::kIntraSegmentJmpInstrSize); ++ if (!is_int32(displacement)) return false; ++ + #ifdef V8_ENABLE_CET_IBT + uint32_t endbr_insn = 0xfa1e0ff3; + uint32_t nop = 0x00401f0f; +@@ -122,11 +126,7 @@ bool JumpTableAssembler::EmitJumpSlot(Address target) + emit(nop, kRelaxedStore); + #endif + +- intptr_t displacement = +- target - (pc_ + MacroAssembler::kIntraSegmentJmpInstrSize); +- if (!is_int32(displacement)) return false; +- +- uint8_t inst[kJumpTableSlotSize] = { ++ uint8_t inst[8] = { + 0xe9, 0, 0, 0, 0, // near_jmp displacement + 0xcc, 0xcc, 0xcc, // int3 * 3 + }; Index: patches/patch-deps_v8_src_wasm_jump-table-assembler_cc.orig =================================================================== RCS file: patches/patch-deps_v8_src_wasm_jump-table-assembler_cc.orig diff -N patches/patch-deps_v8_src_wasm_jump-table-assembler_cc.orig Index: patches/patch-deps_v8_src_wasm_jump-table-assembler_h =================================================================== RCS file: patches/patch-deps_v8_src_wasm_jump-table-assembler_h diff -N patches/patch-deps_v8_src_wasm_jump-table-assembler_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-deps_v8_src_wasm_jump-table-assembler_h 12 Jul 2026 14:41:40 -0000 @@ -0,0 +1,15 @@ +See https://chromium-review.googlesource.com/c/v8/v8/+/8063803 +Index: deps/v8/src/wasm/jump-table-assembler.h +--- deps/v8/src/wasm/jump-table-assembler.h.orig ++++ deps/v8/src/wasm/jump-table-assembler.h +@@ -184,8 +184,10 @@ class V8_EXPORT_PRIVATE JumpTableAssembler { + #if V8_TARGET_ARCH_X64 + #ifdef V8_ENABLE_CET_IBT + static constexpr int kJumpTableSlotSize = 16; ++ static constexpr int kJumpTableSlotEntryMarkerSize = 8; + #else // V8_ENABLE_CET_IBT + static constexpr int kJumpTableSlotSize = 8; ++ static constexpr int kJumpTableSlotEntryMarkerSize = 0; + #endif + static constexpr int kJumpTableLineSize = kJumpTableSlotSize; + static constexpr int kFarJumpTableSlotSize = 16; Index: patches/patch-deps_v8_src_wasm_jump-table-assembler_h.orig =================================================================== RCS file: patches/patch-deps_v8_src_wasm_jump-table-assembler_h.orig diff -N patches/patch-deps_v8_src_wasm_jump-table-assembler_h.orig