chore: bump node to v20.11.0 (main) (#40941)

* chore: bump node in DEPS to v20.11.0

* module: bootstrap module loaders in shadow realm

https://github.com/nodejs/node/pull/48655

* src: add commit hash shorthand in zlib version

https://github.com/nodejs/node/pull/50158

* v8,tools: expose necessary V8 defines

https://github.com/nodejs/node/pull/50820

* esm: do not call getSource when format is commonjs

https://github.com/nodejs/node/pull/50465

* esm: fallback to readFileSync when source is nullish

https://github.com/nodejs/node/pull/50825

* vm: allow dynamic import with a referrer realm

https://github.com/nodejs/node/pull/50360

* test: skip test-diagnostics-channel-memory-leak.js

https://github.com/nodejs/node/pull/50327

* esm: do not call getSource when format is commonjs

https://github.com/nodejs/node/pull/50465

* lib: fix assert throwing different error messages in ESM and CJS

https://github.com/nodejs/node/pull/50634

* src: fix compatility with upcoming V8 12.1 APIs

https://github.com/nodejs/node/pull/50709

* deps: update base64 to 0.5.1

https://github.com/nodejs/node/pull/50629

* src: avoid silent coercion to signed/unsigned int

https://github.com/nodejs/node/pull/50663

* src: fix compatility with upcoming V8 12.1 APIs

https://github.com/nodejs/node/pull/50709

* chore: fix patch indices

* chore: update patches

* test: disable TLS cipher test

This can't be enabled owing to BoringSSL incompatibilities.

https://github.com/nodejs/node/pull/50186

* fix: check for Buffer and global definition in shadow realm

https://github.com/nodejs/node/pull/51239

* test: disable parallel/test-shadow-realm-custom-loader

Incompatible with our asar logic, resulting in the following failure:

> Failed to CompileAndCall electron script: electron/js2c/asar_bundle

* chore: remove deleted parallel/test-crypto-modp1-error test

* test: make test-node-output-v8-warning generic

https://github.com/nodejs/node/pull/50421

* chore: fixup ModuleWrap patch

* test: match wpt/streams/transferable/transform-stream-members.any.js to upstream

* fix: sandbox is not enabled on arm

* chore: disable v8 sandbox on ia32/arm

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
This commit is contained in:
electron-roller[bot] 2024-01-18 16:16:45 -05:00 коммит произвёл GitHub
Родитель 6ea7da4b90
Коммит f4ee3c1b2a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
43 изменённых файлов: 727 добавлений и 748 удалений

Просмотреть файл

@ -9,7 +9,7 @@ import("//pdf/features.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
import("//testing/test.gni")
import("//third_party/electron_node/node.gni")
import("//third_party/electron_node/electron_node.gni")
import("//third_party/ffmpeg/ffmpeg_options.gni")
import("//tools/generate_library_loader/generate_library_loader.gni")
import("//tools/grit/grit_rule.gni")
@ -414,8 +414,10 @@ action("electron_generate_node_defines") {
}
source_set("electron_lib") {
configs += [ "//v8:external_startup_data" ]
configs += [ "//third_party/electron_node:node_internals" ]
configs += [
"//v8:external_startup_data",
"//third_party/electron_node:node_internals",
]
public_configs = [
":branding",

2
DEPS
Просмотреть файл

@ -4,7 +4,7 @@ vars = {
'chromium_version':
'122.0.6236.2',
'node_version':
'v20.10.0',
'v20.11.0',
'nan_version':
'e14bdcd1f72d62bca1d541b66da43130384ec213',
'squirrel.mac_version':

Просмотреть файл

@ -6,13 +6,15 @@ Subject: build: allow electron to use exec_script
This is similar to the //build usecase so we're OK adding ourselves here
diff --git a/.gn b/.gn
index afe0b3e90fafb9413cc49198cf3ad5d66d433b54..a8d83d6c95ebda9a898a383a8a1581d75da09f2e 100644
index afe0b3e90fafb9413cc49198cf3ad5d66d433b54..6b83b22994998ba98895144ec81b4cdff1b0e0db 100644
--- a/.gn
+++ b/.gn
@@ -167,4 +167,6 @@ exec_script_whitelist =
@@ -167,4 +167,8 @@ exec_script_whitelist =
"//tools/grit/grit_rule.gni",
"//tools/gritsettings/BUILD.gn",
+
+ "//electron/BUILD.gn"
+ "//electron/BUILD.gn",
+ "//third_party/electron_node/deps/base64/BUILD.gn",
+ "//third_party/electron_node/deps/base64/unofficial.gni",
]

Просмотреть файл

@ -18,7 +18,6 @@ fix_serdes_test.patch
feat_add_knostartdebugsignalhandler_to_environment_to_prevent.patch
feat_add_uv_loop_interrupt_on_io_change_option_to_uv_loop_configure.patch
support_v8_sandboxed_pointers.patch
build_ensure_v8_pointer_compression_sandbox_is_enabled_on_64bit.patch
build_ensure_native_module_compilation_fails_if_not_using_a_new.patch
fix_expose_the_built-in_electron_module_via_the_esm_loader.patch
fix_expose_lookupandcompile_with_parameters.patch
@ -34,16 +33,16 @@ fix_do_not_resolve_electron_entrypoints.patch
ci_ensure_node_tests_set_electron_run_as_node.patch
fix_assert_module_in_the_renderer_process.patch
fix_add_trusted_space_and_trusted_lo_space_to_the_v8_heap.patch
src_adapt_to_v8_exception_api_change.patch
win_process_avoid_assert_after_spawning_store_app_4152.patch
chore_remove_use_of_deprecated_kmaxlength.patch
fix_avx_detection.patch
src_avoid_copying_string_in_fs_permission.patch
fix_missing_include_for_node_extern.patch
feat_optionally_prevent_calling_v8_enablewebassemblytraphandler.patch
build_only_create_cppgc_heap_on_non-32_bit_platforms.patch
src_fix_compatility_with_upcoming_v8_12_1_apis.patch
fix_-wshadow_error_in_uvwasi_c.patch
src_update_default_v8_platform_to_override_functions_with_location.patch
fix_capture_embedder_exceptions_before_entering_v8.patch
spec_add_iterator_to_global_intrinsics.patch
build_do_not_rely_on_gn_helpers_in_gn_build.patch
test_make_test-node-output-v8-warning_generic.patch
test_match_wpt_streams_transferable_transform-stream-members_any_js.patch
build_ensure_v8_pointer_compression_sandbox_is_enabled_on_64bit.patch

Просмотреть файл

@ -5,24 +5,38 @@ Subject: build: add GN build files
This adds GN build files for Node, so we don't have to build with GYP.
Note that there always GN files in upstream Node in 20/21 branches,
however those files were cherry-picked from main branch and do not
really in 20/21. We have to wait until 22 is released to be able to
build with upstream GN files.
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..24c122008e0fc009833cf9189ebf43883207c754
--- /dev/null
index 1ed186b597eece7c34cb69c8e1e20870555a040d..541e7d2b8ee05677b64a3ea39c1422560fd5df75 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -0,0 +1,402 @@
@@ -1,14 +1,404 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+import("//v8/gni/v8.gni")
+import("//electron/js2c_toolchain.gni")
+import("node.gni")
+
+import("electron_node.gni")
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+declare_args() {
+ # Enable the V8 inspector protocol for use with node.
+ node_enable_inspector = true
+
-import("unofficial.gni")
+ # Build node with SSL support.
+ # The variable is called "openssl" for parity with node's GYP build.
+ node_use_openssl = true
+
-node_gn_build("node") {
+ # Use the specified path to system CA (PEM format) in addition to
+ # the BoringSSL supplied CA store or compiled-in Mozilla CA copy.
+ node_openssl_system_ca_path = ""
@ -155,9 +169,12 @@ index 0000000000000000000000000000000000000000..24c122008e0fc009833cf9189ebf4388
+config("node_lib_config") {
+ include_dirs = [ "src" ]
+
+ # FIXME(deepak1556): include paths should be corrected,
+ # refer https://docs.google.com/presentation/d/1oxNHaVjA9Gn_rTzX6HIpJHP7nXRua_0URXxxJ3oYRq0/edit#slide=id.g71ecd450e_2_702
+ cflags = [ "-Wno-microsoft-include" ]
+ cflags = [
+ "-Wno-shadow",
+ # FIXME(deepak1556): include paths should be corrected,
+ # refer https://docs.google.com/presentation/d/1oxNHaVjA9Gn_rTzX6HIpJHP7nXRua_0URXxxJ3oYRq0/edit#slide=id.g71ecd450e_2_702
+ "-Wno-microsoft-include",
+ ]
+
+ configs = [ ":node_features" ]
+
@ -317,7 +334,6 @@ index 0000000000000000000000000000000000000000..24c122008e0fc009833cf9189ebf4388
+ "-Wno-unused-label",
+ "-Wno-unused-private-field",
+ "-Wno-unused-variable",
+ "-Wno-shadow",
+ ]
+
+ if (v8_enable_i18n_support) {
@ -412,172 +428,122 @@ index 0000000000000000000000000000000000000000..24c122008e0fc009833cf9189ebf4388
+ ]
+ cflags_cc += [ "-Wno-sign-compare" ]
+ }
+}
}
diff --git a/deps/ada/BUILD.gn b/deps/ada/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..1ce69e9deba1a9b191e8d95f4c82e0ec1f7b50ca
--- /dev/null
index e92ac3a3beac143dced2efb05304ed8ba832b067..1ce69e9deba1a9b191e8d95f4c82e0ec1f7b50ca 100644
--- a/deps/ada/BUILD.gn
+++ b/deps/ada/BUILD.gn
@@ -0,0 +1,12 @@
@@ -1,14 +1,12 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+import("//v8/gni/v8.gni")
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+config("ada_config") {
+ include_dirs = [ "." ]
+}
+
-import("unofficial.gni")
+static_library("ada") {
+ include_dirs = [ "." ]
+ sources = [ "ada.cpp" ]
+
-ada_gn_build("ada") {
+ public_configs = [ ":ada_config" ]
+}
diff --git a/deps/base64/BUILD.gn b/deps/base64/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..9b97aabe865e4cf12f6c3ccda196b372769a823b
--- /dev/null
+++ b/deps/base64/BUILD.gn
@@ -0,0 +1,135 @@
+config("base64_config") {
+ include_dirs = [
+ "base64/include",
+ "base64/lib",
+ ]
}
diff --git a/deps/base64/unofficial.gni b/deps/base64/unofficial.gni
index 269c62d976d6adea6d020568094e23e9b0a9dc7c..14ffff0b4badb7ad71f2b6df43ad2eb300fc55ed 100644
--- a/deps/base64/unofficial.gni
+++ b/deps/base64/unofficial.gni
@@ -18,6 +18,10 @@ template("base64_gn_build") {
}
}
+ # FIXME(zcbenz): ASM on win/x86 compiles perfectly in upstream Node, figure
+ # out why it does not work in Electron's build configs.
+ support_x86_asm = target_cpu == "x64" || (target_cpu == "x86" && !is_win)
+
+ defines = [ "BASE64_STATIC_DEFINE" ]
+}
+
+static_library("base64") {
+ defines = []
+ deps = [
+ ":base64_neon32",
+ ":base64_neon64",
+ ":base64_avx",
+ ":base64_avx2",
+ ":base64_sse41",
+ ":base64_sse42",
+ ":base64_ssse3",
+ ]
+
+ public_configs = [ ":base64_config" ]
+
+ cflags_c = [
+ "-Wno-implicit-fallthrough",
+ "-Wno-unused-but-set-variable",
+ "-Wno-shadow",
+ ]
+
+ sources = [
+ "base64/include/libbase64.h",
+ "base64/lib/arch/generic/codec.c",
+ "base64/lib/codec_choose.c",
+ "base64/lib/codecs.h",
+ "base64/lib/lib.c",
+ "base64/lib/tables/tables.c",
+ ]
+}
+
+source_set("base64_ssse3") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_SSSE3=1" ]
+
+ cflags = [ "-mssse3" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/ssse3/codec.c" ]
+}
+
+source_set("base64_sse41") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_SSE41=1" ]
+
+ cflags = [ "-msse4.1" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/sse41/codec.c" ]
+}
+
+
+source_set("base64_sse42") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [
+ "BASE64_STATIC_DEFINE",
+ "HAVE_SSE42=1",
+ ]
+
+ cflags = [ "-msse4.2" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/sse42/codec.c" ]
+}
+
+source_set("base64_avx") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_AVX=1" ]
+
+ cflags = [ "-mavx" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/avx/codec.c" ]
+}
+
+source_set("base64_avx2") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_AVX2=1" ]
+
+ cflags = [ "-mavx2" ]
+ cflags_c = [
+ "-Wno-implicit-fallthrough",
+ "-Wno-implicit-function-declaration",
+ ]
+ }
+
+ sources = [ "base64/lib/arch/avx2/codec.c" ]
+}
+
+source_set("base64_neon32") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "arm") {
+ defines = [ "HAVE_NEON32=1" ]
+
+ cflags = [ "-mfpu=neon" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/neon32/codec.c" ]
+}
+
+source_set("base64_neon64") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "arm64") {
+ defines = [ "HAVE_NEON64=1" ]
+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/neon64/codec.c" ]
+}
config("base64_internal_config") {
include_dirs = [ "base64/lib" ]
if (is_component_build) {
@@ -25,7 +29,7 @@ template("base64_gn_build") {
} else {
defines = []
}
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
defines += [
"HAVE_SSSE3=1",
"HAVE_SSE41=1",
@@ -75,7 +79,7 @@ template("base64_gn_build") {
source_set("base64_ssse3") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/ssse3/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [ "-mssse3" ]
}
@@ -85,7 +89,7 @@ template("base64_gn_build") {
source_set("base64_sse41") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/sse41/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [ "-msse4.1" ]
}
@@ -95,7 +99,7 @@ template("base64_gn_build") {
source_set("base64_sse42") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/sse42/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [ "-msse4.2" ]
}
@@ -105,7 +109,7 @@ template("base64_gn_build") {
source_set("base64_avx") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/avx/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [ "-mavx" ]
} else if (is_win) {
@@ -117,7 +121,7 @@ template("base64_gn_build") {
source_set("base64_avx2") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/avx2/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [ "-mavx2" ]
} else if (is_win) {
@@ -129,7 +133,7 @@ template("base64_gn_build") {
source_set("base64_avx512") {
configs += [ ":base64_internal_config" ]
sources = [ "base64/lib/arch/avx512/codec.c" ]
- if (target_cpu == "x86" || target_cpu == "x64") {
+ if (support_x86_asm) {
if (is_clang || !is_win) {
cflags_c = [
"-mavx512vl",
diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..fb1b3138cdb674205afa0ffe078270585843eca3
--- /dev/null
index ac19ac73ed1e24c61cb679f3851685b79cfc8b39..fb1b3138cdb674205afa0ffe078270585843eca3 100644
--- a/deps/cares/BUILD.gn
+++ b/deps/cares/BUILD.gn
@@ -0,0 +1,143 @@
@@ -1,14 +1,143 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("cares_config") {
+ include_dirs = [ "include", "src/lib" ]
+}
@ -692,7 +658,10 @@ index 0000000000000000000000000000000000000000..fb1b3138cdb674205afa0ffe07827058
+ "_GNU_SOURCE",
+ ]
+ }
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+ if (is_win) {
+ defines += [ "CARES_PULL_WS2TCPIP_H=1" ]
+ include_dirs += [ "config/win32" ]
@ -710,23 +679,29 @@ index 0000000000000000000000000000000000000000..fb1b3138cdb674205afa0ffe07827058
+ } else {
+ defines += [ "HAVE_CONFIG_H" ]
+ }
+
-import("unofficial.gni")
+ if (is_linux) {
+ include_dirs += [ "config/linux" ]
+ sources += [ "config/linux/ares_config.h" ]
+ }
+
-cares_gn_build("cares") {
+ if (is_mac) {
+ include_dirs += [ "config/darwin" ]
+ sources += [ "config/darwin/ares_config.h" ]
+ }
+}
}
diff --git a/deps/googletest/BUILD.gn b/deps/googletest/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..0daf8c006cef89e76d7eccec3e924bd2718021c9
--- /dev/null
index de13f3f653b5d53610f4611001c10dce332293c2..0daf8c006cef89e76d7eccec3e924bd2718021c9 100644
--- a/deps/googletest/BUILD.gn
+++ b/deps/googletest/BUILD.gn
@@ -0,0 +1,64 @@
@@ -1,14 +1,64 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("gtest_config") {
+ include_dirs = [ "include" ]
+ defines = [ "UNIT_TEST" ]
@ -739,13 +714,17 @@ index 0000000000000000000000000000000000000000..0daf8c006cef89e76d7eccec3e924bd2
+ ]
+
+ public_configs = [ ":gtest_config" ]
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+ cflags_cc = [
+ "-Wno-c++98-compat-extra-semi",
+ "-Wno-unused-const-variable",
+ "-Wno-unreachable-code-return",
+ ]
+
-import("unofficial.gni")
+ defines = [
+ "GTEST_HAS_POSIX_RE=0",
+ "GTEST_LANG_CXX11=1",
@ -786,20 +765,28 @@ index 0000000000000000000000000000000000000000..0daf8c006cef89e76d7eccec3e924bd2
+ "src/gtest.cc",
+ ]
+}
+
-googletest_gn_build("googletest") {
+static_library("gtest_main") {
+ deps = [ ":gtest" ]
+ sources = [ "src/gtest_main.cc" ]
+}
}
diff --git a/deps/histogram/BUILD.gn b/deps/histogram/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..02bc887db7c8545e1d8adc57f73f203eec2f2592
--- /dev/null
index e2f3ee37137a6b7d45cbe79f8b9ba7f693ffc4d3..85467b372f01cf602af45fa2f0d599acabfc2310 100644
--- a/deps/histogram/BUILD.gn
+++ b/deps/histogram/BUILD.gn
@@ -0,0 +1,19 @@
@@ -1,14 +1,19 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("histogram_config") {
+ include_dirs = [ "include" ]
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+ cflags = [
+ "-Wno-implicit-function-declaration",
+ "-Wno-incompatible-pointer-types",
@ -807,27 +794,39 @@ index 0000000000000000000000000000000000000000..02bc887db7c8545e1d8adc57f73f203e
+ "-Wno-atomic-alignment",
+ ]
+}
+
-import("unofficial.gni")
+static_library("histogram") {
+ public_configs = [ ":histogram_config" ]
+
-histogram_gn_build("histogram") {
+ sources = [
+ "src/hdr_histogram.c",
+ "src/hdr_histogram.h",
+ ]
+}
\ No newline at end of file
}
diff --git a/deps/llhttp/BUILD.gn b/deps/llhttp/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..fb000f8ee7647c375bc190d1729d67bb7770d109
--- /dev/null
index 64a2a4799d5530276f46aa1faa63ece063390ada..fb000f8ee7647c375bc190d1729d67bb7770d109 100644
--- a/deps/llhttp/BUILD.gn
+++ b/deps/llhttp/BUILD.gn
@@ -0,0 +1,15 @@
@@ -1,14 +1,15 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
-
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
-
-import("unofficial.gni")
+config("llhttp_config") {
+ include_dirs = [ "include" ]
+ cflags = [ "-Wno-unreachable-code" ]
+}
+
-llhttp_gn_build("llhttp") {
+static_library("llhttp") {
+ include_dirs = [ "include" ]
+ public_configs = [ ":llhttp_config" ]
@ -837,13 +836,21 @@ index 0000000000000000000000000000000000000000..fb000f8ee7647c375bc190d1729d67bb
+ "src/http.c",
+ "src/llhttp.c",
+ ]
+}
}
diff --git a/deps/nghttp2/BUILD.gn b/deps/nghttp2/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7d2ca477db2415f43ababa270d8aefa3124b2765
--- /dev/null
index 274352b0e2449f8db49d9a49c6b92a69f97e8363..7d2ca477db2415f43ababa270d8aefa3124b2765 100644
--- a/deps/nghttp2/BUILD.gn
+++ b/deps/nghttp2/BUILD.gn
@@ -0,0 +1,51 @@
@@ -1,14 +1,51 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
-
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+config("nghttp2_config") {
+ defines = [ "NGHTTP2_STATICLIB" ]
+ include_dirs = [ "lib/includes" ]
@ -857,7 +864,8 @@ index 0000000000000000000000000000000000000000..7d2ca477db2415f43ababa270d8aefa3
+ "HAVE_CONFIG_H",
+ ]
+ include_dirs = [ "lib/includes" ]
+
-import("unofficial.gni")
+ cflags_c = [
+ "-Wno-implicit-function-declaration",
+ "-Wno-implicit-fallthrough",
@ -865,7 +873,8 @@ index 0000000000000000000000000000000000000000..7d2ca477db2415f43ababa270d8aefa3
+ "-Wno-unreachable-code-return",
+ "-Wno-unused-but-set-variable",
+ ]
+
-nghttp2_gn_build("nghttp2") {
+ sources = [
+ "lib/nghttp2_buf.c",
+ "lib/nghttp2_callbacks.c",
@ -894,44 +903,81 @@ index 0000000000000000000000000000000000000000..7d2ca477db2415f43ababa270d8aefa3
+ "lib/nghttp2_version.c",
+ "lib/sfparse.c"
+ ]
+}
}
diff --git a/deps/simdjson/BUILD.gn b/deps/simdjson/BUILD.gn
index d0580ccf354d2000fb0075fd3bb4579f93477927..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/deps/simdjson/BUILD.gn
+++ b/deps/simdjson/BUILD.gn
@@ -1,14 +0,0 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
-
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
-
-import("unofficial.gni")
-
-simdjson_gn_build("simdjson") {
-}
diff --git a/deps/simdutf/BUILD.gn b/deps/simdutf/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..bfbd4e656db1a6c73048443f96f1d576a0df7519
--- /dev/null
index 119d49456911e99944294bd00b3f182a8f0e35b5..ce38c3633a228306622a7237067393d25332c59c 100644
--- a/deps/simdutf/BUILD.gn
+++ b/deps/simdutf/BUILD.gn
@@ -0,0 +1,20 @@
@@ -1,14 +1,21 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("simdutf_config") {
+ include_dirs = [ "." ]
+}
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+static_library("simdutf") {
+ include_dirs = [ "." ]
+ sources = [
+ "simdutf.cpp",
+ ]
+
-import("unofficial.gni")
+ public_configs = [ ":simdutf_config" ]
+
-simdutf_gn_build("simdutf") {
+ cflags_cc = [
+ "-Wno-ambiguous-reversed-operator",
+ "-Wno-c++98-compat-extra-semi",
+ "-Wno-unreachable-code",
+ "-Wno-unreachable-code-break",
+ "-Wno-unused-const-variable",
+ "-Wno-unused-function",
+ ]
+}
}
diff --git a/deps/uv/BUILD.gn b/deps/uv/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7518168141db7958550c7f5dc1ed17ccdbbe4a60
--- /dev/null
index 8e6ac27048b5965e20f35c7a63e469beb6fa5970..7518168141db7958550c7f5dc1ed17ccdbbe4a60 100644
--- a/deps/uv/BUILD.gn
+++ b/deps/uv/BUILD.gn
@@ -0,0 +1,194 @@
@@ -1,14 +1,194 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("libuv_config") {
+ include_dirs = [ "include" ]
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+ defines = []
+
-import("unofficial.gni")
+ if (is_linux) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
@ -1045,7 +1091,8 @@ index 0000000000000000000000000000000000000000..7518168141db7958550c7f5dc1ed17cc
+ "src/win/winsock.c",
+ "src/win/winsock.h",
+ ]
+
-uv_gn_build("uv") {
+ libs += [
+ "advapi32.lib",
+ "iphlpapi.lib",
@ -1120,13 +1167,17 @@ index 0000000000000000000000000000000000000000..7518168141db7958550c7f5dc1ed17cc
+ "src/unix/kqueue.c",
+ ]
+ }
+}
}
diff --git a/deps/uvwasi/BUILD.gn b/deps/uvwasi/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..d9fcf8dc972b1caa2b7a130b1144c685316035cd
--- /dev/null
index 4f8fb081df805a786e523e5f0ffbb0096fdeca99..d9fcf8dc972b1caa2b7a130b1144c685316035cd 100644
--- a/deps/uvwasi/BUILD.gn
+++ b/deps/uvwasi/BUILD.gn
@@ -0,0 +1,39 @@
@@ -1,14 +1,39 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+config("uvwasi_config") {
+ include_dirs = [ "include" ]
+}
@ -1146,14 +1197,19 @@ index 0000000000000000000000000000000000000000..d9fcf8dc972b1caa2b7a130b1144c685
+ }
+
+ deps = [ "../../deps/uv" ]
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+ public_configs = [ ":uvwasi_config" ]
+
-import("unofficial.gni")
+ cflags_c = []
+ if (!is_win) {
+ cflags_c += [ "-fvisibility=hidden" ]
+ }
+
-uvwasi_gn_build("uvwasi") {
+ sources = [
+ "src/clocks.c",
+ "src/fd_table.c",
@ -1165,13 +1221,23 @@ index 0000000000000000000000000000000000000000..d9fcf8dc972b1caa2b7a130b1144c685
+ "src/wasi_rights.c",
+ "src/wasi_serdes.c"
+ ]
}
diff --git a/electron_node.gni b/electron_node.gni
new file mode 100644
index 0000000000000000000000000000000000000000..af9cbada10203b387fb9732b346583b1c4349223
--- /dev/null
+++ b/electron_node.gni
@@ -0,0 +1,4 @@
+declare_args() {
+ # Allows embedders to override the NODE_MODULE_VERSION define
+ node_module_version = ""
+}
diff --git a/filenames.json b/filenames.json
new file mode 100644
index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf90892392d36
index 0000000000000000000000000000000000000000..4404338bb5d576b341cae3bf79c84334fb05654f
--- /dev/null
+++ b/filenames.json
@@ -0,0 +1,732 @@
@@ -0,0 +1,733 @@
+// This file is automatically generated by generate_gn_filenames_json.py
+// DO NOT EDIT
+{
@ -1389,6 +1455,7 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "lib/internal/blocklist.js",
+ "lib/internal/bootstrap/node.js",
+ "lib/internal/bootstrap/realm.js",
+ "lib/internal/bootstrap/shadow_realm.js",
+ "lib/internal/bootstrap/switches/does_not_own_process_state.js",
+ "lib/internal/bootstrap/switches/does_own_process_state.js",
+ "lib/internal/bootstrap/switches/is_main_thread.js",
@ -1492,6 +1559,7 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "lib/internal/modules/helpers.js",
+ "lib/internal/modules/package_json_reader.js",
+ "lib/internal/modules/run_main.js",
+ "lib/internal/navigator.js",
+ "lib/internal/net.js",
+ "lib/internal/options.js",
+ "lib/internal/per_context/domexception.js",
@ -1540,7 +1608,6 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "lib/internal/source_map/source_map_cache.js",
+ "lib/internal/stream_base_commons.js",
+ "lib/internal/streams/add-abort-signal.js",
+ "lib/internal/streams/buffer_list.js",
+ "lib/internal/streams/compose.js",
+ "lib/internal/streams/destroy.js",
+ "lib/internal/streams/duplex.js",
@ -1557,7 +1624,6 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "lib/internal/streams/transform.js",
+ "lib/internal/streams/utils.js",
+ "lib/internal/streams/writable.js",
+ "lib/internal/structured_clone.js",
+ "lib/internal/test/binding.js",
+ "lib/internal/test/transfer.js",
+ "lib/internal/test_runner/coverage.js",
@ -1566,6 +1632,7 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "lib/internal/test_runner/mock/mock_timers.js",
+ "lib/internal/test_runner/reporter/dot.js",
+ "lib/internal/test_runner/reporter/junit.js",
+ "lib/internal/test_runner/reporter/lcov.js",
+ "lib/internal/test_runner/reporter/spec.js",
+ "lib/internal/test_runner/reporter/tap.js",
+ "lib/internal/test_runner/reporter/v8-serializer.js",
@ -1904,26 +1971,24 @@ index 0000000000000000000000000000000000000000..cf88cae11d5fe0f4436688d41f4bf908
+ "deps/postject/postject-api.h"
+ ]
+}
diff --git a/node.gni b/node.gni
new file mode 100644
index 0000000000000000000000000000000000000000..af9cbada10203b387fb9732b346583b1c4349223
--- /dev/null
+++ b/node.gni
@@ -0,0 +1,4 @@
+declare_args() {
+ # Allows embedders to override the NODE_MODULE_VERSION define
+ node_module_version = ""
+}
diff --git a/src/inspector/BUILD.gn b/src/inspector/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..4ab828dcbf322a9e28674e48c4a6868bd1321be2
--- /dev/null
index 909fd14345fcd988c381e640280f4b33f2e0c351..cb0e4558436ab7a109cadf439d49413b0f569a5a 100644
--- a/src/inspector/BUILD.gn
+++ b/src/inspector/BUILD.gn
@@ -0,0 +1,200 @@
@@ -1,14 +1,203 @@
-##############################################################################
-# #
-# DO NOT EDIT THIS FILE! #
-# #
-##############################################################################
+import("//v8/gni/v8.gni")
+
-# This file is used by GN for building, which is NOT the build system used for
-# building official binaries.
-# Please modify the gyp files if you are making changes to build system.
+inspector_protocol_dir = "../../tools/inspector_protocol"
+
-import("unofficial.gni")
+_protocol_generated = [
+ "protocol/Forward.h",
+ "protocol/Protocol.cpp",
@ -1935,7 +2000,8 @@ index 0000000000000000000000000000000000000000..4ab828dcbf322a9e28674e48c4a6868b
+ "protocol/NodeRuntime.cpp",
+ "protocol/NodeRuntime.h",
+]
+
-inspector_gn_build("inspector") {
+# These are from node_protocol_config.json
+# These convoluted path hacks are to work around the fact that node.js is very
+# confused about what paths are in its includes, without changing node at all.
@ -1982,7 +2048,10 @@ index 0000000000000000000000000000000000000000..4ab828dcbf322a9e28674e48c4a6868b
+ "../../deps/simdutf",
+ "//third_party/icu:icuuc",
+ ]
+ configs += [ "../..:node_internal_config" ]
+ configs += [
+ "../..:node_internal_config",
+ "../..:node_lib_config",
+ ]
+ public_configs = [ ":inspector_config" ]
+}
+
@ -2119,12 +2188,12 @@ index 0000000000000000000000000000000000000000..4ab828dcbf322a9e28674e48c4a6868b
+ ]
+ script = "../../tools/compress_json.py"
+ args = rebase_path(inputs + outputs, root_build_dir)
+}
}
diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index 84815969b6d1faa7cc3ed177e04248d9cb074596..80b36dc1aefca4d5d4124d7f84b12b9762a8de2c 100644
index bafd8d4b8581f0aee6cb1f30b810c8dfc46c2ce9..453d874efff767a95ef25fad7005ac11717f0c67 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -738,6 +738,7 @@ void BuiltinLoader::RegisterExternalReferences(
@@ -739,6 +739,7 @@ void BuiltinLoader::RegisterExternalReferences(
registry->Register(GetNatives);
RegisterExternalReferencesForInternalizedBuiltinCode(registry);

Просмотреть файл

@ -0,0 +1,171 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Fri, 12 Jan 2024 08:46:57 +0900
Subject: build: do not rely on gn_helpers in GN build
Backport https://github.com/nodejs/node/pull/51439
diff --git a/deps/ngtcp2/unofficial.gni b/deps/ngtcp2/unofficial.gni
index a304cf4aded42d27a1656be36f2d9e1e2b1818c9..838f5d2402cfd6265f913fa1afa57c1c14ed6eca 100644
--- a/deps/ngtcp2/unofficial.gni
+++ b/deps/ngtcp2/unofficial.gni
@@ -7,7 +7,7 @@
# building official binaries.
# Please edit the gyp files if you are making changes to build system.
-import("//node/node.gni")
+import("../../node.gni")
# The actual configurations are put inside a template in unofficial.gni to
# prevent accidental edits from contributors.
diff --git a/tools/gypi_to_gn.py b/tools/gypi_to_gn.py
index 47182d8017bfc2e4c156d43a868eaa3df15ed3e2..8a094bd7cf844f880d20a9015e76eefe350af592 100755
--- a/tools/gypi_to_gn.py
+++ b/tools/gypi_to_gn.py
@@ -77,29 +77,119 @@ the input will be replaced with "bar":
from __future__ import absolute_import
from __future__ import print_function
from optparse import OptionParser
-import os
import sys
-# Look for standalone GN distribution.
-def FindGNPath():
- for i in os.environ['PATH'].split(os.pathsep):
- if i.rstrip(os.sep).endswith('gn'):
- return i
- return None
+# This function is copied from build/gn_helpers.py in Chromium.
+def ToGNString(value, pretty=False):
+ """Returns a stringified GN equivalent of a Python value.
+ Args:
+ value: The Python value to convert.
+ pretty: Whether to pretty print. If true, then non-empty lists are rendered
+ recursively with one item per line, with indents. Otherwise lists are
+ rendered without new line.
+ Returns:
+ The stringified GN equivalent to |value|.
-try:
- # May already be in the import path.
- import gn_helpers
-except ImportError:
- # Add src/build to import path.
- src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
- os.pardir, os.pardir))
- sys.path.append(os.path.join(src_dir, 'build'))
- if FindGNPath():
- sys.path.append(os.path.join(FindGNPath(), 'build'))
- import gn_helpers
+ Raises:
+ ValueError: |value| cannot be printed to GN.
+ """
+
+ # Emits all output tokens without intervening whitespaces.
+ def GenerateTokens(v, level):
+ if isinstance(v, str):
+ yield '"' + ''.join(TranslateToGnChars(v)) + '"'
+
+ elif isinstance(v, bool):
+ yield 'true' if v else 'false'
+
+ elif isinstance(v, int):
+ yield str(v)
+
+ elif isinstance(v, list):
+ yield '['
+ for i, item in enumerate(v):
+ if i > 0:
+ yield ','
+ for tok in GenerateTokens(item, level + 1):
+ yield tok
+ yield ']'
+
+ elif isinstance(v, dict):
+ if level > 0:
+ yield '{'
+ for key in sorted(v):
+ if not isinstance(key, str):
+ raise ValueError('Dictionary key is not a string.')
+ if not key or key[0].isdigit() or not key.replace('_', '').isalnum():
+ raise ValueError('Dictionary key is not a valid GN identifier.')
+ yield key # No quotations.
+ yield '='
+ for tok in GenerateTokens(v[key], level + 1):
+ yield tok
+ if level > 0:
+ yield '}'
+
+ else: # Not supporting float: Add only when needed.
+ raise ValueError('Unsupported type when printing to GN.')
+
+ can_start = lambda tok: tok and tok not in ',}]='
+ can_end = lambda tok: tok and tok not in ',{[='
+
+ # Adds whitespaces, trying to keep everything (except dicts) in 1 line.
+ def PlainGlue(gen):
+ prev_tok = None
+ for i, tok in enumerate(gen):
+ if i > 0:
+ if can_end(prev_tok) and can_start(tok):
+ yield '\n' # New dict item.
+ elif prev_tok == '[' and tok == ']':
+ yield ' ' # Special case for [].
+ elif tok != ',':
+ yield ' '
+ yield tok
+ prev_tok = tok
+
+ # Adds whitespaces so non-empty lists can span multiple lines, with indent.
+ def PrettyGlue(gen):
+ prev_tok = None
+ level = 0
+ for i, tok in enumerate(gen):
+ if i > 0:
+ if can_end(prev_tok) and can_start(tok):
+ yield '\n' + ' ' * level # New dict item.
+ elif tok == '=' or prev_tok in '=':
+ yield ' ' # Separator before and after '=', on same line.
+ if tok in ']}':
+ level -= 1
+ # Exclude '[]' and '{}' cases.
+ if int(prev_tok == '[') + int(tok == ']') == 1 or \
+ int(prev_tok == '{') + int(tok == '}') == 1:
+ yield '\n' + ' ' * level
+ yield tok
+ if tok in '[{':
+ level += 1
+ if tok == ',':
+ yield '\n' + ' ' * level
+ prev_tok = tok
+
+ token_gen = GenerateTokens(value, 0)
+ ret = ''.join((PrettyGlue if pretty else PlainGlue)(token_gen))
+ # Add terminating '\n' for dict |value| or multi-line output.
+ if isinstance(value, dict) or '\n' in ret:
+ return ret + '\n'
+ return ret
+
+
+def TranslateToGnChars(s):
+ for code in s.encode('utf-8'):
+ if code in (34, 36, 92): # For '"', '$', or '\\'.
+ yield '\\' + chr(code)
+ elif 32 <= code < 127:
+ yield chr(code)
+ else:
+ yield '$0x%02X' % code
def LoadPythonDictionary(path):
@@ -209,7 +299,7 @@ def main():
else:
gn_dict[gn_key] = data[key]
- print(gn_helpers.ToGNString(DeduplicateLists(gn_dict)))
+ print(ToGNString(DeduplicateLists(gn_dict)))
if __name__ == '__main__':
try:

Просмотреть файл

@ -7,27 +7,27 @@ Subject: build: ensure native module compilation fails if not using a new
This should not be upstreamed, it is a quality-of-life patch for downstream module builders.
diff --git a/common.gypi b/common.gypi
index b7f9e44f827e58ac3b9376ec291f42cceb2b28bb..24cc9efe32c083d0cecd1ae94514b5a2d24ca2d6 100644
index f52d4f805406c513904151be90e433948764b3ad..7b790060b03cceec62bfe4c1f12d396b9cf52e8c 100644
--- a/common.gypi
+++ b/common.gypi
@@ -79,6 +79,8 @@
# TODO(refack): make v8-perfetto happen
@@ -86,6 +86,8 @@
'v8_use_perfetto': 0,
'tsan%': 0,
+ 'using_electron_config_gypi%': 0,
+
##### end V8 defaults #####
# When building native modules using 'npm install' with the system npm,
@@ -282,6 +284,7 @@
'V8_DEPRECATION_WARNINGS',
'V8_IMMINENT_DEPRECATION_WARNINGS',
@@ -285,6 +287,7 @@
# Defines these mostly for node-gyp to pickup.
'defines': [
'_GLIBCXX_USE_CXX11_ABI=1',
+ 'ELECTRON_ENSURE_CONFIG_GYPI',
],
# Forcibly disable -Werror. We support a wide range of compilers, it's
@@ -388,6 +391,11 @@
@@ -391,6 +394,11 @@
}],
],
}],
@ -36,14 +36,14 @@ index b7f9e44f827e58ac3b9376ec291f42cceb2b28bb..24cc9efe32c083d0cecd1ae94514b5a2
+ 'USING_ELECTRON_CONFIG_GYPI',
+ ],
+ }],
['v8_enable_pointer_compression == 1', {
'defines': [
'V8_COMPRESS_POINTERS',
# The defines bellow must include all things from the external_v8_defines
# list in v8/BUILD.gn.
['v8_enable_v8_checks == 1', {
diff --git a/configure.py b/configure.py
index 7b80ec63a082ce93ba81ca6dd41ec03041534ff7..926659883d3bd6d447c89a50d6770988b59d6f88 100755
index 84b016cd853080656d4dcf982e64855fcfa72a55..f0cccff0eed2ef11275d2f7ec2358276f6e10458 100755
--- a/configure.py
+++ b/configure.py
@@ -1484,6 +1484,7 @@ def configure_library(lib, output, pkgname=None):
@@ -1489,6 +1489,7 @@ def configure_library(lib, output, pkgname=None):
def configure_v8(o):

Просмотреть файл

@ -1,55 +1,35 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samuel Attard <sattard@salesforce.com>
Date: Thu, 7 Jul 2022 14:42:49 -0700
Subject: build: ensure v8 pointer compression + sandbox is enabled on 64bit
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Wed, 17 Jan 2024 16:01:08 +0100
Subject: build: ensure v8_pointer_compression_sandbox is enabled on 64bit
Aligns common.gypi with the current build flag state of //v8.
The defines themselves were upstreamed in https://github.com/nodejs/node/pull/50820
but the ability to configure the variables themselves were not. This adds that back
in.
Specifically enables `V8_ENABLE_SANDBOX`, `V8_SANDBOXED_POINTERS`, `V8_COMPRESS_POINTERS` and `V8_COMPRESS_POINTERS_IN_SHARED_CAGE`.
This should be upstreamed.
diff --git a/common.gypi b/common.gypi
index 225b3df380caca809926d6af9fc1001057237752..b7f9e44f827e58ac3b9376ec291f42cceb2b28bb 100644
index 7b790060b03cceec62bfe4c1f12d396b9cf52e8c..ef8c7a0477aa9c92439846699e739eae4340b88c 100644
--- a/common.gypi
+++ b/common.gypi
@@ -65,6 +65,7 @@
# node-gyp to build addons.
'v8_enable_pointer_compression%': 0,
'v8_enable_31bit_smis_on_64bit_arch%': 0,
+ 'v8_enable_sandbox%': 0,
# Disable v8 hugepage by default.
'v8_enable_hugepage%': 0,
@@ -123,6 +124,7 @@
@@ -133,6 +133,7 @@
['target_arch in "arm ia32 mips mipsel ppc"', {
'v8_enable_pointer_compression': 0,
'v8_enable_31bit_smis_on_64bit_arch': 0,
+ 'v8_enable_sandbox': 0,
+ 'v8_enable_sandbox': 0
}],
['target_arch in "ppc64 s390x"', {
'v8_enable_backtrace': 1,
@@ -389,9 +391,12 @@
['v8_enable_pointer_compression == 1', {
'defines': [
'V8_COMPRESS_POINTERS',
- 'V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE',
+ 'V8_COMPRESS_POINTERS_IN_SHARED_CAGE',
],
}],
+ ['v8_enable_sandbox == 1', {
+ 'defines': ['V8_ENABLE_SANDBOX']
+ }],
['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', {
'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'],
}],
diff --git a/configure.py b/configure.py
index 62f041ce52bf85136175e733216671e2811a337b..7b80ec63a082ce93ba81ca6dd41ec03041534ff7 100755
index f0cccff0eed2ef11275d2f7ec2358276f6e10458..87b647ab363219add8201966a64b539215bdee03 100755
--- a/configure.py
+++ b/configure.py
@@ -1497,6 +1497,7 @@ def configure_v8(o):
@@ -1503,6 +1503,7 @@ def configure_v8(o):
o['variables']['v8_use_siphash'] = 0 if options.without_siphash else 1
o['variables']['v8_enable_maglev'] = 1 if options.v8_enable_maglev else 0
o['variables']['v8_enable_pointer_compression'] = 1 if options.enable_pointer_compression else 0
o['variables']['v8_enable_31bit_smis_on_64bit_arch'] = 1 if options.enable_pointer_compression else 0
+ o['variables']['v8_enable_sandbox'] = 1 if options.enable_pointer_compression else 0
o['variables']['v8_enable_31bit_smis_on_64bit_arch'] = 1 if options.enable_pointer_compression else 0
o['variables']['v8_enable_shared_ro_heap'] = 0 if options.enable_pointer_compression or options.disable_shared_ro_heap else 1
o['variables']['v8_trace_maps'] = 1 if options.trace_maps else 0
o['variables']['node_use_v8_platform'] = b(not options.without_v8_platform)
o['variables']['v8_enable_extensible_ro_snapshot'] = 0

Просмотреть файл

@ -34,7 +34,7 @@ index 99212fa713bf3f767d4604906e41d9b279447239..4e32a274a63c8244ce3168d0c5cc5620
let kResistStopPropagation;
diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index 80b36dc1aefca4d5d4124d7f84b12b9762a8de2c..f3cda64beaa1403cb33f1b0bd8089f3dfcbfc8b9 100644
index 453d874efff767a95ef25fad7005ac11717f0c67..bcef04f980d1b1f010c5349ecbfca8080f39b308 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -35,6 +35,7 @@ using v8::Value;

Просмотреть файл

@ -18,10 +18,10 @@ See https://gist.github.com/codebytere/275ec8923253fd6559b3d36115f7b31b for more
This should be fixed and re-enabled on all platforms.
diff --git a/BUILD.gn b/BUILD.gn
index 24c122008e0fc009833cf9189ebf43883207c754..1f0263b06969e099a5b3aaf09d36a66c43dd80fc 100644
index 541e7d2b8ee05677b64a3ea39c1422560fd5df75..8d63fea3304b36654992fe718ceeb3931ef86d39 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -178,6 +178,10 @@ config("node_internal_config") {
@@ -181,6 +181,10 @@ config("node_internal_config") {
}
defines += [ "NODE_ARCH=\"$node_arch\"" ]
@ -33,10 +33,10 @@ index 24c122008e0fc009833cf9189ebf43883207c754..1f0263b06969e099a5b3aaf09d36a66c
node_platform = "win32"
} else if (target_os == "mac") {
diff --git a/src/env.cc b/src/env.cc
index 1d8df40c3446ac9c72c5f0ad24edf0b8a96cf16b..25b81dee18aeeb1bd0452ba0b66085d451723709 100644
index a429d5526d0af66eef94132b196e42994e3f6448..ba575a04340b91709fb6c8710ab160a4ca1f8b77 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -542,7 +542,8 @@ IsolateData::IsolateData(Isolate* isolate,
@@ -546,7 +546,8 @@ IsolateData::IsolateData(Isolate* isolate,
// for embedder ID, V8 could accidentally enable cppgc on them. So
// safe guard against this.
DCHECK_NE(descriptor.wrappable_type_index, BaseObject::kSlot);
@ -46,7 +46,7 @@ index 1d8df40c3446ac9c72c5f0ad24edf0b8a96cf16b..25b81dee18aeeb1bd0452ba0b66085d4
cpp_heap_ = CppHeap::Create(
platform,
CppHeapCreateParams{
@@ -550,6 +551,7 @@ IsolateData::IsolateData(Isolate* isolate,
@@ -554,6 +555,7 @@ IsolateData::IsolateData(Isolate* isolate,
WrapperDescriptor(
BaseObject::kEmbedderType, BaseObject::kSlot, cppgc_id)});
isolate->AttachCppHeap(cpp_heap_.get());

Просмотреть файл

@ -8,7 +8,7 @@ they use themselves as the entry point. We should try to upstream some form
of this.
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index ea3b411a78495d0414b1956503b86cbd5f0ed765..ad4946a6d121d38f413878a3dcc360012d568ef6 100644
index 1f3b719048f2477de183e2856b9b8eee8502f708..21116088c101f4679b5a5f41762ce710368e69ed 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -1351,6 +1351,13 @@ Module.prototype._compile = function(content, filename) {
@ -26,10 +26,10 @@ index ea3b411a78495d0414b1956503b86cbd5f0ed765..ad4946a6d121d38f413878a3dcc36001
try {
resolvedArgv = Module._resolveFilename(process.argv[1], null, false);
diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
index 66dfd7c1e521f38691e4656ac7ab0572a2fe75da..5db54daaa9e7066561d1621f2f0a01032ca7ff22 100644
index fc8f61ee6d30cf18951ec7a5eb5f09a9583a85ae..61858f6bdcdbc231d7e2327e42732ad928d47ac7 100644
--- a/lib/internal/process/pre_execution.js
+++ b/lib/internal/process/pre_execution.js
@@ -218,12 +218,14 @@ function patchProcessObject(expandArgv1) {
@@ -238,12 +238,14 @@ function patchProcessObject(expandArgv1) {
if (expandArgv1 && process.argv[1] &&
!StringPrototypeStartsWith(process.argv[1], '-')) {
// Expand process.argv[1] into a full path.

Просмотреть файл

@ -11,10 +11,10 @@ its own blended handler between Node and Blink.
Not upstreamable.
diff --git a/lib/internal/modules/esm/utils.js b/lib/internal/modules/esm/utils.js
index 41077285452eac05766a22c2e1d252868e7e548b..2246e57efcf0b95903644d643ad5572717ecdaf4 100644
index 003ae7eb987f03611444f02695bc8582e0ac6a67..bbf1df480bc6ec90ee3ac29312dc89ff8bf94ab3 100644
--- a/lib/internal/modules/esm/utils.js
+++ b/lib/internal/modules/esm/utils.js
@@ -22,7 +22,7 @@ const {
@@ -23,7 +23,7 @@ const {
ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING,
ERR_INVALID_ARG_VALUE,
} = require('internal/errors').codes;
@ -23,14 +23,14 @@ index 41077285452eac05766a22c2e1d252868e7e548b..2246e57efcf0b95903644d643ad55727
const {
loadPreloadModules,
initializeFrozenIntrinsics,
@@ -190,12 +190,13 @@ let _isLoaderWorker = false;
* @param {boolean} [isLoaderWorker=false] - A boolean indicating whether the loader is a worker or not.
@@ -221,12 +221,13 @@ let _forceDefaultLoader = false;
* @param {boolean} [forceDefaultLoader=false] - A boolean indicating disabling custom loaders.
*/
function initializeESM(isLoaderWorker = false) {
function initializeESM(forceDefaultLoader = false) {
+ const shouldSetOnIsolate = !getEmbedderOptions().shouldNotRegisterESMLoader;
_isLoaderWorker = isLoaderWorker;
_forceDefaultLoader = forceDefaultLoader;
initializeDefaultConditions();
// Setup per-isolate callbacks that locate data or callbacks that we keep
// Setup per-realm callbacks that locate data or callbacks that we keep
// track of for different ESM modules.
- setInitializeImportMetaObjectCallback(initializeImportMetaObject);
- setImportModuleDynamicallyCallback(importModuleDynamicallyCallback);
@ -40,10 +40,10 @@ index 41077285452eac05766a22c2e1d252868e7e548b..2246e57efcf0b95903644d643ad55727
/**
diff --git a/src/module_wrap.cc b/src/module_wrap.cc
index 52c30dcb47d1faba0c2267e4381a624e450baa02..ba4c1a0d5a987e4d410b49f5c47166943bd101a6 100644
index 895ff3a5948add3513700ecc2f32fce4c2fbe4eb..3182a5e4aad2ba0be2b6769edb696b815ce39a61 100644
--- a/src/module_wrap.cc
+++ b/src/module_wrap.cc
@@ -547,7 +547,7 @@ MaybeLocal<Module> ModuleWrap::ResolveModuleCallback(
@@ -554,7 +554,7 @@ MaybeLocal<Module> ModuleWrap::ResolveModuleCallback(
return module->module_.Get(isolate);
}
@ -52,15 +52,15 @@ index 52c30dcb47d1faba0c2267e4381a624e450baa02..ba4c1a0d5a987e4d410b49f5c4716694
Local<Context> context,
Local<v8::Data> host_defined_options,
Local<Value> resource_name,
@@ -608,12 +608,13 @@ void ModuleWrap::SetImportModuleDynamicallyCallback(
Environment* env = Environment::GetCurrent(args);
@@ -618,12 +618,13 @@ void ModuleWrap::SetImportModuleDynamicallyCallback(
Realm* realm = Realm::GetCurrent(args);
HandleScope handle_scope(isolate);
- CHECK_EQ(args.Length(), 1);
+ CHECK_EQ(args.Length(), 2);
CHECK(args[0]->IsFunction());
Local<Function> import_callback = args[0].As<Function>();
env->set_host_import_module_dynamically_callback(import_callback);
realm->set_host_import_module_dynamically_callback(import_callback);
- isolate->SetHostImportModuleDynamicallyCallback(ImportModuleDynamically);
+ if (args[1]->IsBoolean() && args[1]->BooleanValue(isolate))
@ -68,15 +68,15 @@ index 52c30dcb47d1faba0c2267e4381a624e450baa02..ba4c1a0d5a987e4d410b49f5c4716694
}
void ModuleWrap::HostInitializeImportMetaObjectCallback(
@@ -650,13 +651,14 @@ void ModuleWrap::SetInitializeImportMetaObjectCallback(
Environment* env = Environment::GetCurrent(args);
Isolate* isolate = env->isolate();
@@ -665,13 +666,14 @@ void ModuleWrap::SetInitializeImportMetaObjectCallback(
Realm* realm = Realm::GetCurrent(args);
Isolate* isolate = realm->isolate();
- CHECK_EQ(args.Length(), 1);
+ CHECK_EQ(args.Length(), 2);
CHECK(args[0]->IsFunction());
Local<Function> import_meta_callback = args[0].As<Function>();
env->set_host_initialize_import_meta_object_callback(import_meta_callback);
realm->set_host_initialize_import_meta_object_callback(import_meta_callback);
- isolate->SetHostInitializeImportMetaObjectCallback(
- HostInitializeImportMetaObjectCallback);
@ -87,10 +87,10 @@ index 52c30dcb47d1faba0c2267e4381a624e450baa02..ba4c1a0d5a987e4d410b49f5c4716694
MaybeLocal<Value> ModuleWrap::SyntheticModuleEvaluationStepsCallback(
diff --git a/src/module_wrap.h b/src/module_wrap.h
index 1fc801edced9c5e44613846b4dc555804c5bae97..767d183c6b6b6d97726cf5d63c0b202bd9ae10a6 100644
index e17048357feca2419087621ed280de30882a90bc..061117dc3182d63e35d7e99ffd95801f96356322 100644
--- a/src/module_wrap.h
+++ b/src/module_wrap.h
@@ -30,7 +30,14 @@ enum HostDefinedOptions : int {
@@ -31,7 +31,14 @@ enum HostDefinedOptions : int {
kLength = 9,
};
@ -106,16 +106,16 @@ index 1fc801edced9c5e44613846b4dc555804c5bae97..767d183c6b6b6d97726cf5d63c0b202b
public:
enum InternalFields {
kModuleSlot = BaseObject::kInternalFieldCount,
@@ -65,6 +72,8 @@ class ModuleWrap : public BaseObject {
@@ -68,6 +75,8 @@ class ModuleWrap : public BaseObject {
return true;
}
+ static ModuleWrap* GetFromModule(node::Environment*, v8::Local<v8::Module>);
+
private:
ModuleWrap(Environment* env,
ModuleWrap(Realm* realm,
v8::Local<v8::Object> object,
@@ -99,7 +108,6 @@ class ModuleWrap : public BaseObject {
@@ -102,7 +111,6 @@ class ModuleWrap : public BaseObject {
v8::Local<v8::String> specifier,
v8::Local<v8::FixedArray> import_attributes,
v8::Local<v8::Module> referrer);

Просмотреть файл

@ -9,7 +9,7 @@ This patch can be removed when Node.js upgrades to a version of V8 containing
the above CL.
diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml
index 942d7cc1305eb4cf327de5666551435802f0dbac..991c65215488b9526758b9aca96842ad17fc018e 100644
index fbaf641789e8dc2b1ba991ad7ee755271e756ee1..53bc3ce5e144f5988a9164c41e6bbc6cc44582d2 100644
--- a/lib/.eslintrc.yaml
+++ b/lib/.eslintrc.yaml
@@ -33,10 +33,6 @@ rules:
@ -24,7 +24,7 @@ index 942d7cc1305eb4cf327de5666551435802f0dbac..991c65215488b9526758b9aca96842ad
message: Use `const { Blob } = require('buffer');` instead of the global.
- name: BroadcastChannel
diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js
index 12ae4a9b23212d3f8ff1566a1c2b815a47d3838a..4460042d7bfbb8286a9b2abcbfb9e44f21b5d944 100644
index 56697c3b2c2209ff58b8fefbccec03c7e3d9f9a0..4eb7230edcd0fb3d21e80218f6a912eb308fc89d 100644
--- a/lib/internal/main/worker_thread.js
+++ b/lib/internal/main/worker_thread.js
@@ -112,7 +112,7 @@ port.on('message', (message) => {

Просмотреть файл

@ -21,10 +21,10 @@ index 606a6f5caa3b11b6d2a9068ed2fd65800530a5eb..080dcce21da05ccea398d8a856deb397
typedef void (*FreeCallback)(char* data, void* hint);
diff --git a/src/node_errors.h b/src/node_errors.h
index 569dafe82df83db02d93b0e58231ef804eb54be8..c6b8c3b5b36ea25a31bdf3c6a48ef20f3c1b6577 100644
index 8591faab8eaf6f0e6c745e2a6e9f60a468c3efcc..32efaf5148bd6620210c58a95ef3c53bc57a4ea1 100644
--- a/src/node_errors.h
+++ b/src/node_errors.h
@@ -218,7 +218,7 @@ inline v8::Local<v8::Value> ERR_BUFFER_TOO_LARGE(v8::Isolate* isolate) {
@@ -222,7 +222,7 @@ inline v8::Local<v8::Value> ERR_BUFFER_TOO_LARGE(v8::Isolate* isolate) {
char message[128];
snprintf(message, sizeof(message),
"Cannot create a Buffer larger than 0x%zx bytes",

Просмотреть файл

@ -24,10 +24,10 @@ index 97257d47c6173872e55facf6f92801bd2fc3564b..8cdee730101fbdc79415654aa6fe4015
Environment* env = Environment::GetCurrent(args);
diff --git a/src/node_binding.h b/src/node_binding.h
index 9f0692ca4e190bde251d4825aa9abac3d66b6ac6..f4024a05901f72f85e097a8ab6ddbd5812e9ba16 100644
index 7256bf2bbcf73214a25e61156305cc212b6f2451..d129981ad8588376eeee61155964062f624695d6 100644
--- a/src/node_binding.h
+++ b/src/node_binding.h
@@ -134,6 +134,8 @@ void GetInternalBinding(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -137,6 +137,8 @@ void GetInternalBinding(const v8::FunctionCallbackInfo<v8::Value>& args);
void GetLinkedBinding(const v8::FunctionCallbackInfo<v8::Value>& args);
void DLOpen(const v8::FunctionCallbackInfo<v8::Value>& args);

Просмотреть файл

@ -7,7 +7,7 @@ Subject: feat: add kNoStartDebugSignalHandler to Environment to prevent
This patch should be upstreamed, it allows embedders to prevent the call to StartDebugSignalHandler which handles SIGUSR1 and starts the inspector agent. Apps that have --inspect disabled also don't want SIGUSR1 to have this affect.
diff --git a/src/env-inl.h b/src/env-inl.h
index 793dc72e0dbad819a1c3a51521b4a39b76c7015d..222c78ef0cb9904742fd44f8182278ab1f50cd59 100644
index d5124e73e7c4c6b631ccfedf407e02bc444b428f..564de2990c09a54693686666f9ad66398ff76ab5 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -677,6 +677,10 @@ inline bool Environment::no_global_search_paths() const {
@ -22,7 +22,7 @@ index 793dc72e0dbad819a1c3a51521b4a39b76c7015d..222c78ef0cb9904742fd44f8182278ab
// configure --no-browser-globals
#ifdef NODE_NO_BROWSER_GLOBALS
diff --git a/src/env.h b/src/env.h
index afe67d2237ae6933de44dd1141cf388e9a48cee3..87df6e1f32e584aa0c6ae21856299fff31d67669 100644
index 1047f1d794da2a3a035df5eaab1c809a7fca3d23..448075e354c760a2dbd1dd763f40b7a645730250 100644
--- a/src/env.h
+++ b/src/env.h
@@ -787,6 +787,7 @@ class Environment : public MemoryRetainer {

Просмотреть файл

@ -6,20 +6,19 @@ Subject: feat: initialize asar support
This patch initializes asar support in Node.js.
diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
index 917ba90a1c8bbbff5d86e5f2079d1ce67237280e..66dfd7c1e521f38691e4656ac7ab0572a2fe75da 100644
index 9142fed75e9050fcc17c01208e82f1bc57923fcd..fc8f61ee6d30cf18951ec7a5eb5f09a9583a85ae 100644
--- a/lib/internal/process/pre_execution.js
+++ b/lib/internal/process/pre_execution.js
@@ -67,6 +67,8 @@ function prepareWorkerThreadExecution() {
@@ -87,6 +87,7 @@ function prepareShadowRealmExecution() {
});
}
+
+let processLinkedBinding = process._linkedBinding;
function prepareExecution(options) {
const { expandArgv1, initializeModules, isMainThread } = options;
@@ -172,12 +174,17 @@ function setupUserModules(isLoaderWorker = false) {
loadPreloadModules();
@@ -193,12 +194,17 @@ function setupUserModules(forceDefaultLoader = false) {
}
// Need to be done after --require setup.
initializeFrozenIntrinsics();
+ setupAsarSupport();

Просмотреть файл

@ -10,7 +10,7 @@ already been called.
This should be upstreamed.
diff --git a/src/node.cc b/src/node.cc
index a9336a14304fc673c02ae5b7e5ca82aec9fa6697..7a6a9cdddf00c91612c2bcabf40a5c4af16424df 100644
index 524f80ee69ee5248e045a2b61faf5610c9ba4285..971668792eabe5be299849b5a3fd8a2790a2210a 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -605,6 +605,7 @@ static void PlatformInit(ProcessInitializationFlags::Flags flags) {

Просмотреть файл

@ -28,10 +28,10 @@ In file included from ../../third_party/electron_node/src/env-inl.h:32:
1 error generated.
diff --git a/src/util.h b/src/util.h
index 344f7753dab2b16bc38ff808d29c031a363aaaf2..947c2c19a22f7bf8a9d82667a85a18f9252e6d65 100644
index 28873dbe4024df70a43fdc01ebd70c09acd118b0..f270efded6930f9fda56c7e277e0e3b4de6c91f4 100644
--- a/src/util.h
+++ b/src/util.h
@@ -130,10 +130,10 @@ void DumpBacktrace(FILE* fp);
@@ -131,10 +131,10 @@ void DumpJavaScriptBacktrace(FILE* fp);
do { \
/* Make sure that this struct does not end up in inline code, but */ \
/* rather in a read-only data section when modifying this code. */ \

Просмотреть файл

@ -7,10 +7,10 @@ common.gypi is a file that's included in the node header bundle, despite
the fact that we do not build node with gyp.
diff --git a/common.gypi b/common.gypi
index 4589f515178093402b4abc265af041037ee22f3b..225b3df380caca809926d6af9fc1001057237752 100644
index db09a8a33df06663b05d65828b51cfd35eb6fa79..f52d4f805406c513904151be90e433948764b3ad 100644
--- a/common.gypi
+++ b/common.gypi
@@ -80,6 +80,23 @@
@@ -88,6 +88,23 @@
##### end V8 defaults #####

Просмотреть файл

@ -13,7 +13,7 @@ if the override has been disabled.
This will be upstreamed.
diff --git a/lib/assert.js b/lib/assert.js
index b7d7a3da01d520984a5903cb9a0f1c288e0d5fa0..66a60c3726cd57e65db3e4fb57fb85721368c3ce 100644
index 9dfcf80a913942c93b206c6f871ac7807c7a7e81..4d25a22aedf7d7182bb709864e29b7e725336323 100644
--- a/lib/assert.js
+++ b/lib/assert.js
@@ -66,6 +66,7 @@ const { inspect } = require('internal/util/inspect');
@ -24,7 +24,7 @@ index b7d7a3da01d520984a5903cb9a0f1c288e0d5fa0..66a60c3726cd57e65db3e4fb57fb8572
const { isError, deprecate } = require('internal/util');
const errorCache = new SafeMap();
@@ -293,8 +294,16 @@ function getErrMessage(message, fn) {
@@ -294,8 +295,16 @@ function getErrMessage(message, fn) {
ErrorCaptureStackTrace(err, fn);
if (errorStackTraceLimitIsWritable) Error.stackTraceLimit = tmpLimit;
@ -41,10 +41,10 @@ index b7d7a3da01d520984a5903cb9a0f1c288e0d5fa0..66a60c3726cd57e65db3e4fb57fb8572
+ Error.prepareStackTrace = tmpPrepare;
+ }
const filename = call.getFileName();
let filename = call.getFileName();
const line = call.getLineNumber() - 1;
diff --git a/src/api/environment.cc b/src/api/environment.cc
index c02906eacd90ac27d618e7578d1f928f16a858f7..74b4e15b8230c6380d41e84aa504824bb79b2ee5 100644
index 11f8b8dea7bf4119c2d99ee451e3f1bc7bde8902..9045de3b17c93c4864a1bb1024b08f7d1ffa83be 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -277,6 +277,9 @@ void SetIsolateErrorHandlers(v8::Isolate* isolate, const IsolateSettings& s) {
@ -58,10 +58,10 @@ index c02906eacd90ac27d618e7578d1f928f16a858f7..74b4e15b8230c6380d41e84aa504824b
}
diff --git a/src/node_options.cc b/src/node_options.cc
index faca807e31daaadb0103556001a16629a3822c1f..9011eda7ce2435c2f859cacbac55cdc6182ebccc 100644
index a3d25cdd52f18e319ae3ac81437c8a0206b18690..48ce3f3b68a94fc35e5ce93a385ddbebb03741b9 100644
--- a/src/node_options.cc
+++ b/src/node_options.cc
@@ -1262,6 +1262,11 @@ void GetEmbedderOptions(const FunctionCallbackInfo<Value>& args) {
@@ -1269,6 +1269,11 @@ void GetEmbedderOptions(const FunctionCallbackInfo<Value>& args) {
Local<Context> context = env->context();
Local<Object> ret = Object::New(isolate);

Просмотреть файл

@ -1,33 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samuel Attard <marshallofsound@electronjs.org>
Date: Wed, 15 Nov 2023 13:31:14 -0800
Subject: Fix AVX detection
The old/faulty code would try to use AVX/AVX2 if either the SSE bit or
the AVX bit were set in XCR0, but did not check if both bits were set.
In most cases, this still worked, but on some machines, enabling linux
kernel mitigations for the "gather data sampling" vulnerability results
in only the SSE bit but not the AVX bit being set, thus resulting in an
illegal instruction and crashing the application.
Fix this by checking that both bits are set.
Fixes: 4bbb590 ("Proper check of CPU's AVX2 feature support (with MSVC support)")
Signed-off-by: Pascal Ernster <git@hardfalcon.net>
Cherry-Picked from https://github.com/aklomp/base64/commit/9003f9b183327df80fda97aa82dfc8054e1d3dce
diff --git a/deps/base64/base64/lib/codec_choose.c b/deps/base64/base64/lib/codec_choose.c
index 6a07d6a74cc24f61cf2b16d13c075234d5c7e2a3..f4215f1ef9d42087ef6735e6817c714ecc43a0ca 100644
--- a/deps/base64/base64/lib/codec_choose.c
+++ b/deps/base64/base64/lib/codec_choose.c
@@ -194,7 +194,7 @@ codec_choose_x86 (struct codec *codec)
if (ecx & bit_XSAVE_XRSTORE) {
uint64_t xcr_mask;
xcr_mask = _xgetbv(_XCR_XFEATURE_ENABLED_MASK);
- if (xcr_mask & _XCR_XMM_AND_YMM_STATE_ENABLED_BY_OS) {
+ if ((xcr_mask & _XCR_XMM_AND_YMM_STATE_ENABLED_BY_OS) == _XCR_XMM_AND_YMM_STATE_ENABLED_BY_OS) { // check multiple bits at once
#if HAVE_AVX2
if (max_level >= 7) {
__cpuid_count(7, 0, eax, ebx, ecx, edx);

Просмотреть файл

@ -24,10 +24,10 @@ index 69e2a389f9e1480a1a4ba37f5df5356b42f7d52d..0c29b00298b44b97f88a63aa5b89f1c2
wrap->object()->Has(env->context(), env->handle_onclose_symbol())
.FromMaybe(false)) {
diff --git a/src/node_contextify.cc b/src/node_contextify.cc
index 64860d7e56d2bf68034d613d06bd0e36ca935ef6..af66f25c79b274838e308f8227fa463f31ae8658 100644
index a68f6bb686768e2c5eaa4148741891926156883d..0239c64f80f4fb1870b452ed44e6ac36bfa0e3d2 100644
--- a/src/node_contextify.cc
+++ b/src/node_contextify.cc
@@ -446,6 +446,7 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
@@ -472,6 +472,7 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
void ContextifyContext::PropertyGetterCallback(
Local<Name> property,
const PropertyCallbackInfo<Value>& args) {
@ -35,7 +35,7 @@ index 64860d7e56d2bf68034d613d06bd0e36ca935ef6..af66f25c79b274838e308f8227fa463f
ContextifyContext* ctx = ContextifyContext::Get(args);
// Still initializing
@@ -453,6 +454,8 @@ void ContextifyContext::PropertyGetterCallback(
@@ -479,6 +480,8 @@ void ContextifyContext::PropertyGetterCallback(
Local<Context> context = ctx->context();
Local<Object> sandbox = ctx->sandbox();
@ -44,7 +44,7 @@ index 64860d7e56d2bf68034d613d06bd0e36ca935ef6..af66f25c79b274838e308f8227fa463f
MaybeLocal<Value> maybe_rv =
sandbox->GetRealNamedProperty(context, property);
if (maybe_rv.IsEmpty()) {
@@ -462,6 +465,11 @@ void ContextifyContext::PropertyGetterCallback(
@@ -488,6 +491,11 @@ void ContextifyContext::PropertyGetterCallback(
Local<Value> rv;
if (maybe_rv.ToLocal(&rv)) {
@ -57,10 +57,10 @@ index 64860d7e56d2bf68034d613d06bd0e36ca935ef6..af66f25c79b274838e308f8227fa463f
rv = ctx->global_proxy();
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index 0a45234d55b837b3cc394db77d2cc0644b3cb501..c3794f8de34be43cd78e1bc0d940acba0cf257ff 100644
index 6c9a23e669b29d1fdbc4e371d903e77060fd1b74..7c9f6b004295433be6a4ce84621f2005a0b67e14 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -905,7 +905,7 @@ Maybe<bool> MessagePort::PostMessage(Environment* env,
@@ -907,7 +907,7 @@ Maybe<bool> MessagePort::PostMessage(Environment* env,
const TransferList& transfer_v) {
Isolate* isolate = env->isolate();
Local<Object> obj = object(isolate);
@ -69,7 +69,7 @@ index 0a45234d55b837b3cc394db77d2cc0644b3cb501..c3794f8de34be43cd78e1bc0d940acba
std::shared_ptr<Message> msg = std::make_shared<Message>();
// Per spec, we need to both check if transfer list has the source port, and
@@ -913,6 +913,10 @@ Maybe<bool> MessagePort::PostMessage(Environment* env,
@@ -915,6 +915,10 @@ Maybe<bool> MessagePort::PostMessage(Environment* env,
Maybe<bool> serialization_maybe =
msg->Serialize(env, context, message_v, transfer_v, obj);

Просмотреть файл

@ -431,7 +431,7 @@ index 3b738b7f47ec59ba718a92e3a0024fed45a9c87c..fabf5775a263804f5974b10cf73c6886
+ });
}
diff --git a/test/parallel/test-crypto-getcipherinfo.js b/test/parallel/test-crypto-getcipherinfo.js
index 98d2a52eceac4bc564fd2878f77b50c336a67a66..bcb2de6e354c26816000f2400d9c1d46de01888a 100644
index 64b79fc36ccf4d38f763fcd8c1930473c82cefd7..892490fc7dd8da09f8aa10a20bec69385c0fee28 100644
--- a/test/parallel/test-crypto-getcipherinfo.js
+++ b/test/parallel/test-crypto-getcipherinfo.js
@@ -62,9 +62,13 @@ assert(getCipherInfo('aes-128-cbc', { ivLength: 16 }));
@ -905,7 +905,7 @@ index aa685ca9e09cf0d17ff4d5480089e9977dd51f72..ccafa427433922155c1afd5d95ba69d8
}));
socket.end('Hello');
diff --git a/test/parallel/test-tls-getprotocol.js b/test/parallel/test-tls-getprotocol.js
index 7da2f60676d00e8e40d890f2efd46102154ca34d..2230b8cf85259d6670e274d6b84d83fd8788e83e 100644
index 571f400cea574662bda6be8eecd22ceccaf75420..2296362dc625ee663df11927297ccf124233a19b 100644
--- a/test/parallel/test-tls-getprotocol.js
+++ b/test/parallel/test-tls-getprotocol.js
@@ -27,7 +27,7 @@ const clientConfigs = [

Просмотреть файл

@ -6,32 +6,23 @@ Subject: fix: do not resolve electron entrypoints
This wastes fs cycles and can result in strange behavior if this path actually exists on disk
diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js
index 8406e8ca319533d6186c5d457e951b7a845b6b72..caa34187e17d9a0addcc8c94e46823ea4e05c590 100644
index 449131b9af99744c08d62d73f8d124cef5c9cc71..3df06eff63106aece1009d88fd01df2abdf6d943 100644
--- a/lib/internal/modules/esm/load.js
+++ b/lib/internal/modules/esm/load.js
@@ -131,7 +131,7 @@ async function defaultLoad(url, context = kEmptyObject) {
@@ -132,7 +132,7 @@ async function defaultLoad(url, context = kEmptyObject) {
source = null;
format ??= 'builtin';
} else {
let contextToPass = context;
} else if (format !== 'commonjs' || defaultType === 'module') {
- if (source == null) {
+ if (format !== 'electron' && source == null) {
({ responseURL, source } = await getSource(urlInstance, context));
contextToPass = { __proto__: context, source };
context = { __proto__: context, source };
}
@@ -139,7 +139,7 @@ async function defaultLoad(url, context = kEmptyObject) {
// Now that we have the source for the module, run `defaultGetFormat` again in case we detect ESM syntax.
format ??= await defaultGetFormat(urlInstance, contextToPass);
- if ((format === 'commonjs' || format === 'electron') && contextToPass !== context) {
+ if (format === 'electron' || format === 'commonjs' && contextToPass !== context) {
// For backward compatibility reasons, we need to discard the source in
// order for the CJS loader to re-fetch it.
source = null;
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index dbbe37474c70addfbf8cf805c29732dcd38c74f6..96ffb2b0b051163d8a777ed3d1b5bc2c83fc37c5 100644
index cea066d1073a31573e134d584f1991e7a06b1036..2b2d8e00e7ecf2e8266218d8dc5e65f0f7c8a49f 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -376,6 +376,9 @@ function cjsPreparseModuleExports(filename, source) {
@@ -387,6 +387,9 @@ function cjsPreparseModuleExports(filename, source) {
if (cached) {
return { module, exportNames: cached.exportNames };
}

Просмотреть файл

@ -10,7 +10,7 @@ parameters.
This should be upstreamed.
diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index f3cda64beaa1403cb33f1b0bd8089f3dfcbfc8b9..77386bd234d0b49b122f1de3d27b1a92da5d0ea4 100644
index bcef04f980d1b1f010c5349ecbfca8080f39b308..6861c28eb6deea72e844b04048d88ca726385c7f 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -482,6 +482,18 @@ MaybeLocal<Value> BuiltinLoader::CompileAndCall(Local<Context> context,

Просмотреть файл

@ -18,19 +18,19 @@ index 1931688e85d05ee2da4f88efb05d635cb43be233..afccc24392abff9eef2b9953fcffeb79
/**
diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js
index 6f9b73abd8a76191714f12d68c01a881653d8d4a..f108b567a910805ff86f0baf75fa1a6102ad28d6 100644
index 5239bc8ed883a54df206d73c5dc0b70942c4f3df..6a15fcae677b3bda58fc85f705862bbcd9feec9d 100644
--- a/lib/internal/modules/esm/load.js
+++ b/lib/internal/modules/esm/load.js
@@ -140,7 +140,7 @@ async function defaultLoad(url, context = kEmptyObject) {
// Now that we have the source for the module, run `defaultGetFormat` again in case we detect ESM syntax.
format ??= await defaultGetFormat(urlInstance, contextToPass);
@@ -142,7 +142,7 @@ async function defaultLoad(url, context = kEmptyObject) {
// Now that we have the source for the module, run `defaultGetFormat` to detect its format.
format = await defaultGetFormat(urlInstance, context);
- if (format === 'commonjs' && contextToPass !== context) {
+ if ((format === 'commonjs' || format === 'electron') && contextToPass !== context) {
// For backward compatibility reasons, we need to discard the source in
// order for the CJS loader to re-fetch it.
source = null;
@@ -221,6 +221,7 @@ function throwIfUnsupportedURLScheme(parsed, experimentalNetworkImports) {
- if (format === 'commonjs') {
+ if (format === 'electron' || format === 'commonjs') {
// For backward compatibility reasons, we need to discard the source in
// order for the CJS loader to re-fetch it.
source = null;
@@ -224,6 +224,7 @@ function throwIfUnsupportedURLScheme(parsed, experimentalNetworkImports) {
protocol !== 'file:' &&
protocol !== 'data:' &&
protocol !== 'node:' &&
@ -38,7 +38,7 @@ index 6f9b73abd8a76191714f12d68c01a881653d8d4a..f108b567a910805ff86f0baf75fa1a61
(
!experimentalNetworkImports ||
(
@@ -229,7 +230,7 @@ function throwIfUnsupportedURLScheme(parsed, experimentalNetworkImports) {
@@ -232,7 +233,7 @@ function throwIfUnsupportedURLScheme(parsed, experimentalNetworkImports) {
)
)
) {
@ -48,10 +48,10 @@ index 6f9b73abd8a76191714f12d68c01a881653d8d4a..f108b567a910805ff86f0baf75fa1a61
ArrayPrototypePush(schemes, 'https', 'http');
}
diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js
index 58e7df07ca5275e3a684f30c3d0a3f901d000fb8..2d077cc182b40e0bdce2d71d0471e96e6d30222a 100644
index 06a34c11254a2fedd2ea59c4057bfb30c31082a6..66ecfbcdd4fb2c9986e2d4619a381337839979fe 100644
--- a/lib/internal/modules/esm/resolve.js
+++ b/lib/internal/modules/esm/resolve.js
@@ -731,6 +731,8 @@ function packageImportsResolve(name, base, conditions) {
@@ -740,6 +740,8 @@ function packageImportsResolve(name, base, conditions) {
throw importNotDefined(name, packageJSONUrl, base);
}
@ -60,7 +60,7 @@ index 58e7df07ca5275e3a684f30c3d0a3f901d000fb8..2d077cc182b40e0bdce2d71d0471e96e
/**
* Returns the package type for a given URL.
* @param {URL} url - The URL to get the package type for.
@@ -791,6 +793,11 @@ function packageResolve(specifier, base, conditions) {
@@ -800,6 +802,11 @@ function packageResolve(specifier, base, conditions) {
return new URL('node:' + specifier);
}
@ -73,10 +73,10 @@ index 58e7df07ca5275e3a684f30c3d0a3f901d000fb8..2d077cc182b40e0bdce2d71d0471e96e
parsePackageName(specifier, base);
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index 7a62615cfe4210c9fd83c6bfa3b5da19eec5fff2..bda102b266b17936efc453d039213517c4ef921c 100644
index 9976b819f266c682631f41522af114b660d7c20c..e5fea28126b1b810cd3e1e5a13c0fdc97b6b71f5 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -280,7 +280,7 @@ function createCJSModuleWrap(url, source, isMain, loadCJS = loadCJSModule) {
@@ -291,7 +291,7 @@ function createCJSModuleWrap(url, source, isMain, loadCJS = loadCJSModule) {
const { exportNames, module } = cjsPreparseModuleExports(filename, source);
cjsCache.set(url, module);
@ -85,7 +85,7 @@ index 7a62615cfe4210c9fd83c6bfa3b5da19eec5fff2..bda102b266b17936efc453d039213517
[...exportNames] : ['default', ...exportNames];
if (isMain) {
@@ -302,8 +302,8 @@ function createCJSModuleWrap(url, source, isMain, loadCJS = loadCJSModule) {
@@ -313,8 +313,8 @@ function createCJSModuleWrap(url, source, isMain, loadCJS = loadCJSModule) {
({ exports } = module);
}
for (const exportName of exportNames) {
@ -96,7 +96,7 @@ index 7a62615cfe4210c9fd83c6bfa3b5da19eec5fff2..bda102b266b17936efc453d039213517
continue;
}
// We might trigger a getter -> dont fail.
@@ -328,6 +328,10 @@ translators.set('require-commonjs', (url, source, isMain) => {
@@ -339,6 +339,10 @@ translators.set('require-commonjs', (url, source, isMain) => {
return createCJSModuleWrap(url, source);
});

Просмотреть файл

@ -7,10 +7,10 @@ Subject: fix: expose tracing::Agent and use tracing::TracingController instead
This API is used by Electron to create Node's tracing controller.
diff --git a/src/api/environment.cc b/src/api/environment.cc
index 6a6164b6d294430b6f2fe826cdcef5a9cc3f9660..035f495687856b0cfbcc4e87ba6e90d56c99e837 100644
index a37a1b01fffb2acc1473e8b32349c86eead4f375..33edf44239a7ec13ebee2f926b1e7f9b8d0b83fe 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -583,6 +583,10 @@ MultiIsolatePlatform* GetMultiIsolatePlatform(IsolateData* env) {
@@ -590,6 +590,10 @@ MultiIsolatePlatform* GetMultiIsolatePlatform(IsolateData* env) {
return env->platform();
}

Просмотреть файл

@ -263,7 +263,7 @@ index c5dd2fb8fce40f2bf6f9a8543047ffb50cc08084..d850af9257cc194ee385130ce3cd2c01
void KeyObjectHandle::CheckEcKeyData(const FunctionCallbackInfo<Value>& args) {
diff --git a/src/crypto/crypto_random.cc b/src/crypto/crypto_random.cc
index 245f352918696413f8f0f7cec94dbcec687685af..35c1c1ce9f0e3d59b75e3966d485bf70b846de5b 100644
index 48154df7dc91ed7c0d65323199bc2f59dfc68135..6431e5c3062890975854780d15ecb84370b81770 100644
--- a/src/crypto/crypto_random.cc
+++ b/src/crypto/crypto_random.cc
@@ -140,7 +140,7 @@ Maybe<bool> RandomPrimeTraits::AdditionalConfig(
@ -357,12 +357,12 @@ index 5734d8fdc5505e1586f571c19b840bd56e9c9f1f..3034b114e081e2b32dd5b71653927a41
} // namespace
diff --git a/src/node_metadata.cc b/src/node_metadata.cc
index 22546e9de25bdf95a00d06057626b544d5bf6f28..3a20f2f6a153c2f0b48b86ed83b92484ac4c274a 100644
index b88cfb98e75aca426224e19376b3ff4c23b92e53..b66f4e2b5cbd8f36af42f82a8921207302360e39 100644
--- a/src/node_metadata.cc
+++ b/src/node_metadata.cc
@@ -16,7 +16,7 @@
#include "v8.h"
#include "zlib.h"
#include "zlib_version.h"
-#if HAVE_OPENSSL
+#if HAVE_OPENSSL && !defined(OPENSSL_IS_BORINGSSL)
@ -383,7 +383,7 @@ index cf051585e779e2b03bd7b95fe5008b89cc7f8162..9de49c6828468fdf846dcd4ad445390f
#if NODE_OPENSSL_HAS_QUIC
#include <openssl/quic.h>
diff --git a/src/node_options.cc b/src/node_options.cc
index 29cb7fc6b29b89946856990032645ad4edb8529c..faca807e31daaadb0103556001a16629a3822c1f 100644
index 5da6918af8c125259a89ce95bbbbc4fc475c4c69..a3d25cdd52f18e319ae3ac81437c8a0206b18690 100644
--- a/src/node_options.cc
+++ b/src/node_options.cc
@@ -6,7 +6,7 @@
@ -396,7 +396,7 @@ index 29cb7fc6b29b89946856990032645ad4edb8529c..faca807e31daaadb0103556001a16629
#endif
diff --git a/src/node_options.h b/src/node_options.h
index 30955c779714ce5ad9b79f11e4cfefbcada7fa05..f02c07cd418fa2e3c64221bd37acd380a130f608 100644
index 312fae8f759c5828d0770ceee845dc4754871436..207468a2177d36894c64cb37aac946af02c82549 100644
--- a/src/node_options.h
+++ b/src/node_options.h
@@ -11,7 +11,7 @@

Просмотреть файл

@ -6,7 +6,7 @@ Subject: fix: lazyload fs in esm loaders to apply asar patches
Changes { foo } from fs to just "fs.foo" so that our patching of fs is applied to esm loaders
diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js
index f108b567a910805ff86f0baf75fa1a6102ad28d6..8406e8ca319533d6186c5d457e951b7a845b6b72 100644
index 6a15fcae677b3bda58fc85f705862bbcd9feec9d..449131b9af99744c08d62d73f8d124cef5c9cc71 100644
--- a/lib/internal/modules/esm/load.js
+++ b/lib/internal/modules/esm/load.js
@@ -10,7 +10,7 @@ const { kEmptyObject } = require('internal/util');
@ -18,7 +18,7 @@ index f108b567a910805ff86f0baf75fa1a6102ad28d6..8406e8ca319533d6186c5d457e951b7a
// Do not eagerly grab .manifest, it may be in TDZ
const policy = getOptionValue('--experimental-policy') ?
@@ -40,8 +40,7 @@ async function getSource(url, context) {
@@ -42,8 +42,7 @@ async function getSource(url, context) {
let responseURL = href;
let source;
if (protocol === 'file:') {
@ -28,7 +28,7 @@ index f108b567a910805ff86f0baf75fa1a6102ad28d6..8406e8ca319533d6186c5d457e951b7a
} else if (protocol === 'data:') {
const match = RegExpPrototypeExec(DATA_URL_PATTERN, url.pathname);
if (!match) {
@@ -80,7 +79,7 @@ function getSourceSync(url, context) {
@@ -82,7 +81,7 @@ function getSourceSync(url, context) {
const responseURL = href;
let source;
if (protocol === 'file:') {
@ -38,7 +38,7 @@ index f108b567a910805ff86f0baf75fa1a6102ad28d6..8406e8ca319533d6186c5d457e951b7a
const match = RegExpPrototypeExec(DATA_URL_PATTERN, url.pathname);
if (!match) {
diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js
index 2d077cc182b40e0bdce2d71d0471e96e6d30222a..34fd6613fa24d628fc026ac11e5be7217a20fff4 100644
index 66ecfbcdd4fb2c9986e2d4619a381337839979fe..102165af37a42ca0394ec0d4efc21d3b03efe5eb 100644
--- a/lib/internal/modules/esm/resolve.js
+++ b/lib/internal/modules/esm/resolve.js
@@ -24,7 +24,7 @@ const {
@ -50,7 +50,7 @@ index 2d077cc182b40e0bdce2d71d0471e96e6d30222a..34fd6613fa24d628fc026ac11e5be721
const { getOptionValue } = require('internal/options');
// Do not eagerly grab .manifest, it may be in TDZ
const policy = getOptionValue('--experimental-policy') ?
@@ -257,7 +257,7 @@ function finalizeResolution(resolved, base, preserveSymlinks) {
@@ -266,7 +266,7 @@ function finalizeResolution(resolved, base, preserveSymlinks) {
}
if (!preserveSymlinks) {
@ -60,19 +60,19 @@ index 2d077cc182b40e0bdce2d71d0471e96e6d30222a..34fd6613fa24d628fc026ac11e5be721
});
const { search, hash } = resolved;
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index bda102b266b17936efc453d039213517c4ef921c..dbbe37474c70addfbf8cf805c29732dcd38c74f6 100644
index e5fea28126b1b810cd3e1e5a13c0fdc97b6b71f5..cea066d1073a31573e134d584f1991e7a06b1036 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -32,7 +32,7 @@ function lazyTypes() {
@@ -33,7 +33,7 @@ function lazyTypes() {
const { containsModuleSyntax } = internalBinding('contextify');
const { BuiltinModule } = require('internal/bootstrap/realm');
const assert = require('internal/assert');
-const { readFileSync } = require('fs');
+const fs = require('fs');
const { dirname, extname, isAbsolute } = require('path');
const {
loadBuiltinModule,
@@ -355,7 +355,7 @@ translators.set('commonjs', async function commonjsStrategy(url, source,
@@ -366,7 +366,7 @@ translators.set('commonjs', async function commonjsStrategy(url, source,
try {
// We still need to read the FS to detect the exports.
@ -81,7 +81,7 @@ index bda102b266b17936efc453d039213517c4ef921c..dbbe37474c70addfbf8cf805c29732dc
} catch {
// Continue regardless of error.
}
@@ -424,7 +424,7 @@ function cjsPreparseModuleExports(filename, source) {
@@ -435,7 +435,7 @@ function cjsPreparseModuleExports(filename, source) {
isAbsolute(resolved)) {
// TODO: this should be calling the `load` hook chain to get the source
// (and fallback to reading the FS only if the source is nullish).

Просмотреть файл

@ -13,7 +13,7 @@ causing the following error:
This should be upstreamed.
diff --git a/src/module_wrap.h b/src/module_wrap.h
index 767d183c6b6b6d97726cf5d63c0b202bd9ae10a6..a134b3817c0a10174ead927589626789851760d0 100644
index 061117dc3182d63e35d7e99ffd95801f96356322..63682be31ce00a3bf7b9be909cac4b7f9ec02a8e 100644
--- a/src/module_wrap.h
+++ b/src/module_wrap.h
@@ -7,6 +7,7 @@

Просмотреть файл

@ -6,7 +6,7 @@ Subject: Pass all globals through "require"
(cherry picked from commit 7d015419cb7a0ecfe6728431a4ed2056cd411d62)
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index b077ee386bb40ea32208fc6655de88a3449b7eb2..f408d6c152d6acabea5ff3e262fe344909046595 100644
index b077ee386bb40ea32208fc6655de88a3449b7eb2..d4b70bab5e89300bfe6305263d556c986380e2e0 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -146,6 +146,13 @@ const {
@ -16,9 +16,9 @@ index b077ee386bb40ea32208fc6655de88a3449b7eb2..f408d6c152d6acabea5ff3e262fe3449
+// Store the "global" variable from global scope into a local scope, so we can
+// still reference it from this file even after we deleted the "global" variable
+// from the global scope.
+const localGlobal = global;
+const localGlobal = (typeof global !== 'undefined') ? global : undefined;
+// Do the same for "Buffer".
+const localBuffer = Buffer;
+const localBuffer = (typeof Buffer !== 'undefined') ? Buffer : undefined;
+
const {
isProxy,

Просмотреть файл

@ -22,7 +22,7 @@ index 7a773d5208e250abd8b0efb6dde66c45060bbee4..45e38ca0a122e3b1c5d8d59865f9610c
const binding = internalBinding('builtins');
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index f408d6c152d6acabea5ff3e262fe344909046595..ea3b411a78495d0414b1956503b86cbd5f0ed765 100644
index d4b70bab5e89300bfe6305263d556c986380e2e0..1f3b719048f2477de183e2856b9b8eee8502f708 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -96,6 +96,7 @@ const assert = require('internal/assert');

Просмотреть файл

@ -1,38 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: John Kleinschmidt <jkleinsc@electronjs.org>
Date: Mon, 2 Oct 2023 10:59:53 -0400
Subject: src: adapt to v8::Exception API change
4898682: [api] Add Error.cause to V8 API | https://chromium-review.googlesource.com/c/v8/v8/+/4898682
Cherry picked fix from https://github.com/nodejs/node-v8/commit/675f411677c28a10a2f03d4b3ef14c2284c33587
diff --git a/src/env-inl.h b/src/env-inl.h
index 222c78ef0cb9904742fd44f8182278ab1f50cd59..e248a144b905a6c7c166796cddfe8442f8dc7158 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -780,10 +780,10 @@ inline void Environment::ThrowRangeError(const char* errmsg) {
}
inline void Environment::ThrowError(
- v8::Local<v8::Value> (*fun)(v8::Local<v8::String>),
+ v8::Local<v8::Value> (*fun)(v8::Local<v8::String>, v8::Local<v8::Value>),
const char* errmsg) {
v8::HandleScope handle_scope(isolate());
- isolate()->ThrowException(fun(OneByteString(isolate(), errmsg)));
+ isolate()->ThrowException(fun(OneByteString(isolate(), errmsg), {}));
}
inline void Environment::ThrowErrnoException(int errorno,
diff --git a/src/env.h b/src/env.h
index 87df6e1f32e584aa0c6ae21856299fff31d67669..c9a455be8c395a2f231f56e0a54211466362aa1d 100644
--- a/src/env.h
+++ b/src/env.h
@@ -1017,7 +1017,7 @@ class Environment : public MemoryRetainer {
};
private:
- inline void ThrowError(v8::Local<v8::Value> (*fun)(v8::Local<v8::String>),
+ inline void ThrowError(v8::Local<v8::Value> (*fun)(v8::Local<v8::String>, v8::Local<v8::Value>),
const char* errmsg);
void TrackContext(v8::Local<v8::Context> context);
void UntrackContext(v8::Local<v8::Context> context);

Просмотреть файл

@ -1,91 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Keeley Hammond <vertedinde@electronjs.org>
Date: Mon, 6 Nov 2023 14:37:50 -0800
Subject: src: avoid copying string in fs_permission
Ref: https://github.com/nodejs/node/pull/47746/files
diff --git a/src/permission/fs_permission.cc b/src/permission/fs_permission.cc
index fadf75968c779d5aee8d9d1ee27e7b4abf241240..d407d440d74c66d9dc8ca4d4653096292c5adc4c 100644
--- a/src/permission/fs_permission.cc
+++ b/src/permission/fs_permission.cc
@@ -199,18 +199,18 @@ bool FSPermission::RadixTree::Lookup(const std::string_view& s,
}
}
-void FSPermission::RadixTree::Insert(const std::string& path) {
+void FSPermission::RadixTree::Insert(const std::string& path_prefix) {
FSPermission::RadixTree::Node* current_node = root_node_;
unsigned int parent_node_prefix_len = current_node->prefix.length();
- int path_len = path.length();
+ int path_len = path_prefix.length();
for (int i = 1; i <= path_len; ++i) {
- bool is_wildcard_node = path[i - 1] == '*';
+ bool is_wildcard_node = path_prefix[i - 1] == '*';
bool is_last_char = i == path_len;
if (is_wildcard_node || is_last_char) {
- std::string node_path = path.substr(parent_node_prefix_len, i);
+ std::string node_path = path_prefix.substr(parent_node_prefix_len, i);
current_node = current_node->CreateChild(node_path);
}
@@ -222,7 +222,7 @@ void FSPermission::RadixTree::Insert(const std::string& path) {
if (UNLIKELY(per_process::enabled_debug_list.enabled(
DebugCategory::PERMISSION_MODEL))) {
- per_process::Debug(DebugCategory::PERMISSION_MODEL, "Inserting %s\n", path);
+ per_process::Debug(DebugCategory::PERMISSION_MODEL, "Inserting %s\n", path_prefix);
PrintTree(root_node_);
}
}
diff --git a/src/permission/fs_permission.h b/src/permission/fs_permission.h
index 244e95727ad48757995c6404f457f42a4ba33ccd..4b6aab197333928bfbd5143bea15b3a5abd6d4c0 100644
--- a/src/permission/fs_permission.h
+++ b/src/permission/fs_permission.h
@@ -31,16 +31,16 @@ class FSPermission final : public PermissionBase {
Node() : wildcard_child(nullptr), is_leaf(false) {}
- Node* CreateChild(std::string prefix) {
- if (prefix.empty() && !is_leaf) {
+ Node* CreateChild(std::string path_prefix) {
+ if (path_prefix.empty() && !is_leaf) {
is_leaf = true;
return this;
}
- char label = prefix[0];
+ char label = path_prefix[0];
Node* child = children[label];
if (child == nullptr) {
- children[label] = new Node(prefix);
+ children[label] = new Node(path_prefix);
return children[label];
}
@@ -48,7 +48,7 @@ class FSPermission final : public PermissionBase {
unsigned int i = 0;
unsigned int prefix_len = prefix.length();
for (; i < child->prefix.length(); ++i) {
- if (i > prefix_len || prefix[i] != child->prefix[i]) {
+ if (i > prefix_len || path_prefix[i] != child->prefix[i]) {
std::string parent_prefix = child->prefix.substr(0, i);
std::string child_prefix = child->prefix.substr(i);
@@ -57,11 +57,11 @@ class FSPermission final : public PermissionBase {
split_child->children[child_prefix[0]] = child;
children[parent_prefix[0]] = split_child;
- return split_child->CreateChild(prefix.substr(i));
+ return split_child->CreateChild(path_prefix.substr(i));
}
}
child->is_leaf = true;
- return child->CreateChild(prefix.substr(i));
+ return child->CreateChild(path_prefix.substr(i));
}
Node* CreateWildcardChild() {

Просмотреть файл

@ -1,148 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Mon, 13 Nov 2023 22:01:07 +0900
Subject: src: fix compatility with upcoming V8 12.1 APIs
In the upcoming V8 11.10 there are a few API changes will break
building of Node, this PR makes the code compatible with both old
and new APIs.
This PR is needed because [V8's node-ci repo](https://chromium.googlesource.com/v8/node-ci/)
tests latest Node with latest V8, and without this change V8 has to patch Node in
their own fork.
diff --git a/src/env-inl.h b/src/env-inl.h
index e248a144b905a6c7c166796cddfe8442f8dc7158..524a9633ef16e48797dc6a1e507ca0be2bfffe7e 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -779,9 +779,14 @@ inline void Environment::ThrowRangeError(const char* errmsg) {
ThrowError(v8::Exception::RangeError, errmsg);
}
-inline void Environment::ThrowError(
- v8::Local<v8::Value> (*fun)(v8::Local<v8::String>, v8::Local<v8::Value>),
- const char* errmsg) {
+inline void Environment::ThrowError(V8ExceptionConstructorOld fun,
+ const char* errmsg) {
+ v8::HandleScope handle_scope(isolate());
+ isolate()->ThrowException(fun(OneByteString(isolate(), errmsg)));
+ }
+
+inline void Environment::ThrowError(V8ExceptionConstructorNew fun,
+ const char* errmsg) {
v8::HandleScope handle_scope(isolate());
isolate()->ThrowException(fun(OneByteString(isolate(), errmsg), {}));
}
diff --git a/src/env.h b/src/env.h
index c9a455be8c395a2f231f56e0a54211466362aa1d..448075e354c760a2dbd1dd763f40b7a645730250 100644
--- a/src/env.h
+++ b/src/env.h
@@ -1017,8 +1017,14 @@ class Environment : public MemoryRetainer {
};
private:
- inline void ThrowError(v8::Local<v8::Value> (*fun)(v8::Local<v8::String>, v8::Local<v8::Value>),
- const char* errmsg);
+ // V8 has changed the constructor of exceptions, support both APIs before Node
+ // updates to V8 12.1.
+ using V8ExceptionConstructorOld =
+ v8::Local<v8::Value> (*)(v8::Local<v8::String>);
+ using V8ExceptionConstructorNew =
+ v8::Local<v8::Value> (*)(v8::Local<v8::String>, v8::Local<v8::Value>);
+ inline void ThrowError(V8ExceptionConstructorOld fun, const char* errmsg);
+ inline void ThrowError(V8ExceptionConstructorNew fun, const char* errmsg);
void TrackContext(v8::Local<v8::Context> context);
void UntrackContext(v8::Local<v8::Context> context);
diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc
index f08294a26a43923cfb47dde080e42b5cde0803a5..8d48105cb4822dde19982ce1c132f521ff8b27c9 100644
--- a/src/js_native_api_v8.cc
+++ b/src/js_native_api_v8.cc
@@ -961,11 +961,8 @@ napi_define_class(napi_env env,
env, p->setter, p->data, &setter_tpl));
}
- tpl->PrototypeTemplate()->SetAccessorProperty(property_name,
- getter_tpl,
- setter_tpl,
- attributes,
- v8::AccessControl::DEFAULT);
+ tpl->PrototypeTemplate()->SetAccessorProperty(
+ property_name, getter_tpl, setter_tpl, attributes);
} else if (p->method != nullptr) {
v8::Local<v8::FunctionTemplate> t;
STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(
diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index 77386bd234d0b49b122f1de3d27b1a92da5d0ea4..6861c28eb6deea72e844b04048d88ca726385c7f 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -693,37 +693,38 @@ void BuiltinLoader::CreatePerIsolateProperties(IsolateData* isolate_data,
Local<ObjectTemplate> target) {
Isolate* isolate = isolate_data->isolate();
- target->SetAccessor(isolate_data->config_string(),
- ConfigStringGetter,
- nullptr,
- Local<Value>(),
- DEFAULT,
- None,
- SideEffectType::kHasNoSideEffect);
-
- target->SetAccessor(FIXED_ONE_BYTE_STRING(isolate, "builtinIds"),
- BuiltinIdsGetter,
- nullptr,
- Local<Value>(),
- DEFAULT,
- None,
- SideEffectType::kHasNoSideEffect);
-
- target->SetAccessor(FIXED_ONE_BYTE_STRING(isolate, "builtinCategories"),
- GetBuiltinCategories,
- nullptr,
- Local<Value>(),
- DEFAULT,
- None,
- SideEffectType::kHasNoSideEffect);
-
- target->SetAccessor(FIXED_ONE_BYTE_STRING(isolate, "natives"),
- GetNatives,
- nullptr,
- Local<Value>(),
- DEFAULT,
- None,
- SideEffectType::kHasNoSideEffect);
+ target->SetNativeDataProperty(isolate_data->config_string(),
+ ConfigStringGetter,
+ nullptr,
+ Local<Value>(),
+ None,
+ DEFAULT,
+ SideEffectType::kHasNoSideEffect);
+
+ target->SetNativeDataProperty(FIXED_ONE_BYTE_STRING(isolate, "builtinIds"),
+ BuiltinIdsGetter,
+ nullptr,
+ Local<Value>(),
+ None,
+ DEFAULT,
+ SideEffectType::kHasNoSideEffect);
+
+ target->SetNativeDataProperty(
+ FIXED_ONE_BYTE_STRING(isolate, "builtinCategories"),
+ GetBuiltinCategories,
+ nullptr,
+ Local<Value>(),
+ None,
+ DEFAULT,
+ SideEffectType::kHasNoSideEffect);
+
+ target->SetNativeDataProperty(FIXED_ONE_BYTE_STRING(isolate, "natives"),
+ GetNatives,
+ nullptr,
+ Local<Value>(),
+ None,
+ DEFAULT,
+ SideEffectType::kHasNoSideEffect);
SetMethod(isolate, target, "getCacheUsage", BuiltinLoader::GetCacheUsage);
SetMethod(isolate, target, "compileFunction", BuiltinLoader::CompileFunction);

Просмотреть файл

@ -9,7 +9,7 @@ Xref: https://chromium-review.googlesource.com/c/v8/v8/+/4336198
Backported from https://github.com/nodejs/node-v8/commit/f66b996030e94a7e4874820a53475338e1df4fe3
diff --git a/src/node_platform.cc b/src/node_platform.cc
index 74ab4a3df8f09b11f0769ba1c56a8c9b0a3f22b0..dd66d17be10e704d510d74ec08dd08d6032cb605 100644
index 927fdddb8d9a1a75263890623d05ea1df2bfee14..291e386ccae0d2f33125c221b09f4259575184ac 100644
--- a/src/node_platform.cc
+++ b/src/node_platform.cc
@@ -496,17 +496,22 @@ bool PerIsolatePlatformData::FlushForegroundTasksInternal() {

Просмотреть файл

@ -7,7 +7,7 @@ This refactors several allocators to allocate within the V8 memory cage,
allowing them to be compatible with the V8_SANDBOXED_POINTERS feature.
diff --git a/src/api/environment.cc b/src/api/environment.cc
index 035f495687856b0cfbcc4e87ba6e90d56c99e837..c02906eacd90ac27d618e7578d1f928f16a858f7 100644
index 33edf44239a7ec13ebee2f926b1e7f9b8d0b83fe..11f8b8dea7bf4119c2d99ee451e3f1bc7bde8902 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -101,6 +101,14 @@ MaybeLocal<Value> PrepareStackTraceCallback(Local<Context> context,
@ -131,10 +131,10 @@ index d45325954d980724f80d49298bbe837197237a9b..ccea18080142bd9cba3765dbbec61c2a
return ret;
diff --git a/src/node_internals.h b/src/node_internals.h
index d7f78664615fcfca6ed7404f940906c148a5e02c..35d76aaa69abfaca18421f12aa1ff78297b8f93f 100644
index 9a96e042fc5cda18beb13b89965a6267fba3e0a6..bd210db0b6ad12075e8ced8b321da38752b3d050 100644
--- a/src/node_internals.h
+++ b/src/node_internals.h
@@ -102,7 +102,9 @@ v8::Maybe<bool> InitializePrimordials(v8::Local<v8::Context> context);
@@ -112,7 +112,9 @@ v8::Maybe<bool> InitializePrimordials(v8::Local<v8::Context> context);
class NodeArrayBufferAllocator : public ArrayBufferAllocator {
public:
@ -145,7 +145,7 @@ index d7f78664615fcfca6ed7404f940906c148a5e02c..35d76aaa69abfaca18421f12aa1ff782
void* Allocate(size_t size) override; // Defined in src/node.cc
void* AllocateUninitialized(size_t size) override;
@@ -121,7 +123,7 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator {
@@ -131,7 +133,7 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator {
}
private:

Просмотреть файл

@ -7,13 +7,13 @@ Instead of disabling the tests, flag them as flaky so they still run
but don't cause CI failures on flakes.
diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status
index fa425fdcfc475ba2d5ba9a2492ea4481914a7cce..840c2f657467ede0e3737ea1aee55e07e39f353a 100644
index 4c29730e78a07f5fa247900ae1bfbc9cb3bfdd0a..d19fb4a1f0e6a1efaff05e8faf638cff7e0c2255 100644
--- a/test/parallel/parallel.status
+++ b/test/parallel/parallel.status
@@ -5,6 +5,13 @@ prefix parallel
# sample-test : PASS,FLAKY
[true] # This section applies to all platforms
@@ -8,6 +8,13 @@ prefix parallel
# https://github.com/nodejs/node/pull/50327
# Currently there's no reliable way to test it.
test-diagnostics-channel-memory-leak: SKIP
+test-inspector-multisession-ws: PASS, FLAKY
+test-heapsnapshot-near-heap-limit-by-api-in-worker: PASS, FLAKY
+test-heapsnapshot-near-heap-limit-worker: PASS, FLAKY

Просмотреть файл

@ -0,0 +1,51 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Tue, 16 Jan 2024 14:53:31 +0100
Subject: test: make test-node-output-v8-warning generic
Ref https://github.com/nodejs/node/pull/50421.
The above CL migrated python snapshot testing to JS, and in the process
added string replace calls to change 'node' as a hardcoded string to an
asterisk. This was initially fixed in https://github.com/nodejs/node/pull/36489
before being regressed in the above, as that PR essentially makes the wildcard
meaningless. Fix it for now by replacing the process.argv0 basename instead.
Some form of fix for this should be upstreamed.
diff --git a/test/parallel/test-node-output-v8-warning.mjs b/test/parallel/test-node-output-v8-warning.mjs
index 8e497739d21c70d5c792f43c268746a200916063..cad1910e020b15775ee16122bc9d310680fed687 100644
--- a/test/parallel/test-node-output-v8-warning.mjs
+++ b/test/parallel/test-node-output-v8-warning.mjs
@@ -2,11 +2,18 @@ import '../common/index.mjs';
import * as fixtures from '../common/fixtures.mjs';
import * as snapshot from '../common/assertSnapshot.js';
import { describe, it } from 'node:test';
+import { basename } from 'node:path';
function replaceNodeVersion(str) {
return str.replaceAll(process.version, '*');
}
+function replaceExecName(str) {
+ // Copied from lib/internal/process/warning.js
+ const baseName = basename(process.argv0 || 'node', '.exe');
+ return str.replaceAll(`${baseName} --`, '* --');
+}
+
describe('v8 output', { concurrency: true }, () => {
function normalize(str) {
return str.replaceAll(snapshot.replaceWindowsPaths(process.cwd()), '')
@@ -15,10 +22,10 @@ describe('v8 output', { concurrency: true }, () => {
.replaceAll('*test*', '*')
.replaceAll(/.*?\*fixtures\*v8\*/g, '(node:*) V8: *') // Replace entire path before fixtures/v8
.replaceAll('*fixtures*v8*', '*')
- .replaceAll('node --', '* --');
}
+
const common = snapshot
- .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceNodeVersion);
+ .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceNodeVersion, replaceExecName);
const defaultTransform = snapshot.transform(common, normalize);
const tests = [
{ name: 'v8/v8_warning.js' },

Просмотреть файл

@ -0,0 +1,23 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Tue, 16 Jan 2024 19:39:10 +0100
Subject: test: match wpt/streams/transferable/transform-stream-members.any.js
to upstream
All four of this calls should fail - see third_party/blink/web_tests/external/wpt/streams/transferable/transform-stream-members.any-expected.txt
diff --git a/test/wpt/status/streams.json b/test/wpt/status/streams.json
index 3b6e0ce6429f9dddb0b1a6882ce9e3a5158300e5..7ec49a378bfc84728b473d5df69675fff1dfdfef 100644
--- a/test/wpt/status/streams.json
+++ b/test/wpt/status/streams.json
@@ -50,7 +50,9 @@
"fail": {
"expected": [
"Transferring [object TransformStream],[object ReadableStream] should fail",
- "Transferring [object TransformStream],[object WritableStream] should fail"
+ "Transferring [object TransformStream],[object WritableStream] should fail",
+ "Transferring [object ReadableStream],[object TransformStream] should fail",
+ "Transferring [object WritableStream],[object TransformStream] should fail"
]
}
},

Просмотреть файл

@ -6,6 +6,7 @@ import pprint
import re
import subprocess
import sys
from lib.config import get_target_arch
ELECTRON_DIR = os.path.abspath(os.path.join(__file__, '..', '..'))
NODE_DIR = os.path.join(ELECTRON_DIR, '..', 'third_party', 'electron_node')

Просмотреть файл

@ -16,7 +16,6 @@
"parallel/test-crypto-key-objects",
"parallel/test-crypto-keygen",
"parallel/test-crypto-keygen-deprecation",
"parallel/test-crypto-modp1-error",
"parallel/test-crypto-padding-aes256",
"parallel/test-crypto-secure-heap",
"parallel/test-dgram-send-cb-quelches-error",
@ -24,7 +23,6 @@
"parallel/test-http2-clean-output",
"parallel/test-http2-https-fallback",
"parallel/test-http2-server-unknown-protocol",
"parallel/test-tls-alpn-server-client",
"parallel/test-https-agent-session-reuse",
"parallel/test-https-options-boolean-check",
"parallel/test-icu-env",
@ -38,6 +36,7 @@
"parallel/test-repl-underscore",
"parallel/test-single-executable-blob-config",
"parallel/test-single-executable-blob-config-errors",
"parallel/test-shadow-realm-custom-loaders",
"parallel/test-snapshot-api",
"parallel/test-snapshot-argv1",
"parallel/test-snapshot-basic",
@ -60,6 +59,7 @@
"parallel/test-snapshot-weak-reference",
"parallel/test-snapshot-worker",
"parallel/test-strace-openat-openssl",
"parallel/test-tls-alpn-server-client",
"parallel/test-tls-cert-chains-concat",
"parallel/test-tls-cert-chains-in-ca",
"parallel/test-tls-cli-max-version-1.2",
@ -97,6 +97,7 @@
"parallel/test-tls-peer-certificate",
"parallel/test-tls-pfx-authorizationerror",
"parallel/test-tls-psk-circuit",
"parallel/test-tls-reduced-SECLEVEL-in-cipher",
"parallel/test-tls-root-certificates",
"parallel/test-tls-server-failed-handshake-emits-clienterror",
"parallel/test-tls-set-ciphers",