From af6cba421f7c0d1197bcdb6fcc2b1468963b2421 Mon Sep 17 00:00:00 2001 From: volker Date: Thu, 14 Nov 2024 18:58:02 +0000 Subject: [PATCH] lang/node: Update to v22.11.0 Feedback from and riscv64 fixes by jca@ ok aisha@ --- lang/node/Makefile | 27 +- lang/node/distinfo | 8 +- lang/node/patches/patch-Makefile | 10 +- lang/node/patches/patch-common_gypi | 22 +- lang/node/patches/patch-configure | 4 +- lang/node/patches/patch-configure_py | 2 +- .../patches/patch-deps_base64_base64_Makefile | 10 - ...s_node-gyp_gyp_pylib_gyp_generator_make_py | 2 +- .../patch-deps_v8_include_v8-internal_h | 6 +- .../patches/patch-deps_v8_include_v8config_h | 6 +- .../node/patches/patch-deps_v8_src_api_api_cc | 4 +- .../patch-deps_v8_src_base_atomicops_h | 2 +- .../patches/patch-deps_v8_src_base_cpu_cc | 22 +- .../patch-deps_v8_src_base_platform-posix_cc | 12 +- ..._baseline_x64_baseline-assembler-x64-inl_h | 14 - ...h-deps_v8_src_builtins_x64_builtins-x64_cc | 46 -- ...ps_v8_src_codegen_riscv_assembler-riscv_cc | 20 +- ...tch-deps_v8_src_codegen_riscv_cpu-riscv_cc | 12 +- ...src_codegen_riscv_macro-assembler-riscv_cc | 2 +- ...h-deps_v8_src_codegen_x64_assembler-x64_cc | 43 -- ...ch-deps_v8_src_codegen_x64_assembler-x64_h | 22 - ..._v8_src_codegen_x64_macro-assembler-x64_cc | 21 - ...s_v8_src_codegen_x64_macro-assembler-x64_h | 21 - ...compiler_backend_x64_code-generator-x64_cc | 12 - ..._v8_src_deoptimizer_x64_deoptimizer-x64_cc | 12 - .../patch-deps_v8_src_execution_isolate_cc | 4 +- .../patches/patch-deps_v8_src_flags_flags_cc | 8 +- ..._src_maglev_x64_maglev-assembler-x64-inl_h | 15 - ..._v8_src_maglev_x64_maglev-assembler-x64_cc | 16 - ...c_regexp_x64_regexp-macro-assembler-x64_cc | 32 - ...rc_regexp_x64_regexp-macro-assembler-x64_h | 11 - ...d_platform-embedded-file-writer-generic_cc | 2 +- .../patches/patch-deps_v8_src_trap-handler_h | 4 +- ...8_src_trap-handler_handler-inside-posix_cc | 4 +- ...aseline_ia32_liftoff-assembler-ia32-inl_h} | 30 +- ...h-deps_v8_src_wasm_jump-table-assembler_cc | 52 -- ...ch-deps_v8_src_wasm_jump-table-assembler_h | 17 - ..._third_party_abseil-cpp_absl_base_config_h | 22 + ...y_abseil-cpp_absl_base_internal_sysinfo_cc | 53 ++ .../patches/patch-include_node_common_gypi | 14 +- .../patch-lib_internal_modules_cjs_loader_js | 2 +- lang/node/patches/patch-lib_net_js | 2 +- lang/node/patches/patch-node_gyp | 37 - lang/node/patches/patch-src_env_cc | 2 +- .../patch-tools_v8_gypfiles_features_gypi | 25 + .../patch-tools_v8_gypfiles_toolchain_gypi | 11 +- .../patches/patch-tools_v8_gypfiles_v8_gyp | 24 +- lang/node/pkg/PLIST | 693 ++++++++++++++++++ 48 files changed, 934 insertions(+), 508 deletions(-) delete mode 100644 lang/node/patches/patch-deps_base64_base64_Makefile delete mode 100644 lang/node/patches/patch-deps_v8_src_baseline_x64_baseline-assembler-x64-inl_h delete mode 100644 lang/node/patches/patch-deps_v8_src_builtins_x64_builtins-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_h delete mode 100644 lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_h delete mode 100644 lang/node/patches/patch-deps_v8_src_compiler_backend_x64_code-generator-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_deoptimizer_x64_deoptimizer-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64-inl_h delete mode 100644 lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_h rename lang/node/patches/{patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32_h => patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32-inl_h} (81%) delete mode 100644 lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_cc delete mode 100644 lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_h create mode 100644 lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_config_h create mode 100644 lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_internal_sysinfo_cc delete mode 100644 lang/node/patches/patch-node_gyp create mode 100644 lang/node/patches/patch-tools_v8_gypfiles_features_gypi diff --git a/lang/node/Makefile b/lang/node/Makefile index 993d5f5b518..f4c8ffef841 100644 --- a/lang/node/Makefile +++ b/lang/node/Makefile @@ -5,7 +5,7 @@ USE_WXNEEDED = Yes COMMENT = JavaScript runtime built on Chrome's V8 JavaScript engine -NODE_VERSION = v20.18.0 +NODE_VERSION = v22.11.0 PLEDGE_VER = 1.1.3 DISTFILES = ${DISTNAME}-headers.tar.gz \ ${DISTNAME}.tar.xz @@ -14,7 +14,6 @@ DISTFILES.pledge = node-pledge-{}${PLEDGE_VER}.tar.gz DISTNAME = node-${NODE_VERSION} PKGNAME = ${DISTNAME:S/v//g} EPOCH = 0 -REVISION = 1 SITES.pledge = https://github.com/qbit/node-pledge/archive/ @@ -32,24 +31,18 @@ MODULES = lang/python WANTLIB += c execinfo m pthread ${COMPILER_LIBCXX} WANTLIB += z brotlienc brotlidec -WANTLIB += icudata icui18n icuuc cares nghttp2 uv -WANTLIB += lib/eopenssl33/ssl lib/eopenssl33/crypto +WANTLIB += icudata icui18n icuuc cares nghttp2 nghttp3 uv +WANTLIB += lib/${EOPENSSL_VSN}/ssl lib/${EOPENSSL_VSN}/crypto COMPILER = base-clang ports-gcc USE_GMAKE = Yes -CXXFLAGS += -I${WRKSRC}/deps/googletest/include -MAKE_ENV += CXXFLAGS="${CXXFLAGS}" - BUILD_DEPENDS = sysutils/flock RUN_DEPENDS = devel/gmake \ sysutils/flock -# Needed to build js_native_api_v8_internals.h -TEST_DEPENDS = devel/gtest - TEST_TARGET = check CONFIGURE_STYLE = simple CONFIGURE_SCRIPT = configure @@ -60,11 +53,14 @@ CONFIGURE_ARGS = --prefix=${PREFIX} \ --shared-cares \ --shared-libuv \ --shared-nghttp2 \ + --shared-nghttp3 \ --shared-zlib \ --shared-openssl \ --shared-openssl-libpath=${EOPENSSL_LIB} \ --shared-openssl-includes=${EOPENSSL_INC} +CFLAGS += -idirafter ${LOCALBASE}/include + SUBST_VARS += DISTNAME SUBST_VARS += WRKDIST SUBST_VARS += NODE_VERSION @@ -72,14 +68,17 @@ SUBST_VARS += EOPENSSL_LIB # uses a wide range of OpenSSL API and only really supports boring/openssl LIB_DEPENDS += archivers/brotli \ - net/libcares \ devel/libuv \ + net/libcares \ + security/openssl/${OPENSSL_VSN} \ textproc/icu4c \ www/nghttp2 \ - security/openssl/3.3 + www/nghttp3 -EOPENSSL_LIB = ${LOCALBASE}/lib/eopenssl33 -EOPENSSL_INC = ${LOCALBASE}/include/eopenssl33 +OPENSSL_VSN = 3.3 +EOPENSSL_VSN = eopenssl${OPENSSL_VSN:C/\.//} +EOPENSSL_LIB = ${LOCALBASE}/lib/${EOPENSSL_VSN} +EOPENSSL_INC = ${LOCALBASE}/include/${EOPENSSL_VSN} DEBUG_PACKAGES = ${BUILD_PACKAGES} diff --git a/lang/node/distinfo b/lang/node/distinfo index 86b0e25c683..504ec97c211 100644 --- a/lang/node/distinfo +++ b/lang/node/distinfo @@ -1,6 +1,6 @@ SHA256 (node-pledge-1.1.3.tar.gz) = fEaXvLg6hYEJ69K+mgQFizf8DiJY2/DtyFJB/pEanVU= -SHA256 (node-v20.18.0-headers.tar.gz) = +66HqLwAlpx+ieFeUTkjYuLB5Zp+q6PizLoWAXRed6U= -SHA256 (node-v20.18.0.tar.xz) = fZQz6R/YjYK6jehucR7EGQdjjiJ5k9IulRJrAvbNcUo= +SHA256 (node-v22.11.0-headers.tar.gz) = DULcOzN39J5JWXbcDk9cOn/7HXFAUNLyR6/bvAiY2uU= +SHA256 (node-v22.11.0.tar.xz) = u/Apd2HVOu/anXhVxXx9LCcrg6e1utT+qcspAG2OHTU= SIZE (node-pledge-1.1.3.tar.gz) = 3167 -SIZE (node-v20.18.0-headers.tar.gz) = 8752401 -SIZE (node-v20.18.0.tar.xz) = 41937144 +SIZE (node-v22.11.0-headers.tar.gz) = 8780269 +SIZE (node-v22.11.0.tar.xz) = 47006780 diff --git a/lang/node/patches/patch-Makefile b/lang/node/patches/patch-Makefile index 6bd2f090737..4a08773f078 100644 --- a/lang/node/patches/patch-Makefile +++ b/lang/node/patches/patch-Makefile @@ -1,19 +1,19 @@ Index: Makefile --- Makefile.orig +++ Makefile -@@ -190,7 +190,7 @@ config.gypi: configure configure.py src/node_version.h +@@ -191,7 +191,7 @@ config.gypi: configure configure.py src/node_version.h fi .PHONY: install --install: all ## Installs node into $PREFIX (default=/usr/local). -+install: all build-pledge ## Installs node into $PREFIX (default=/usr/local). +-install: all ## Install node into $PREFIX (default=/usr/local). ++install: all build-pledge ## Install node into $PREFIX (default=/usr/local). $(PYTHON) tools/install.py $@ --dest-dir '$(DESTDIR)' --prefix '$(PREFIX)' .PHONY: uninstall -@@ -442,6 +442,12 @@ test/addons/.buildstamp: $(ADDONS_PREREQS) \ +@@ -443,6 +443,12 @@ test/addons/.buildstamp: $(ADDONS_PREREQS) \ # Just goes to show that recursive make really is harmful... # TODO(bnoordhuis) Force rebuild after gyp update. - build-addons: | $(NODE_EXE) test/addons/.buildstamp + build-addons: | $(NODE_EXE) test/addons/.buildstamp ## Build addons for Node.js. + +build-pledge: $(NODE_EXE) + $(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp.js rebuild \ diff --git a/lang/node/patches/patch-common_gypi b/lang/node/patches/patch-common_gypi index f8dc58707ce..eedb816e8aa 100644 --- a/lang/node/patches/patch-common_gypi +++ b/lang/node/patches/patch-common_gypi @@ -1,7 +1,17 @@ Index: common.gypi --- common.gypi.orig +++ common.gypi -@@ -188,7 +188,6 @@ +@@ -40,6 +40,9 @@ + + ##### V8 defaults for Node.js ##### + ++ # Enable CET / IBT ++ 'v8_enable_cet_ibt': 'true', ++ + # Turn on SipHash for hash seed generation, addresses HashWick + 'v8_use_siphash': 'true', + +@@ -191,7 +194,6 @@ }], ], }, @@ -9,18 +19,20 @@ Index: common.gypi 'conditions': [ ['enable_lto=="true"', { 'cflags': ['<(lto)'], -@@ -472,7 +471,9 @@ +@@ -503,8 +505,10 @@ + 'standalone_static_library': 1, }], ['OS=="openbsd"', { - 'cflags': [ '-I/usr/local/include' ], +- 'cflags': [ '-I/usr/local/include' ], - 'ldflags': [ '-Wl,-z,wxneeded' ], ++ 'cflags': [ '-idirafter /usr/local/include' ], + 'ldflags': [ '-Wl,-z,wxneeded' + , '-Wl,-rpath,${EOPENSSL_LIB}' + ], }], ['_toolset=="host"', { 'conditions': [ -@@ -489,7 +490,7 @@ +@@ -521,7 +525,7 @@ 'ldflags': [ '-m32' ], }], [ 'host_arch=="ppc64" and OS not in "aix os400"', { @@ -29,7 +41,7 @@ Index: common.gypi 'ldflags': [ '-m64' ], }], [ 'host_arch=="s390x" and OS=="linux"', { -@@ -513,7 +514,7 @@ +@@ -545,7 +549,7 @@ 'ldflags': [ '-m32' ], }], [ 'target_arch=="ppc64" and OS not in "aix os400"', { diff --git a/lang/node/patches/patch-configure b/lang/node/patches/patch-configure index 9012ef98e1a..7e51ff865e0 100644 --- a/lang/node/patches/patch-configure +++ b/lang/node/patches/patch-configure @@ -1,7 +1,7 @@ Index: configure --- configure.orig +++ configure -@@ -4,14 +4,6 @@ +@@ -4,12 +4,6 @@ # Note that the mix of single and double quotes is intentional, # as is the fact that the ] goes on a new line. _=[ 'exec' '/bin/sh' '-c' ''' @@ -11,8 +11,6 @@ Index: configure -command -v python3.10 >/dev/null && exec python3.10 "$0" "$@" -command -v python3.9 >/dev/null && exec python3.9 "$0" "$@" -command -v python3.8 >/dev/null && exec python3.8 "$0" "$@" --command -v python3.7 >/dev/null && exec python3.7 "$0" "$@" --command -v python3.6 >/dev/null && exec python3.6 "$0" "$@" command -v python3 >/dev/null && exec python3 "$0" "$@" exec python "$0" "$@" ''' "$0" "$@" diff --git a/lang/node/patches/patch-configure_py b/lang/node/patches/patch-configure_py index a83d9ed1700..69c63e86e88 100644 --- a/lang/node/patches/patch-configure_py +++ b/lang/node/patches/patch-configure_py @@ -1,7 +1,7 @@ Index: configure.py --- configure.py.orig +++ configure.py -@@ -1625,6 +1625,10 @@ def configure_v8(o): +@@ -1672,6 +1672,10 @@ def configure_v8(o, configs): raise Exception( 'Only one of the --v8-enable-object-print or --v8-disable-object-print options ' 'can be specified at a time.') diff --git a/lang/node/patches/patch-deps_base64_base64_Makefile b/lang/node/patches/patch-deps_base64_base64_Makefile deleted file mode 100644 index aaaea27cc65..00000000000 --- a/lang/node/patches/patch-deps_base64_base64_Makefile +++ /dev/null @@ -1,10 +0,0 @@ -Index: deps/base64/base64/Makefile ---- deps/base64/base64/Makefile.orig -+++ deps/base64/base64/Makefile -@@ -1,5 +1,5 @@ - CFLAGS += -std=c99 -O3 -Wall -Wextra -pedantic -DBASE64_STATIC_DEFINE -- -+CFLAGS += -std=c99 -Wall -Wextra -pedantic -DBASE64_STATIC_DEFINE - # Set OBJCOPY if not defined by environment: - OBJCOPY ?= objcopy - diff --git a/lang/node/patches/patch-deps_npm_node_modules_node-gyp_gyp_pylib_gyp_generator_make_py b/lang/node/patches/patch-deps_npm_node_modules_node-gyp_gyp_pylib_gyp_generator_make_py index e4b774a6eff..90aa48b9bc7 100644 --- a/lang/node/patches/patch-deps_npm_node_modules_node-gyp_gyp_pylib_gyp_generator_make_py +++ b/lang/node/patches/patch-deps_npm_node_modules_node-gyp_gyp_pylib_gyp_generator_make_py @@ -1,7 +1,7 @@ Index: deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py --- deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py.orig +++ deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py -@@ -372,6 +372,8 @@ all_deps := +@@ -373,6 +373,8 @@ all_deps := %(make_global_settings)s diff --git a/lang/node/patches/patch-deps_v8_include_v8-internal_h b/lang/node/patches/patch-deps_v8_include_v8-internal_h index ed315a3e9e1..22870a315b8 100644 --- a/lang/node/patches/patch-deps_v8_include_v8-internal_h +++ b/lang/node/patches/patch-deps_v8_include_v8-internal_h @@ -1,12 +1,12 @@ Index: deps/v8/include/v8-internal.h --- deps/v8/include/v8-internal.h.orig +++ deps/v8/include/v8-internal.h -@@ -173,7 +173,7 @@ using SandboxedPointer_t = Address; +@@ -175,7 +175,7 @@ using SandboxedPointer_t = Address; #ifdef V8_ENABLE_SANDBOX // Size of the sandbox, excluding the guard regions surrounding it. --#ifdef V8_TARGET_OS_ANDROID -+#if defined(V8_TARGET_OS_ANDROID) || defined(V8_TARGET_OS_OPENBSD) +-#if defined(V8_TARGET_OS_ANDROID) ++#if (defined(V8_TARGET_OS_ANDROID) || defined(V8_TARGET_OS_OPENBSD) // On Android, most 64-bit devices seem to be configured with only 39 bits of // virtual address space for userspace. As such, limit the sandbox to 128GB (a // quarter of the total available address space). diff --git a/lang/node/patches/patch-deps_v8_include_v8config_h b/lang/node/patches/patch-deps_v8_include_v8config_h index 81696ffd658..6910c14f5f2 100644 --- a/lang/node/patches/patch-deps_v8_include_v8config_h +++ b/lang/node/patches/patch-deps_v8_include_v8config_h @@ -1,7 +1,7 @@ Index: deps/v8/include/v8config.h --- deps/v8/include/v8config.h.orig +++ deps/v8/include/v8config.h -@@ -184,6 +184,8 @@ path. Add it with -I to the command line +@@ -185,6 +185,8 @@ path. Add it with -I to the command line && !defined(V8_TARGET_OS_FUCHSIA) \ && !defined(V8_TARGET_OS_IOS) \ && !defined(V8_TARGET_OS_LINUX) \ @@ -10,7 +10,7 @@ Index: deps/v8/include/v8config.h && !defined(V8_TARGET_OS_MACOS) \ && !defined(V8_TARGET_OS_WIN) \ && !defined(V8_TARGET_OS_CHROMEOS) -@@ -196,6 +198,8 @@ path. Add it with -I to the command line +@@ -197,6 +199,8 @@ path. Add it with -I to the command line || defined(V8_TARGET_OS_FUCHSIA) \ || defined(V8_TARGET_OS_IOS) \ || defined(V8_TARGET_OS_LINUX) \ @@ -19,7 +19,7 @@ Index: deps/v8/include/v8config.h || defined(V8_TARGET_OS_MACOS) \ || defined(V8_TARGET_OS_WIN) \ || defined(V8_TARGET_OS_CHROMEOS) -@@ -217,6 +221,16 @@ path. Add it with -I to the command line +@@ -218,6 +222,16 @@ path. Add it with -I to the command line #ifdef V8_OS_LINUX # define V8_TARGET_OS_LINUX diff --git a/lang/node/patches/patch-deps_v8_src_api_api_cc b/lang/node/patches/patch-deps_v8_src_api_api_cc index 33e3483cde4..4b954f4bb12 100644 --- a/lang/node/patches/patch-deps_v8_src_api_api_cc +++ b/lang/node/patches/patch-deps_v8_src_api_api_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/api/api.cc --- deps/v8/src/api/api.cc.orig +++ deps/v8/src/api/api.cc -@@ -142,7 +142,7 @@ +@@ -144,7 +144,7 @@ #include "src/wasm/wasm-serialization.h" #endif // V8_ENABLE_WEBASSEMBLY @@ -10,7 +10,7 @@ Index: deps/v8/src/api/api.cc #include #include -@@ -6454,7 +6454,7 @@ bool v8::V8::Initialize(const int build_config) { +@@ -6396,7 +6396,7 @@ bool v8::V8::Initialize(const int build_config) { return true; } diff --git a/lang/node/patches/patch-deps_v8_src_base_atomicops_h b/lang/node/patches/patch-deps_v8_src_base_atomicops_h index 97fae09dfd6..65ce0d4280b 100644 --- a/lang/node/patches/patch-deps_v8_src_base_atomicops_h +++ b/lang/node/patches/patch-deps_v8_src_base_atomicops_h @@ -14,7 +14,7 @@ Index: deps/v8/src/base/atomicops.h using Atomic64 = int64_t; #else using Atomic64 = intptr_t; -@@ -258,7 +258,7 @@ inline Atomic32 SeqCst_Load(volatile const Atomic32* p +@@ -266,7 +266,7 @@ inline Atomic32 SeqCst_Load(volatile const Atomic32* p std::memory_order_seq_cst); } diff --git a/lang/node/patches/patch-deps_v8_src_base_cpu_cc b/lang/node/patches/patch-deps_v8_src_base_cpu_cc index e89ad305027..0c853c512a5 100644 --- a/lang/node/patches/patch-deps_v8_src_base_cpu_cc +++ b/lang/node/patches/patch-deps_v8_src_base_cpu_cc @@ -4,27 +4,15 @@ OpenBSD/riscv64 always uses floating-point support. Index: deps/v8/src/base/cpu.cc --- deps/v8/src/base/cpu.cc.orig +++ deps/v8/src/base/cpu.cc -@@ -868,6 +868,8 @@ CPU::CPU() - #endif // !USE_SIMULATOR - - #elif V8_HOST_ARCH_RISCV64 -+ -+#if V8_OS_LINUX - CPUInfo cpu_info; - char* features = cpu_info.ExtractField("isa"); - -@@ -878,6 +880,14 @@ CPU::CPU() - has_fpu_ = true; - has_rvv_ = true; +@@ -933,7 +933,10 @@ CPU::CPU() + if (HasListItem(mmu, "sv57")) { + riscv_mmu_ = RV_MMU_MODE::kRiscvSV57; } -+ -+#elif V8_OS_OPENBSD -+ +-#endif ++#elif V8_OS_OPENBSD // V8_OS_LINUX + // OpenBSD requires and defaults to FP support. + has_fpu_ = true; -+ +#endif // V8_OS_OPENBSD -+ #endif // V8_HOST_ARCH_RISCV64 } diff --git a/lang/node/patches/patch-deps_v8_src_base_platform-posix_cc b/lang/node/patches/patch-deps_v8_src_base_platform-posix_cc index 7f7defa18d2..cfb3db4d722 100644 --- a/lang/node/patches/patch-deps_v8_src_base_platform-posix_cc +++ b/lang/node/patches/patch-deps_v8_src_base_platform-posix_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/base/platform/platform-posix.cc --- deps/v8/src/base/platform/platform-posix.cc.orig +++ deps/v8/src/base/platform/platform-posix.cc -@@ -53,7 +53,7 @@ +@@ -54,7 +54,7 @@ #if V8_OS_DARWIN #include #include @@ -10,7 +10,7 @@ Index: deps/v8/src/base/platform/platform-posix.cc #include #endif -@@ -71,7 +71,7 @@ +@@ -72,7 +72,7 @@ #include #endif @@ -43,7 +43,7 @@ Index: deps/v8/src/base/platform/platform-posix.cc // TODO(bbudge) Move Cygwin and Fuchsia stuff into platform-specific files. #if !V8_OS_CYGWIN && !V8_OS_FUCHSIA -@@ -667,7 +675,7 @@ void OS::DestroySharedMemoryHandle(PlatformSharedMemor +@@ -672,7 +680,7 @@ void OS::DestroySharedMemoryHandle(PlatformSharedMemor // static bool OS::HasLazyCommits() { @@ -52,12 +52,12 @@ Index: deps/v8/src/base/platform/platform-posix.cc return true; #else // TODO(bbudge) Return true for all POSIX platforms. -@@ -1244,7 +1252,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* +@@ -1304,7 +1312,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* // keep this version in POSIX as most Linux-compatible derivatives will // support it. MacOS and FreeBSD are different here. #if !defined(V8_OS_FREEBSD) && !defined(V8_OS_DARWIN) && !defined(_AIX) && \ - !defined(V8_OS_SOLARIS) + !defined(V8_OS_SOLARIS) && !defined(V8_OS_OPENBSD) - // static - Stack::StackSlot Stack::ObtainCurrentThreadStackStart() { + namespace { + #if DEBUG diff --git a/lang/node/patches/patch-deps_v8_src_baseline_x64_baseline-assembler-x64-inl_h b/lang/node/patches/patch-deps_v8_src_baseline_x64_baseline-assembler-x64-inl_h deleted file mode 100644 index ffbd5d7a00d..00000000000 --- a/lang/node/patches/patch-deps_v8_src_baseline_x64_baseline-assembler-x64-inl_h +++ /dev/null @@ -1,14 +0,0 @@ -Index: deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h ---- deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h.orig -+++ deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h -@@ -73,9 +73,7 @@ MemOperand BaselineAssembler::FeedbackVectorOperand() - - void BaselineAssembler::Bind(Label* label) { __ bind(label); } - --void BaselineAssembler::JumpTarget() { -- // NOP on x64. --} -+void BaselineAssembler::JumpTarget() { __ endbr64(); } - - void BaselineAssembler::Jump(Label* target, Label::Distance distance) { - __ jmp(target, distance); diff --git a/lang/node/patches/patch-deps_v8_src_builtins_x64_builtins-x64_cc b/lang/node/patches/patch-deps_v8_src_builtins_x64_builtins-x64_cc deleted file mode 100644 index f4e1f1f071f..00000000000 --- a/lang/node/patches/patch-deps_v8_src_builtins_x64_builtins-x64_cc +++ /dev/null @@ -1,46 +0,0 @@ -Index: deps/v8/src/builtins/x64/builtins-x64.cc ---- deps/v8/src/builtins/x64/builtins-x64.cc.orig -+++ deps/v8/src/builtins/x64/builtins-x64.cc -@@ -43,6 +43,8 @@ namespace internal { - #define __ ACCESS_MASM(masm) - - void Builtins::Generate_Adaptor(MacroAssembler* masm, Address address) { -+ __ CodeEntry(); -+ - __ LoadAddress(kJavaScriptCallExtraArg1Register, - ExternalReference::Create(address)); - __ Jump(BUILTIN_CODE(masm->isolate(), AdaptorWithBuiltinExitFrame), -@@ -457,7 +459,7 @@ void Generate_JSEntryVariant(MacroAssembler* masm, Sta - // Jump to a faked try block that does the invoke, with a faked catch - // block that sets the pending exception. - __ jmp(&invoke); -- __ bind(&handler_entry); -+ __ BindExceptionHandler(&handler_entry); - - // Store the current pc as the handler offset. It's used later to create the - // handler table. -@@ -3798,6 +3800,8 @@ void GenericJSToWasmWrapperHelper(MacroAssembler* masm - RestoreParentSuspender(masm, rbx, rcx); - } - __ bind(&suspend); -+ -+ __ endbr64(); - // No need to process the return value if the stack is suspended, there is a - // single 'externref' value (the promise) which doesn't require conversion. - -@@ -4146,6 +4150,7 @@ void Builtins::Generate_WasmSuspend(MacroAssembler* ma - LoadJumpBuffer(masm, jmpbuf, true); - __ Trap(); - __ bind(&resume); -+ __ endbr64(); - __ LeaveFrame(StackFrame::STACK_SWITCH); - __ ret(0); - } -@@ -4289,6 +4294,7 @@ void Generate_WasmResumeHelper(MacroAssembler* masm, w - } - __ Trap(); - __ bind(&suspend); -+ __ endbr64(); - __ LeaveFrame(StackFrame::STACK_SWITCH); - // Pop receiver + parameter. - __ ret(2 * kSystemPointerSize); diff --git a/lang/node/patches/patch-deps_v8_src_codegen_riscv_assembler-riscv_cc b/lang/node/patches/patch-deps_v8_src_codegen_riscv_assembler-riscv_cc index 396b2cb3091..c0975bc5f61 100644 --- a/lang/node/patches/patch-deps_v8_src_codegen_riscv_assembler-riscv_cc +++ b/lang/node/patches/patch-deps_v8_src_codegen_riscv_assembler-riscv_cc @@ -11,7 +11,7 @@ Fix build errors due to type mismatch between intptr_t (long) and int64_t Index: deps/v8/src/codegen/riscv/assembler-riscv.cc --- deps/v8/src/codegen/riscv/assembler-riscv.cc.orig +++ deps/v8/src/codegen/riscv/assembler-riscv.cc -@@ -344,7 +344,7 @@ int Assembler::target_at(int pos, bool is_internal) { +@@ -366,7 +366,7 @@ int Assembler::target_at(int pos, bool is_internal) { pc = target_address_at(pc); uintptr_t instr_address = reinterpret_cast(buffer_start_ + pos); @@ -20,7 +20,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc if (imm == kEndOfJumpChain) { return kEndOfChain; } else { -@@ -891,7 +891,7 @@ inline int64_t signExtend(uint64_t V, int N) { +@@ -917,7 +917,7 @@ inline int64_t signExtend(uint64_t V, int N) { } #if V8_TARGET_ARCH_RISCV64 @@ -29,7 +29,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc UseScratchRegisterScope temps(this); if (RecursiveLiCount(imm) > GeneralLiCount(imm, temps.hasAvailable())) { GeneralLi(rd, imm); -@@ -1060,7 +1060,7 @@ void Assembler::GeneralLi(Register rd, int64_t imm) { +@@ -1086,7 +1086,7 @@ void Assembler::GeneralLi(Register rd, int64_t imm) { } } @@ -38,7 +38,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc // Initialize rd with an address // Pointers are 48 bits // 6 fixed instructions are generated -@@ -1078,7 +1078,7 @@ void Assembler::li_ptr(Register rd, int64_t imm) { +@@ -1104,7 +1104,7 @@ void Assembler::li_ptr(Register rd, int64_t imm) { ori(rd, rd, a6); // 6 bits are put in. 48 bis in rd } @@ -47,7 +47,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc DEBUG_PRINTF("\tli_constant(%d, %lx <%ld>)\n", ToNumber(rd), imm, imm); lui(rd, (imm + (1LL << 47) + (1LL << 35) + (1LL << 23) + (1LL << 11)) >> 48); // Bits 63:48 -@@ -1527,7 +1527,7 @@ Address Assembler::target_address_at(Address pc) { +@@ -1549,7 +1549,7 @@ Address Assembler::target_address_at(Address pc) { // // Patching the address must replace all instructions, and flush the i-cache. // Note that this assumes the use of SV48, the 48-bit virtual memory system. @@ -56,7 +56,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc ICacheFlushMode icache_flush_mode) { DEBUG_PRINTF("set_target_value_at: pc: %lx\ttarget: %lx\n", pc, target); uint32_t* p = reinterpret_cast(pc); -@@ -1820,7 +1820,7 @@ const size_t ConstantPool::kApproxMaxEntryCount = 512; +@@ -1825,7 +1825,7 @@ const size_t ConstantPool::kApproxMaxEntryCount = 512; // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// @@ -65,7 +65,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc if (val > 0 && RecursiveLiImplCount(val) > 2) { unsigned LeadingZeros = base::bits::CountLeadingZeros((uint64_t)val); uint64_t ShiftedVal = (uint64_t)val << LeadingZeros; -@@ -1834,7 +1834,7 @@ void Assembler::RecursiveLi(Register rd, int64_t val) +@@ -1839,7 +1839,7 @@ void Assembler::RecursiveLi(Register rd, int64_t val) RecursiveLiImpl(rd, val); } @@ -74,7 +74,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc if (val > 0 && RecursiveLiImplCount(val) > 2) { unsigned LeadingZeros = base::bits::CountLeadingZeros((uint64_t)val); uint64_t ShiftedVal = (uint64_t)val << LeadingZeros; -@@ -1849,7 +1849,7 @@ int Assembler::RecursiveLiCount(int64_t val) { +@@ -1854,7 +1854,7 @@ int Assembler::RecursiveLiCount(int64_t val) { return RecursiveLiImplCount(val); } @@ -83,7 +83,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc if (is_int32(Val)) { // Depending on the active bits in the immediate Value v, the following // instruction sequences are emitted: -@@ -1926,7 +1926,7 @@ void Assembler::RecursiveLiImpl(Register rd, int64_t V +@@ -1931,7 +1931,7 @@ void Assembler::RecursiveLiImpl(Register rd, int64_t V } } @@ -92,7 +92,7 @@ Index: deps/v8/src/codegen/riscv/assembler-riscv.cc int count = 0; if (is_int32(Val)) { // Depending on the active bits in the immediate Value v, the following -@@ -2007,7 +2007,7 @@ int Assembler::RecursiveLiImplCount(int64_t Val) { +@@ -2012,7 +2012,7 @@ int Assembler::RecursiveLiImplCount(int64_t Val) { return count; } diff --git a/lang/node/patches/patch-deps_v8_src_codegen_riscv_cpu-riscv_cc b/lang/node/patches/patch-deps_v8_src_codegen_riscv_cpu-riscv_cc index d8bcb5c2cab..c0d5625aa23 100644 --- a/lang/node/patches/patch-deps_v8_src_codegen_riscv_cpu-riscv_cc +++ b/lang/node/patches/patch-deps_v8_src_codegen_riscv_cpu-riscv_cc @@ -27,13 +27,13 @@ Index: deps/v8/src/codegen/riscv/cpu-riscv.cc + sysarch(RISCV_SYNC_ICACHE, &args); +# else char* end = reinterpret_cast(start) + size; - // The definition of this syscall is + // The definition of this syscall is equal to // SYSCALL_DEFINE3(riscv_flush_icache, uintptr_t, start, -@@ -21,6 +31,7 @@ void CpuFeatures::FlushICache(void* start, size_t size - // The flag here is set to be SYS_RISCV_FLUSH_ICACHE_LOCAL, which is - // defined as 1 in the Linux kernel. - syscall(SYS_riscv_flush_icache, start, end, 1); -+# endif // !__OpenBSD__ +@@ -25,6 +35,7 @@ void CpuFeatures::FlushICache(void* start, size_t size + // corresponding system call number used in the kernel to dispatch the system + // call. + syscall(__NR_riscv_flush_icache, start, end, 1); ++# endif // __OpenBSD__ #endif // !USE_SIMULATOR. } diff --git a/lang/node/patches/patch-deps_v8_src_codegen_riscv_macro-assembler-riscv_cc b/lang/node/patches/patch-deps_v8_src_codegen_riscv_macro-assembler-riscv_cc index b2ebbe70bc9..4e29c39d409 100644 --- a/lang/node/patches/patch-deps_v8_src_codegen_riscv_macro-assembler-riscv_cc +++ b/lang/node/patches/patch-deps_v8_src_codegen_riscv_macro-assembler-riscv_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/codegen/riscv/macro-assembler-riscv.cc --- deps/v8/src/codegen/riscv/macro-assembler-riscv.cc.orig +++ deps/v8/src/codegen/riscv/macro-assembler-riscv.cc -@@ -2149,7 +2149,7 @@ void MacroAssembler::li(Register rd, Operand j, LiFlag +@@ -2442,7 +2442,7 @@ void MacroAssembler::li(Register rd, Operand j, LiFlag int reverse_count = RV_li_count(~j.immediate(), temps.hasAvailable()); if (v8_flags.riscv_constant_pool && count >= 4 && reverse_count >= 4) { // Ld/Lw a Address from a constant pool. diff --git a/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_cc b/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_cc deleted file mode 100644 index 42c59f56c7b..00000000000 --- a/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_cc +++ /dev/null @@ -1,43 +0,0 @@ -Index: deps/v8/src/codegen/x64/assembler-x64.cc ---- deps/v8/src/codegen/x64/assembler-x64.cc.orig -+++ deps/v8/src/codegen/x64/assembler-x64.cc -@@ -1268,6 +1268,14 @@ void Assembler::hlt() { - emit(0xF4); - } - -+void Assembler::endbr64() { -+ EnsureSpace ensure_space(this); -+ emit(0xF3); -+ emit(0x0f); -+ emit(0x1e); -+ emit(0xfa); -+} -+ - void Assembler::emit_idiv(Register src, int size) { - EnsureSpace ensure_space(this); - emit_rex(src, size); -@@ -1527,16 +1535,22 @@ void Assembler::jmp(Handle target, RelocInfo::Mo - emitl(code_target_index); - } - --void Assembler::jmp(Register target) { -+void Assembler::jmp(Register target, bool notrack) { - EnsureSpace ensure_space(this); -+ if (notrack) { -+ emit(0x3e); -+ } - // Opcode FF/4 r64. - emit_optional_rex_32(target); - emit(0xFF); - emit_modrm(0x4, target); - } - --void Assembler::jmp(Operand src) { -+void Assembler::jmp(Operand src, bool notrack) { - EnsureSpace ensure_space(this); -+ if (notrack) { -+ emit(0x3e); -+ } - // Opcode FF/4 m64. - emit_optional_rex_32(src); - emit(0xFF); diff --git a/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_h b/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_h deleted file mode 100644 index 0bf8371ccf9..00000000000 --- a/lang/node/patches/patch-deps_v8_src_codegen_x64_assembler-x64_h +++ /dev/null @@ -1,22 +0,0 @@ -Index: deps/v8/src/codegen/x64/assembler-x64.h ---- deps/v8/src/codegen/x64/assembler-x64.h.orig -+++ deps/v8/src/codegen/x64/assembler-x64.h -@@ -856,6 +856,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBa - void ret(int imm16); - void ud2(); - void setcc(Condition cc, Register reg); -+ void endbr64(); - - void pblendw(XMMRegister dst, Operand src, uint8_t mask); - void pblendw(XMMRegister dst, XMMRegister src, uint8_t mask); -@@ -904,8 +905,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBa - void jmp(Handle target, RelocInfo::Mode rmode); - - // Jump near absolute indirect (r64) -- void jmp(Register adr); -- void jmp(Operand src); -+ void jmp(Register adr, bool notrack = false); -+ void jmp(Operand src, bool notrack = false); - - // Unconditional jump relative to the current address. Low-level routine, - // use with caution! diff --git a/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_cc b/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_cc deleted file mode 100644 index 1c91c89f7cb..00000000000 --- a/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_cc +++ /dev/null @@ -1,21 +0,0 @@ -Index: deps/v8/src/codegen/x64/macro-assembler-x64.cc ---- deps/v8/src/codegen/x64/macro-assembler-x64.cc.orig -+++ deps/v8/src/codegen/x64/macro-assembler-x64.cc -@@ -49,6 +49,8 @@ Operand StackArgumentsAccessor::GetArgumentOperand(int - return Operand(rsp, kPCOnStackSize + index * kSystemPointerSize); - } - -+void MacroAssembler::CodeEntry() { endbr64(); } -+ - void MacroAssembler::Load(Register destination, ExternalReference source) { - if (root_array_available_ && options().enable_root_relative_access) { - intptr_t delta = RootRegisterOffsetForExternalReference(isolate(), source); -@@ -1701,7 +1703,7 @@ void MacroAssembler::Switch(Register scratch, Register - cmpq(reg, Immediate(num_labels)); - j(above_equal, &fallthrough); - leaq(table, MemOperand(&jump_table)); -- jmp(MemOperand(table, reg, times_8, 0)); -+ jmp(MemOperand(table, reg, times_8, 0), /*notrack=*/true); - // Emit the jump table inline, under the assumption that it's not too big. - Align(kSystemPointerSize); - bind(&jump_table); diff --git a/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_h b/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_h deleted file mode 100644 index 8cc8d5fead5..00000000000 --- a/lang/node/patches/patch-deps_v8_src_codegen_x64_macro-assembler-x64_h +++ /dev/null @@ -1,21 +0,0 @@ -Index: deps/v8/src/codegen/x64/macro-assembler-x64.h ---- deps/v8/src/codegen/x64/macro-assembler-x64.h.orig -+++ deps/v8/src/codegen/x64/macro-assembler-x64.h -@@ -577,11 +577,14 @@ class V8_EXPORT_PRIVATE MacroAssembler - - // Define a function entrypoint. This doesn't emit any code for this - // architecture, as control-flow integrity is not supported for it. -- void CodeEntry() {} -+ void CodeEntry(); - // Define an exception handler. -- void ExceptionHandler() {} -+ void ExceptionHandler() { CodeEntry(); } - // Define an exception handler and bind a label. -- void BindExceptionHandler(Label* label) { bind(label); } -+ void BindExceptionHandler(Label* label) { -+ bind(label); -+ CodeEntry(); -+ } - - // --------------------------------------------------------------------------- - // Pointer compression support diff --git a/lang/node/patches/patch-deps_v8_src_compiler_backend_x64_code-generator-x64_cc b/lang/node/patches/patch-deps_v8_src_compiler_backend_x64_code-generator-x64_cc deleted file mode 100644 index 52342e51690..00000000000 --- a/lang/node/patches/patch-deps_v8_src_compiler_backend_x64_code-generator-x64_cc +++ /dev/null @@ -1,12 +0,0 @@ -Index: deps/v8/src/compiler/backend/x64/code-generator-x64.cc ---- deps/v8/src/compiler/backend/x64/code-generator-x64.cc.orig -+++ deps/v8/src/compiler/backend/x64/code-generator-x64.cc -@@ -5497,7 +5497,7 @@ void CodeGenerator::AssembleArchTableSwitch(Instructio - __ cmpl(input, Immediate(case_count)); - __ j(above_equal, GetLabel(i.InputRpo(1))); - __ leaq(kScratchRegister, Operand(table)); -- __ jmp(Operand(kScratchRegister, input, times_8, 0)); -+ __ jmp(Operand(kScratchRegister, input, times_8, 0), /*notrack=*/true); - } - - void CodeGenerator::AssembleArchSelect(Instruction* instr, diff --git a/lang/node/patches/patch-deps_v8_src_deoptimizer_x64_deoptimizer-x64_cc b/lang/node/patches/patch-deps_v8_src_deoptimizer_x64_deoptimizer-x64_cc deleted file mode 100644 index f5f4caa225c..00000000000 --- a/lang/node/patches/patch-deps_v8_src_deoptimizer_x64_deoptimizer-x64_cc +++ /dev/null @@ -1,12 +0,0 @@ -Index: deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc ---- deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc.orig -+++ deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc -@@ -21,7 +21,7 @@ ASSERT_OFFSET(Builtin::kDeoptimizationEntry_Lazy); - #undef ASSERT_OFFSET - - const int Deoptimizer::kEagerDeoptExitSize = 4; --const int Deoptimizer::kLazyDeoptExitSize = 4; -+const int Deoptimizer::kLazyDeoptExitSize = 8; - - Float32 RegisterValues::GetFloatRegister(unsigned n) const { - return Float32::FromBits( diff --git a/lang/node/patches/patch-deps_v8_src_execution_isolate_cc b/lang/node/patches/patch-deps_v8_src_execution_isolate_cc index 2f51f8f3a87..8b703ca4f10 100644 --- a/lang/node/patches/patch-deps_v8_src_execution_isolate_cc +++ b/lang/node/patches/patch-deps_v8_src_execution_isolate_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/execution/isolate.cc --- deps/v8/src/execution/isolate.cc.orig +++ deps/v8/src/execution/isolate.cc -@@ -145,6 +145,10 @@ +@@ -153,6 +153,10 @@ #include "src/execution/simulator-base.h" #endif @@ -12,7 +12,7 @@ Index: deps/v8/src/execution/isolate.cc extern "C" const uint8_t v8_Default_embedded_blob_code_[]; extern "C" uint32_t v8_Default_embedded_blob_code_size_; extern "C" const uint8_t v8_Default_embedded_blob_data_[]; -@@ -3864,6 +3868,13 @@ void Isolate::InitializeDefaultEmbeddedBlob() { +@@ -4232,6 +4236,13 @@ void Isolate::InitializeDefaultEmbeddedBlob() { uint32_t code_size = DefaultEmbeddedBlobCodeSize(); const uint8_t* data = DefaultEmbeddedBlobData(); uint32_t data_size = DefaultEmbeddedBlobDataSize(); diff --git a/lang/node/patches/patch-deps_v8_src_flags_flags_cc b/lang/node/patches/patch-deps_v8_src_flags_flags_cc index 64e89801a95..d77e1b0ed8d 100644 --- a/lang/node/patches/patch-deps_v8_src_flags_flags_cc +++ b/lang/node/patches/patch-deps_v8_src_flags_flags_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/flags/flags.cc --- deps/v8/src/flags/flags.cc.orig +++ deps/v8/src/flags/flags.cc -@@ -13,6 +13,10 @@ +@@ -15,6 +15,10 @@ #include #include @@ -10,9 +10,9 @@ Index: deps/v8/src/flags/flags.cc +#endif + #include "src/base/functional.h" - #include "src/base/logging.h" + #include "src/base/lazy-instance.h" #include "src/base/platform/platform.h" -@@ -32,7 +36,11 @@ +@@ -34,7 +38,11 @@ namespace v8::internal { // Define {v8_flags}, declared in flags.h. @@ -24,7 +24,7 @@ Index: deps/v8/src/flags/flags.cc // {v8_flags} needs to be aligned to a memory page, and the size needs to be a // multiple of a page size. This is required for memory-protection of the memory -@@ -899,6 +907,10 @@ void FlagList::FreezeFlags() { +@@ -789,6 +797,10 @@ void FlagList::FreezeFlags() { // Note that for string flags we only protect the pointer itself, but not the // string storage. TODO(12887): Fix this. base::OS::SetDataReadOnly(&v8_flags, sizeof(v8_flags)); diff --git a/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64-inl_h b/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64-inl_h deleted file mode 100644 index 6ef4a84b4ad..00000000000 --- a/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64-inl_h +++ /dev/null @@ -1,15 +0,0 @@ -Index: deps/v8/src/maglev/x64/maglev-assembler-x64-inl.h ---- deps/v8/src/maglev/x64/maglev-assembler-x64-inl.h.orig -+++ deps/v8/src/maglev/x64/maglev-assembler-x64-inl.h -@@ -181,7 +181,10 @@ void MaglevAssembler::PushReverse(T... vals) { - detail::PushAllHelper::PushReverse(this, vals...); - } - --inline void MaglevAssembler::BindJumpTarget(Label* label) { bind(label); } -+inline void MaglevAssembler::BindJumpTarget(Label* label) { -+ bind(label); -+ endbr64(); -+} - - inline void MaglevAssembler::BindBlock(BasicBlock* block) { - bind(block->label()); diff --git a/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64_cc b/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64_cc deleted file mode 100644 index 7bec8a43a0e..00000000000 --- a/lang/node/patches/patch-deps_v8_src_maglev_x64_maglev-assembler-x64_cc +++ /dev/null @@ -1,16 +0,0 @@ -Index: deps/v8/src/maglev/x64/maglev-assembler-x64.cc ---- deps/v8/src/maglev/x64/maglev-assembler-x64.cc.orig -+++ deps/v8/src/maglev/x64/maglev-assembler-x64.cc -@@ -631,10 +631,11 @@ void MaglevAssembler::TryTruncateDoubleToInt32(Registe - } - - void MaglevAssembler::Prologue(Graph* graph) { -+ CodeEntry(); - BailoutIfDeoptimized(rbx); - - if (graph->has_recursive_calls()) { -- bind(code_gen_state()->entry_label()); -+ BindJumpTarget(code_gen_state()->entry_label()); - } - - // Tiering support. diff --git a/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_cc b/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_cc deleted file mode 100644 index 676ea3eddb3..00000000000 --- a/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_cc +++ /dev/null @@ -1,32 +0,0 @@ -Index: deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc ---- deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc.orig -+++ deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc -@@ -110,6 +110,7 @@ RegExpMacroAssemblerX64::RegExpMacroAssemblerX64(Isola - backtrack_label_(), - exit_label_() { - DCHECK_EQ(0, registers_to_save % 2); -+ __ CodeEntry(); - __ jmp(&entry_label_); // We'll write the entry code when we know more. - __ bind(&start_label_); // And then continue from here. - } -@@ -170,7 +171,7 @@ void RegExpMacroAssemblerX64::Backtrack() { - // and jump to location. - Pop(rbx); - __ addq(rbx, code_object_pointer()); -- __ jmp(rbx); -+ __ jmp(rbx, /*notrack=*/true); - } - - -@@ -714,6 +715,11 @@ bool RegExpMacroAssemblerX64::CheckSpecialClassRanges( - // Match any character. - return true; - } -+} -+ -+void RegExpMacroAssemblerX64::BindJumpTarget(Label* label) { -+ Bind(label); -+ __ CodeEntry(); - } - - void RegExpMacroAssemblerX64::Fail() { diff --git a/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_h b/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_h deleted file mode 100644 index f74c997eaa0..00000000000 --- a/lang/node/patches/patch-deps_v8_src_regexp_x64_regexp-macro-assembler-x64_h +++ /dev/null @@ -1,11 +0,0 @@ -Index: deps/v8/src/regexp/x64/regexp-macro-assembler-x64.h ---- deps/v8/src/regexp/x64/regexp-macro-assembler-x64.h.orig -+++ deps/v8/src/regexp/x64/regexp-macro-assembler-x64.h -@@ -23,6 +23,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - void AdvanceRegister(int reg, int by) override; - void Backtrack() override; - void Bind(Label* label) override; -+ void BindJumpTarget(Label* label) override; - void CheckAtStart(int cp_offset, Label* on_at_start) override; - void CheckCharacter(uint32_t c, Label* on_equal) override; - void CheckCharacterAfterAnd(uint32_t c, uint32_t mask, diff --git a/lang/node/patches/patch-deps_v8_src_snapshot_embedded_platform-embedded-file-writer-generic_cc b/lang/node/patches/patch-deps_v8_src_snapshot_embedded_platform-embedded-file-writer-generic_cc index 0888b77e33f..878b9d7fbc8 100644 --- a/lang/node/patches/patch-deps_v8_src_snapshot_embedded_platform-embedded-file-writer-generic_cc +++ b/lang/node/patches/patch-deps_v8_src_snapshot_embedded_platform-embedded-file-writer-generic_cc @@ -3,7 +3,7 @@ Index: deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc +++ deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc @@ -9,6 +9,10 @@ - #include "src/objects/code.h" + #include "src/objects/instruction-stream.h" +#if V8_OS_OPENBSD +#include diff --git a/lang/node/patches/patch-deps_v8_src_trap-handler_h b/lang/node/patches/patch-deps_v8_src_trap-handler_h index fd51e5ab45c..18c6dfb5ccc 100644 --- a/lang/node/patches/patch-deps_v8_src_trap-handler_h +++ b/lang/node/patches/patch-deps_v8_src_trap-handler_h @@ -12,5 +12,5 @@ Index: deps/v8/src/trap-handler/trap-handler.h - V8_OS_FREEBSD) + V8_OS_FREEBSD || V8_OS_OPENBSD) #define V8_TRAP_HANDLER_SUPPORTED true - // Arm64 (non-simulator) on Mac. - #elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_ARM64 && V8_OS_DARWIN + // Arm64 (non-simulator) on Mac and Linux. + #elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_ARM64 && \ diff --git a/lang/node/patches/patch-deps_v8_src_trap-handler_handler-inside-posix_cc b/lang/node/patches/patch-deps_v8_src_trap-handler_handler-inside-posix_cc index b3ac3609d85..6400fc18674 100644 --- a/lang/node/patches/patch-deps_v8_src_trap-handler_handler-inside-posix_cc +++ b/lang/node/patches/patch-deps_v8_src_trap-handler_handler-inside-posix_cc @@ -1,7 +1,7 @@ Index: deps/v8/src/trap-handler/handler-inside-posix.cc --- deps/v8/src/trap-handler/handler-inside-posix.cc.orig +++ deps/v8/src/trap-handler/handler-inside-posix.cc -@@ -55,6 +55,8 @@ namespace trap_handler { +@@ -61,6 +61,8 @@ namespace trap_handler { #define CONTEXT_REG(reg, REG) &uc->uc_mcontext->__ss.__##reg #elif V8_OS_FREEBSD #define CONTEXT_REG(reg, REG) &uc->uc_mcontext.mc_##reg @@ -10,7 +10,7 @@ Index: deps/v8/src/trap-handler/handler-inside-posix.cc #else #error "Unsupported platform." #endif -@@ -64,8 +66,12 @@ bool IsKernelGeneratedSignal(siginfo_t* info) { +@@ -80,8 +82,12 @@ bool IsKernelGeneratedSignal(siginfo_t* info) { // si_code at its default of 0 for signals that don’t originate in hardware. // The other conditions are only relevant for Linux. return info->si_code > 0 && info->si_code != SI_USER && diff --git a/lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32_h b/lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32-inl_h similarity index 81% rename from lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32_h rename to lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32-inl_h index 4fec825570e..5c7e7cd5037 100644 --- a/lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32_h +++ b/lang/node/patches/patch-deps_v8_src_wasm_baseline_ia32_liftoff-assembler-ia32-inl_h @@ -1,7 +1,7 @@ -Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h ---- deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h.orig -+++ deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h -@@ -419,7 +419,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst +Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32-inl.h +--- deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32-inl.h.orig ++++ deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32-inl.h +@@ -510,7 +510,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst } void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr, @@ -10,7 +10,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LoadType type, uint32_t* protected_load_pc, bool /* is_load_mem */, bool /* i64_offset */, bool needs_shift) { -@@ -499,7 +499,7 @@ void LiftoffAssembler::Load(LiftoffRegister dst, Regis +@@ -587,7 +587,7 @@ void LiftoffAssembler::Load(LiftoffRegister dst, Regis } void LiftoffAssembler::Store(Register dst_addr, Register offset_reg, @@ -19,7 +19,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h StoreType type, LiftoffRegList pinned, uint32_t* protected_store_pc, bool /* is_store_mem */, bool /* i64_offset */) { -@@ -568,7 +568,7 @@ void LiftoffAssembler::Store(Register dst_addr, Regist +@@ -663,7 +663,7 @@ void LiftoffAssembler::Store(Register dst_addr, Regist } void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr, @@ -28,7 +28,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LoadType type, LiftoffRegList /* pinned */, bool /* i64_offset */) { if (type.value() != LoadType::kI64Load) { -@@ -588,7 +588,7 @@ void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, +@@ -681,7 +681,7 @@ void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, } void LiftoffAssembler::AtomicStore(Register dst_addr, Register offset_reg, @@ -36,8 +36,8 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h + uintptr_t offset_imm, LiftoffRegister src, StoreType type, LiftoffRegList pinned, bool /* i64_offset */) { - DCHECK_NE(offset_reg, no_reg); -@@ -929,7 +929,7 @@ inline void AtomicBinop64(LiftoffAssembler* lasm, Bino + DCHECK_LE(offset_imm, std::numeric_limits::max()); +@@ -1030,7 +1030,7 @@ inline void AtomicBinop64(LiftoffAssembler* lasm, Bino } // namespace liftoff void LiftoffAssembler::AtomicAdd(Register dst_addr, Register offset_reg, @@ -46,7 +46,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister result, StoreType type, bool /* i64_offset */) { if (type.value() == StoreType::kI64Store) { -@@ -943,7 +943,7 @@ void LiftoffAssembler::AtomicAdd(Register dst_addr, Re +@@ -1044,7 +1044,7 @@ void LiftoffAssembler::AtomicAdd(Register dst_addr, Re } void LiftoffAssembler::AtomicSub(Register dst_addr, Register offset_reg, @@ -55,7 +55,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister result, StoreType type, bool /* i64_offset */) { if (type.value() == StoreType::kI64Store) { -@@ -956,7 +956,7 @@ void LiftoffAssembler::AtomicSub(Register dst_addr, Re +@@ -1057,7 +1057,7 @@ void LiftoffAssembler::AtomicSub(Register dst_addr, Re } void LiftoffAssembler::AtomicAnd(Register dst_addr, Register offset_reg, @@ -64,7 +64,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister result, StoreType type, bool /* i64_offset */) { if (type.value() == StoreType::kI64Store) { -@@ -970,7 +970,7 @@ void LiftoffAssembler::AtomicAnd(Register dst_addr, Re +@@ -1071,7 +1071,7 @@ void LiftoffAssembler::AtomicAnd(Register dst_addr, Re } void LiftoffAssembler::AtomicOr(Register dst_addr, Register offset_reg, @@ -73,7 +73,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister result, StoreType type, bool /* i64_offset */) { if (type.value() == StoreType::kI64Store) { -@@ -984,7 +984,7 @@ void LiftoffAssembler::AtomicOr(Register dst_addr, Reg +@@ -1085,7 +1085,7 @@ void LiftoffAssembler::AtomicOr(Register dst_addr, Reg } void LiftoffAssembler::AtomicXor(Register dst_addr, Register offset_reg, @@ -82,7 +82,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister result, StoreType type, bool /* i64_offset */) { if (type.value() == StoreType::kI64Store) { -@@ -998,7 +998,7 @@ void LiftoffAssembler::AtomicXor(Register dst_addr, Re +@@ -1099,7 +1099,7 @@ void LiftoffAssembler::AtomicXor(Register dst_addr, Re } void LiftoffAssembler::AtomicExchange(Register dst_addr, Register offset_reg, @@ -91,7 +91,7 @@ Index: deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h LiftoffRegister value, LiftoffRegister result, StoreType type, bool /* i64_offset */) { -@@ -1013,7 +1013,7 @@ void LiftoffAssembler::AtomicExchange(Register dst_add +@@ -1114,7 +1114,7 @@ void LiftoffAssembler::AtomicExchange(Register dst_add } void LiftoffAssembler::AtomicCompareExchange( diff --git a/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_cc b/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_cc deleted file mode 100644 index d7822249468..00000000000 --- a/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_cc +++ /dev/null @@ -1,52 +0,0 @@ -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 -@@ -52,15 +52,21 @@ void JumpTableAssembler::InitializeJumpsToLazyCompileT - #if V8_TARGET_ARCH_X64 - void JumpTableAssembler::EmitLazyCompileJumpSlot(uint32_t func_index, - Address lazy_compile_target) { -+ intptr_t displacement = -+ static_cast(reinterpret_cast(lazy_compile_target) - -+ (pc_ + 9) - kNearJmpInstrSize); -+ if (!is_int32(displacement)) return; -+ CodeEntry(); // 4 bytes - // Use a push, because mov to an extended register takes 6 bytes. -- pushq_imm32(func_index); // 5 bytes -- EmitJumpSlot(lazy_compile_target); // 5 bytes -+ pushq_imm32(func_index); // 5 bytes -+ near_jmp(displacement, RelocInfo::NO_INFO); // 5 bytes - } - - bool JumpTableAssembler::EmitJumpSlot(Address target) { - intptr_t displacement = static_cast( -- reinterpret_cast(target) - pc_ - kNearJmpInstrSize); -+ reinterpret_cast(target) - (pc_ + 4) - kNearJmpInstrSize); - if (!is_int32(displacement)) return false; -+ CodeEntry(); - near_jmp(displacement, RelocInfo::NO_INFO); // 5 bytes - return true; - } -@@ -68,11 +74,12 @@ bool JumpTableAssembler::EmitJumpSlot(Address target) - void JumpTableAssembler::EmitFarJumpSlot(Address target) { - Label data; - int start_offset = pc_offset(); -+ CodeEntry(); // 4 bytes - jmp(Operand(&data)); // 6 bytes -- Nop(2); // 2 bytes -+ Nop(6); // 6 bytes - // The data must be properly aligned, so it can be patched atomically (see - // {PatchFarJumpSlot}). -- DCHECK_EQ(start_offset + kSystemPointerSize, pc_offset()); -+ DCHECK_EQ(start_offset + kFarJumpTableSlotOffset, pc_offset()); - USE(start_offset); - bind(&data); - dq(target); // 8 bytes -@@ -83,7 +90,7 @@ void JumpTableAssembler::PatchFarJumpSlot(Address slot - // The slot needs to be pointer-size aligned so we can atomically update it. - DCHECK(IsAligned(slot, kSystemPointerSize)); - // Offset of the target is at 8 bytes, see {EmitFarJumpSlot}. -- reinterpret_cast*>(slot + kSystemPointerSize) -+ reinterpret_cast*>(slot + kFarJumpTableSlotOffset) - ->store(target, std::memory_order_relaxed); - // The update is atomic because the address is properly aligned. - // Because of cache coherence, the data update will eventually be seen by all diff --git a/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_h b/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_h deleted file mode 100644 index b5f5cde40e2..00000000000 --- a/lang/node/patches/patch-deps_v8_src_wasm_jump-table-assembler_h +++ /dev/null @@ -1,17 +0,0 @@ -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 -@@ -185,9 +185,10 @@ class V8_EXPORT_PRIVATE JumpTableAssembler : public Ma - // boundaries. The jump table line size has been chosen to satisfy this. - #if V8_TARGET_ARCH_X64 - static constexpr int kJumpTableLineSize = 64; -- static constexpr int kJumpTableSlotSize = 5; -- static constexpr int kFarJumpTableSlotSize = 16; -- static constexpr int kLazyCompileTableSlotSize = 10; -+ static constexpr int kJumpTableSlotSize = 5 + 4; -+ static constexpr int kFarJumpTableSlotOffset = 2 * kSystemPointerSize; -+ static constexpr int kFarJumpTableSlotSize = 16 + 8; -+ static constexpr int kLazyCompileTableSlotSize = 10 + 4; - #elif V8_TARGET_ARCH_IA32 - static constexpr int kJumpTableLineSize = 64; - static constexpr int kJumpTableSlotSize = 5; diff --git a/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_config_h b/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_config_h new file mode 100644 index 00000000000..bf5f95ee6ac --- /dev/null +++ b/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_config_h @@ -0,0 +1,22 @@ +Index: deps/v8/third_party/abseil-cpp/absl/base/config.h +--- deps/v8/third_party/abseil-cpp/absl/base/config.h.orig ++++ deps/v8/third_party/abseil-cpp/absl/base/config.h +@@ -448,7 +448,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != + #ifdef ABSL_HAVE_SCHED_YIELD + #error ABSL_HAVE_SCHED_YIELD cannot be directly set + #elif defined(__linux__) || defined(__ros__) || defined(__native_client__) || \ +- defined(__VXWORKS__) ++ defined(__VXWORKS__) || defined(__OpenBSD__) + #define ABSL_HAVE_SCHED_YIELD 1 + #endif + +@@ -463,7 +463,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != + // platforms. + #ifdef ABSL_HAVE_SEMAPHORE_H + #error ABSL_HAVE_SEMAPHORE_H cannot be directly set +-#elif defined(__linux__) || defined(__ros__) || defined(__VXWORKS__) ++#elif defined(__linux__) || defined(__ros__) || defined(__VXWORKS__) || \ ++ defined(__OpenBSD__) + #define ABSL_HAVE_SEMAPHORE_H 1 + #endif + diff --git a/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_internal_sysinfo_cc b/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_internal_sysinfo_cc new file mode 100644 index 00000000000..40235a11d63 --- /dev/null +++ b/lang/node/patches/patch-deps_v8_third_party_abseil-cpp_absl_base_internal_sysinfo_cc @@ -0,0 +1,53 @@ +Index: deps/v8/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +--- deps/v8/third_party/abseil-cpp/absl/base/internal/sysinfo.cc.orig ++++ deps/v8/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +@@ -30,7 +30,7 @@ + #include + #endif + +-#if defined(__APPLE__) || defined(__FreeBSD__) ++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) + #include + #endif + +@@ -194,6 +194,7 @@ static double GetNominalCPUFrequency() { + + #else + ++#if !defined(__OpenBSD__) + // Helper function for reading a long from a file. Returns true if successful + // and the memory location pointed to by value is set to the value read. + static bool ReadLongFromFile(const char *file, long *value) { +@@ -226,6 +227,7 @@ static bool ReadLongFromFile(const char *file, long *v + } + return ret; + } ++#endif + + #if defined(ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY) + +@@ -325,9 +327,11 @@ static double GetNominalCPUFrequency() { + // a new mode (turbo mode). Essentially, those frequencies cannot + // always be relied upon. The same reasons apply to /proc/cpuinfo as + // well. ++#if !defined(__OpenBSD__) + if (ReadLongFromFile("/sys/devices/system/cpu/cpu0/tsc_freq_khz", &freq)) { + return freq * 1e3; // Value is kHz. + } ++#endif + + #if defined(ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY) + // On these platforms, the TSC frequency is the nominal CPU +@@ -346,10 +350,12 @@ static double GetNominalCPUFrequency() { + // If CPU scaling is in effect, we want to use the *maximum* + // frequency, not whatever CPU speed some random processor happens + // to be using now. ++#if !defined(__OpenBSD__) + if (ReadLongFromFile("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", + &freq)) { + return freq * 1e3; // Value is kHz. + } ++#endif + + return 1.0; + #endif // !ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY diff --git a/lang/node/patches/patch-include_node_common_gypi b/lang/node/patches/patch-include_node_common_gypi index 7ff6fec1365..a4acf9b4d8d 100644 --- a/lang/node/patches/patch-include_node_common_gypi +++ b/lang/node/patches/patch-include_node_common_gypi @@ -1,7 +1,7 @@ Index: include/node/common.gypi --- include/node/common.gypi.orig +++ include/node/common.gypi -@@ -188,7 +188,6 @@ +@@ -191,7 +191,6 @@ }], ], }, @@ -9,7 +9,15 @@ Index: include/node/common.gypi 'conditions': [ ['enable_lto=="true"', { 'cflags': ['<(lto)'], -@@ -489,7 +488,7 @@ +@@ -503,7 +502,6 @@ + 'standalone_static_library': 1, + }], + ['OS=="openbsd"', { +- 'cflags': [ '-I/usr/local/include' ], + 'ldflags': [ '-Wl,-z,wxneeded' ], + }], + ['_toolset=="host"', { +@@ -521,7 +519,7 @@ 'ldflags': [ '-m32' ], }], [ 'host_arch=="ppc64" and OS not in "aix os400"', { @@ -18,7 +26,7 @@ Index: include/node/common.gypi 'ldflags': [ '-m64' ], }], [ 'host_arch=="s390x" and OS=="linux"', { -@@ -513,7 +512,7 @@ +@@ -545,7 +543,7 @@ 'ldflags': [ '-m32' ], }], [ 'target_arch=="ppc64" and OS not in "aix os400"', { diff --git a/lang/node/patches/patch-lib_internal_modules_cjs_loader_js b/lang/node/patches/patch-lib_internal_modules_cjs_loader_js index 05da2417abf..6bc86bd7179 100644 --- a/lang/node/patches/patch-lib_internal_modules_cjs_loader_js +++ b/lang/node/patches/patch-lib_internal_modules_cjs_loader_js @@ -1,7 +1,7 @@ Index: lib/internal/modules/cjs/loader.js --- lib/internal/modules/cjs/loader.js.orig +++ lib/internal/modules/cjs/loader.js -@@ -1650,7 +1650,10 @@ Module._initPaths = function() { +@@ -1779,7 +1779,10 @@ Module._initPaths = function() { path.resolve(process.execPath, '..') : path.resolve(process.execPath, '..', '..'); diff --git a/lang/node/patches/patch-lib_net_js b/lang/node/patches/patch-lib_net_js index 8ba0fe6e0ea..f52f73e0efe 100644 --- a/lang/node/patches/patch-lib_net_js +++ b/lang/node/patches/patch-lib_net_js @@ -13,7 +13,7 @@ for "any address" but that's not really a straightforward change). Index: lib/net.js --- lib/net.js.orig +++ lib/net.js -@@ -1861,22 +1861,12 @@ function setupListenHandle(address, port, addressType, +@@ -1864,22 +1864,12 @@ function setupListenHandle(address, port, addressType, let rval = null; diff --git a/lang/node/patches/patch-node_gyp b/lang/node/patches/patch-node_gyp deleted file mode 100644 index 66db294931c..00000000000 --- a/lang/node/patches/patch-node_gyp +++ /dev/null @@ -1,37 +0,0 @@ -Disable build of googletest to avoid build-time conflict with -devel/gtest if installed. - -Index: node.gyp ---- node.gyp.orig -+++ node.gyp -@@ -831,7 +831,7 @@ - ], - 'dependencies': [ - 'deps/base64/base64.gyp:base64', -- 'deps/googletest/googletest.gyp:gtest_prod', -+ # 'deps/googletest/googletest.gyp:gtest_prod', - 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', - 'deps/simdutf/simdutf.gyp:simdutf', -@@ -1149,8 +1149,8 @@ - 'dependencies': [ - '<(node_lib_target_name)', - 'deps/base64/base64.gyp:base64', -- 'deps/googletest/googletest.gyp:gtest', -- 'deps/googletest/googletest.gyp:gtest_main', -+ #'deps/googletest/googletest.gyp:gtest', -+ #'deps/googletest/googletest.gyp:gtest_main', - 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', - 'deps/simdutf/simdutf.gyp:simdutf', -@@ -1197,6 +1197,10 @@ - }], - ['OS=="solaris"', { - 'ldflags': [ '-I<(SHARED_INTERMEDIATE_DIR)' ] -+ }], -+ # Skip cctest while building for OpenBSD -+ [ 'OS=="openbsd"', { -+ 'type': 'none', - }], - # Skip cctest while building shared lib node for Windows - [ 'OS=="win" and node_shared=="true"', { diff --git a/lang/node/patches/patch-src_env_cc b/lang/node/patches/patch-src_env_cc index 5a5b3a52df5..7eb7b1129e1 100644 --- a/lang/node/patches/patch-src_env_cc +++ b/lang/node/patches/patch-src_env_cc @@ -1,7 +1,7 @@ Index: src/env.cc --- src/env.cc.orig +++ src/env.cc -@@ -773,29 +773,7 @@ std::unique_ptr Environment::release +@@ -775,29 +775,7 @@ std::unique_ptr Environment::release } std::string Environment::GetExecPath(const std::vector& argv) { diff --git a/lang/node/patches/patch-tools_v8_gypfiles_features_gypi b/lang/node/patches/patch-tools_v8_gypfiles_features_gypi new file mode 100644 index 00000000000..891ab4f9a21 --- /dev/null +++ b/lang/node/patches/patch-tools_v8_gypfiles_features_gypi @@ -0,0 +1,25 @@ +Index: tools/v8_gypfiles/features.gypi +--- tools/v8_gypfiles/features.gypi.orig ++++ tools/v8_gypfiles/features.gypi +@@ -328,7 +328,10 @@ + + # Enable advanced BigInt algorithms, costing about 10-30 KiB binary size + # depending on platform. +- 'v8_advanced_bigint_algorithms%': 1 ++ 'v8_advanced_bigint_algorithms%': 1, ++ ++ # Enable CET/IBT ++ 'v8_enable_cet_ibt': 1 + }, + + 'target_defaults': { +@@ -540,6 +543,9 @@ + }], + ['v8_advanced_bigint_algorithms==1', { + 'defines': ['V8_ADVANCED_BIGINT_ALGORITHMS',], ++ }], ++ ['v8_enable_cet_ibt==1', { ++ 'defines': ['V8_ENABLE_CET_IBT',], + }], + ], # conditions + 'defines': [ diff --git a/lang/node/patches/patch-tools_v8_gypfiles_toolchain_gypi b/lang/node/patches/patch-tools_v8_gypfiles_toolchain_gypi index 8e7b29ae897..f2487f5a510 100644 --- a/lang/node/patches/patch-tools_v8_gypfiles_toolchain_gypi +++ b/lang/node/patches/patch-tools_v8_gypfiles_toolchain_gypi @@ -1,7 +1,16 @@ Index: tools/v8_gypfiles/toolchain.gypi --- tools/v8_gypfiles/toolchain.gypi.orig +++ tools/v8_gypfiles/toolchain.gypi -@@ -865,11 +865,9 @@ +@@ -675,7 +675,7 @@ + 'defines': [ '__C99FEATURES__=1' ], # isinf() etc. + }], + ['OS=="freebsd" or OS=="openbsd"', { +- 'cflags': [ '-I/usr/local/include' ], ++ 'cflags': [ '-idirafter /usr/local/include' ], + }], + ['OS=="netbsd"', { + 'cflags': [ '-I/usr/pkg/include' ], +@@ -863,11 +863,9 @@ # Don't use -O3 with sanitizers. ['asan==0 and msan==0 and lsan==0 \ and tsan==0 and ubsan==0 and ubsan_vptr==0', { diff --git a/lang/node/patches/patch-tools_v8_gypfiles_v8_gyp b/lang/node/patches/patch-tools_v8_gypfiles_v8_gyp index 6db0be6d9ce..881dad0216f 100644 --- a/lang/node/patches/patch-tools_v8_gypfiles_v8_gyp +++ b/lang/node/patches/patch-tools_v8_gypfiles_v8_gyp @@ -7,35 +7,35 @@ from "0.0" if llvm (clang) is detected. Index: tools/v8_gypfiles/v8.gyp --- tools/v8_gypfiles/v8.gyp.orig +++ tools/v8_gypfiles/v8.gyp -@@ -373,6 +373,9 @@ - 'v8_libplatform', - ] +@@ -281,6 +281,9 @@ + '<(icu_gyp_path):icuuc', + ], }], + ['v8_control_flow_integrity==1', { + 'sources': [ '<(V8_ROOT)/src/deoptimizer/deoptimizer-cfi-builtins.cc' ], + }], ], - 'sources': [ - '<(V8_ROOT)/src/init/setup-isolate-deserialize.cc', -@@ -605,7 +608,7 @@ + }, # v8_initializers_slow + { +@@ -684,7 +687,7 @@ }], ['v8_enable_webassembly==1', { 'conditions': [ - ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', { + ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd" or OS=="openbsd"', { 'sources': [ - '