diff --git a/DEPS b/DEPS index 2af2b6afda815..5e3720a63f481 100644 --- a/DEPS +++ b/DEPS @@ -17,7 +17,7 @@ vars = { 'chromium_version': '94.0.4590.2', 'node_version': - 'v16.5.0', + 'v16.7.0', 'nan_version': # The following commit hash of NAN is v2.14.2 with *only* changes to the # test suite. This should be updated to a specific tag when one becomes diff --git a/patches/node/.patches b/patches/node/.patches index 2f1edd25915f6..70b779e3d73fb 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -17,7 +17,6 @@ chore_add_context_to_context_aware_module_prevention.patch chore_read_nobrowserglobals_from_global_not_process.patch enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch fix_handle_boringssl_and_openssl_incompatibilities.patch -fix_-wincompatible-pointer-types-discards-qualifiers_error.patch fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch fix_allow_preventing_initializeinspector_in_env.patch src_allow_embedders_to_provide_a_custom_pageallocator_to.patch @@ -26,3 +25,5 @@ fix_account_for_debugger_agent_race_condition.patch fix_use_new_v8_error_message_property_access_format.patch add_should_read_node_options_from_env_option_to_disable_node_options.patch repl_fix_crash_when_sharedarraybuffer_disabled.patch +fix_readbarrier_undefined_symbol_error_on_woa_arm64.patch +src_remove_extra_semicolons_outside_fns.patch diff --git a/patches/node/add_should_read_node_options_from_env_option_to_disable_node_options.patch b/patches/node/add_should_read_node_options_from_env_option_to_disable_node_options.patch index 45fc669dc50a8..920f9a0b27ab7 100644 --- a/patches/node/add_should_read_node_options_from_env_option_to_disable_node_options.patch +++ b/patches/node/add_should_read_node_options_from_env_option_to_disable_node_options.patch @@ -21,10 +21,10 @@ index 1cc7da1ce15f43905ce607adcc1a23ed9d92948a..16af6aec3791df1363682f1ed024c522 Isolate* isolate, const std::vector& args, diff --git a/src/env.h b/src/env.h -index 45210f074a0ca4d57f9fdc5019e8e82540b28b72..c0da6c53028bc9459065caf25c1221f556b22d68 100644 +index 0877f5b1fe2db42acf908e0e1085626fc258ef54..25a8027b9e4ab7817e5ec153ddeccb3c1438912e 100644 --- a/src/env.h +++ b/src/env.h -@@ -1143,6 +1143,8 @@ class Environment : public MemoryRetainer { +@@ -1142,6 +1142,8 @@ class Environment : public MemoryRetainer { inline double trigger_async_id(); inline double get_default_trigger_async_id(); diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index 1f6d288dc7457..055ee650e2a3e 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -7,10 +7,10 @@ This adds GN build files for Node, so we don't have to build with GYP. diff --git a/BUILD.gn b/BUILD.gn new file mode 100644 -index 0000000000000000000000000000000000000000..bd26c3623d3314539609a978270d3ced1d167777 +index 0000000000000000000000000000000000000000..52fb22305bb67c75c9a1cf4bc39cd901420cf7a9 --- /dev/null +++ b/BUILD.gn -@@ -0,0 +1,400 @@ +@@ -0,0 +1,401 @@ +import("//electron/build/asar.gni") +import("//v8/gni/v8.gni") + @@ -205,6 +205,7 @@ index 0000000000000000000000000000000000000000..bd26c3623d3314539609a978270d3ced + ":node_js2c", + "deps/cares", + "deps/histogram", ++ "deps/googletest:gtest", + "deps/llhttp", + "deps/nghttp2", + "deps/uvwasi", @@ -413,18 +414,18 @@ index 0000000000000000000000000000000000000000..bd26c3623d3314539609a978270d3ced +} diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn new file mode 100644 -index 0000000000000000000000000000000000000000..367d537c91be1f62e161a41e737a60cb3522b0f5 +index 0000000000000000000000000000000000000000..8e0aa4b7a858ab432dca9da9ead9fcf44f6009f4 --- /dev/null +++ b/deps/cares/BUILD.gn @@ -0,0 +1,133 @@ +config("cares_config") { -+ include_dirs = [ "include" ] ++ include_dirs = [ "include", "src/lib" ] +} +static_library("cares") { + defines = [ "CARES_STATICLIB" ] + include_dirs = [ + "include", -+ "src", ++ "src/lib", + ] + public_configs = [ ":cares_config" ] + @@ -437,80 +438,80 @@ index 0000000000000000000000000000000000000000..367d537c91be1f62e161a41e737a60cb + + sources = [ + "include/ares.h", ++ "include/ares_dns.h", + "include/ares_rules.h", + "include/ares_version.h", -+ "include/nameser.h", -+ "src/ares__close_sockets.c", -+ "src/ares__get_hostent.c", -+ "src/ares__parse_into_addrinfo.c", -+ "src/ares__read_line.c", -+ "src/ares__readaddrinfo.c", -+ "src/ares__sortaddrinfo.c", -+ "src/ares__timeval.c", -+ "src/ares_android.c", -+ "src/ares_cancel.c", -+ "src/ares_create_query.c", -+ "src/ares_data.c", -+ "src/ares_data.h", -+ "src/ares_destroy.c", -+ "src/ares_dns.h", -+ "src/ares_expand_name.c", -+ "src/ares_expand_string.c", -+ "src/ares_fds.c", -+ "src/ares_free_hostent.c", -+ "src/ares_free_string.c", -+ "src/ares_freeaddrinfo.c", -+ "src/ares_getaddrinfo.c", -+ "src/ares_getenv.h", -+ "src/ares_gethostbyaddr.c", -+ "src/ares_gethostbyname.c", -+ "src/ares_getnameinfo.c", -+ "src/ares_getopt.c", -+ "src/ares_getopt.h", -+ "src/ares_getsock.c", -+ "src/ares_inet_net_pton.h", -+ "src/ares_init.c", -+ "src/ares_ipv6.h", -+ "src/ares_library_init.c", -+ "src/ares_library_init.h", -+ "src/ares_llist.c", -+ "src/ares_llist.h", -+ "src/ares_mkquery.c", -+ "src/ares_nowarn.c", -+ "src/ares_nowarn.h", -+ "src/ares_options.c", -+ "src/ares_parse_a_reply.c", -+ "src/ares_parse_aaaa_reply.c", -+ "src/ares_parse_caa_reply.c", -+ "src/ares_parse_mx_reply.c", -+ "src/ares_parse_naptr_reply.c", -+ "src/ares_parse_ns_reply.c", -+ "src/ares_parse_ptr_reply.c", -+ "src/ares_parse_soa_reply.c", -+ "src/ares_parse_srv_reply.c", -+ "src/ares_parse_txt_reply.c", -+ "src/ares_platform.h", -+ "src/ares_private.h", -+ "src/ares_process.c", -+ "src/ares_query.c", -+ "src/ares_search.c", -+ "src/ares_send.c", -+ "src/ares_setup.h", -+ "src/ares_strcasecmp.c", -+ "src/ares_strcasecmp.h", -+ "src/ares_strdup.c", -+ "src/ares_strdup.h", -+ "src/ares_strerror.c", -+ "src/ares_strsplit.c", -+ "src/ares_timeout.c", -+ "src/ares_version.c", -+ "src/ares_writev.c", -+ "src/ares_writev.h", -+ "src/bitncmp.c", -+ "src/bitncmp.h", -+ "src/inet_net_pton.c", -+ "src/inet_ntop.c", -+ "src/setup_once.h", ++ "src/lib/ares_android.c", ++ "src/lib/ares_cancel.c", ++ "src/lib/ares__close_sockets.c", ++ "src/lib/ares_create_query.c", ++ "src/lib/ares_data.c", ++ "src/lib/ares_data.h", ++ "src/lib/ares_destroy.c", ++ "src/lib/ares_expand_name.c", ++ "src/lib/ares_expand_string.c", ++ "src/lib/ares_fds.c", ++ "src/lib/ares_free_hostent.c", ++ "src/lib/ares_free_string.c", ++ "src/lib/ares_freeaddrinfo.c", ++ "src/lib/ares_getenv.h", ++ "src/lib/ares_getaddrinfo.c", ++ "src/lib/ares_gethostbyaddr.c", ++ "src/lib/ares_gethostbyname.c", ++ "src/lib/ares__get_hostent.c", ++ "src/lib/ares_getnameinfo.c", ++ "src/lib/ares_getsock.c", ++ "src/lib/ares_init.c", ++ "src/lib/ares_ipv6.h", ++ "src/lib/ares_library_init.c", ++ "src/lib/ares_library_init.h", ++ "src/lib/ares_llist.c", ++ "src/lib/ares_llist.h", ++ "src/lib/ares_mkquery.c", ++ "src/lib/ares_nameser.h", ++ "src/lib/ares_nowarn.c", ++ "src/lib/ares_nowarn.h", ++ "src/lib/ares_options.c", ++ "src/lib/ares__parse_into_addrinfo.c", ++ "src/lib/ares_parse_aaaa_reply.c", ++ "src/lib/ares_parse_a_reply.c", ++ "src/lib/ares_parse_caa_reply.c", ++ "src/lib/ares_parse_mx_reply.c", ++ "src/lib/ares_parse_naptr_reply.c", ++ "src/lib/ares_parse_ns_reply.c", ++ "src/lib/ares_parse_ptr_reply.c", ++ "src/lib/ares_parse_soa_reply.c", ++ "src/lib/ares_parse_srv_reply.c", ++ "src/lib/ares_parse_txt_reply.c", ++ "src/lib/ares_platform.h", ++ "src/lib/ares_private.h", ++ "src/lib/ares_process.c", ++ "src/lib/ares_query.c", ++ "src/lib/ares__read_line.c", ++ "src/lib/ares__readaddrinfo.c", ++ "src/lib/ares_search.c", ++ "src/lib/ares_send.c", ++ "src/lib/ares_setup.h", ++ "src/lib/ares__sortaddrinfo.c", ++ "src/lib/ares_strcasecmp.c", ++ "src/lib/ares_strcasecmp.h", ++ "src/lib/ares_strdup.c", ++ "src/lib/ares_strdup.h", ++ "src/lib/ares_strerror.c", ++ "src/lib/ares_strsplit.c", ++ "src/lib/ares_timeout.c", ++ "src/lib/ares__timeval.c", ++ "src/lib/ares_version.c", ++ "src/lib/ares_writev.c", ++ "src/lib/ares_writev.h", ++ "src/lib/bitncmp.c", ++ "src/lib/bitncmp.h", ++ "src/lib/inet_net_pton.c", ++ "src/lib/inet_ntop.c", ++ "src/lib/ares_inet_net_pton.h", ++ "src/lib/setup_once.h", ++ "src/tools/ares_getopt.c", ++ "src/tools/ares_getopt.h", + ] + + if (!is_win) { @@ -526,11 +527,11 @@ index 0000000000000000000000000000000000000000..367d537c91be1f62e161a41e737a60cb + defines += [ "CARES_PULL_WS2TCPIP_H=1" ] + include_dirs += [ "config/win32" ] + sources += [ -+ "src/ares_getenv.c", -+ "src/ares_iphlpapi.h", -+ "src/ares_platform.c", -+ "src/config-win32.h", -+ "src/windows_port.c", ++ "src/lib/ares_getenv.c", ++ "src/lib/ares_iphlpapi.h", ++ "src/lib/ares_platform.c", ++ "src/lib/config-win32.h", ++ "src/lib/windows_port.c", + ] + libs += [ + "ws2_32.lib", @@ -550,18 +551,89 @@ index 0000000000000000000000000000000000000000..367d537c91be1f62e161a41e737a60cb + sources += [ "config/darwin/ares_config.h" ] + } +} +diff --git a/deps/googletest/BUILD.gn b/deps/googletest/BUILD.gn +new file mode 100644 +index 0000000000000000000000000000000000000000..34c4289eb35af910a470db6ef40abc91954ed848 +--- /dev/null ++++ b/deps/googletest/BUILD.gn +@@ -0,0 +1,63 @@ ++config("gtest_config") { ++ include_dirs = [ "include" ] ++ defines = [ "UNIT_TEST" ] ++} ++ ++static_library("gtest") { ++ include_dirs = [ ++ "include", ++ "." # src ++ ] ++ ++ public_configs = [ ":gtest_config" ] ++ ++ cflags_cc = [ ++ "-Wno-c++98-compat-extra-semi", ++ "-Wno-unused-const-variable" ++ ] ++ ++ defines = [ ++ "GTEST_HAS_POSIX_RE=0", ++ "GTEST_LANG_CXX11=1", ++ ] ++ ++ sources = [ ++ "include/gtest/gtest_pred_impl.h", ++ "include/gtest/gtest_prod.h", ++ "include/gtest/gtest-death-test.h", ++ "include/gtest/gtest-matchers.h", ++ "include/gtest/gtest-message.h", ++ "include/gtest/gtest-param-test.h", ++ "include/gtest/gtest-printers.h", ++ "include/gtest/gtest-spi.h", ++ "include/gtest/gtest-test-part.h", ++ "include/gtest/gtest-typed-test.h", ++ "include/gtest/gtest.h", ++ "include/gtest/internal/gtest-death-test-internal.h", ++ "include/gtest/internal/gtest-filepath.h", ++ "include/gtest/internal/gtest-internal.h", ++ "include/gtest/internal/gtest-param-util.h", ++ "include/gtest/internal/gtest-port-arch.h", ++ "include/gtest/internal/gtest-port.h", ++ "include/gtest/internal/gtest-string.h", ++ "include/gtest/internal/gtest-type-util.h", ++ "include/gtest/internal/custom/gtest-port.h", ++ "include/gtest/internal/custom/gtest-printers.h", ++ "include/gtest/internal/custom/gtest.h", ++ "src/gtest-all.cc", ++ "src/gtest-death-test.cc", ++ "src/gtest-filepath.cc", ++ "src/gtest-internal-inl.h", ++ "src/gtest-matchers.cc", ++ "src/gtest-port.cc", ++ "src/gtest-printers.cc", ++ "src/gtest-test-part.cc", ++ "src/gtest-typed-test.cc", ++ "src/gtest.cc", ++ ] ++} ++ ++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..e741a2a9c238a782a674ddcb9a1f98de5b36db79 +index 0000000000000000000000000000000000000000..8ba89a379fa2937b4b2fa5092f18727c7d0788a6 --- /dev/null +++ b/deps/histogram/BUILD.gn -@@ -0,0 +1,17 @@ +@@ -0,0 +1,19 @@ +config("histogram_config") { + include_dirs = [ "src" ] + + cflags = [ + "-Wno-implicit-function-declaration", + "-Wno-incompatible-pointer-types", ++ "-Wno-unused-function", ++ "-Wno-atomic-alignment", + ] +} + @@ -650,10 +722,10 @@ index 0000000000000000000000000000000000000000..58eb2f87990d2cbad711aa39f2a73b20 +} diff --git a/deps/uv/BUILD.gn b/deps/uv/BUILD.gn new file mode 100644 -index 0000000000000000000000000000000000000000..6f30ab169f24e2d8b1c4ec4e927451d82194018c +index 0000000000000000000000000000000000000000..11a65c2334acc653614577fa1f95791dad72e9e3 --- /dev/null +++ b/deps/uv/BUILD.gn -@@ -0,0 +1,192 @@ +@@ -0,0 +1,193 @@ +config("libuv_config") { + include_dirs = [ "include" ] + @@ -826,6 +898,7 @@ index 0000000000000000000000000000000000000000..6f30ab169f24e2d8b1c4ec4e927451d8 + if (is_linux) { + defines += [ "_GNU_SOURCE" ] + sources += [ ++ "src/unix/epoll.c", + "src/unix/linux-core.c", + "src/unix/linux-inotify.c", + "src/unix/linux-syscalls.c", @@ -892,10 +965,10 @@ index 0000000000000000000000000000000000000000..2c9d2826c85bdd033f1df1d6188df636 +} diff --git a/filenames.json b/filenames.json new file mode 100644 -index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597fa4473e50 +index 0000000000000000000000000000000000000000..4f5588c17cf9720dab05a82ee64ba56b1860ab78 --- /dev/null +++ b/filenames.json -@@ -0,0 +1,544 @@ +@@ -0,0 +1,548 @@ +// This file is automatically generated by generate_gn_filenames_json.py +// DO NOT EDIT +{ @@ -913,12 +986,6 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + ] + }, + { -+ "dest_dir": "include/node//cppgc/", -+ "files": [ -+ "//v8/include/cppgc/common.h" -+ ] -+ }, -+ { + "dest_dir": "include/node//", + "files": [ + "//v8/include/v8-internal.h", @@ -938,6 +1005,18 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + ] + }, + { ++ "dest_dir": "include/node//cppgc/", ++ "files": [ ++ "//v8/include/cppgc/common.h" ++ ] ++ }, ++ { ++ "dest_dir": "include/node//", ++ "files": [ ++ "deps/uv/include/uv.h" ++ ] ++ }, ++ { + "dest_dir": "include/node//uv/", + "files": [ + "deps/uv/include/uv/aix.h", @@ -956,12 +1035,6 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + "deps/uv/include/uv/version.h", + "deps/uv/include/uv/win.h" + ] -+ }, -+ { -+ "dest_dir": "include/node//", -+ "files": [ -+ "deps/uv/include/uv.h" -+ ] + } + ], + "library_files": [ @@ -1025,6 +1098,7 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + "lib/timers/promises.js", + "lib/path/win32.js", + "lib/path/posix.js", ++ "lib/stream/consumers.js", + "lib/stream/promises.js", + "lib/stream/web.js", + "lib/internal/constants.js", @@ -1100,6 +1174,7 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + "lib/internal/webstreams/writablestream.js", + "lib/internal/webstreams/readablestream.js", + "lib/internal/webstreams/queuingstrategies.js", ++ "lib/internal/webstreams/encoding.js", + "lib/internal/webstreams/transformstream.js", + "lib/internal/webstreams/transfer.js", + "lib/internal/bootstrap/loaders.js", @@ -1155,7 +1230,7 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + "lib/internal/child_process/serialization.js", + "lib/internal/debugger/inspect_repl.js", + "lib/internal/debugger/inspect_client.js", -+ "lib/internal/debugger/_inspect.js", ++ "lib/internal/debugger/inspect.js", + "lib/internal/worker/io.js", + "lib/internal/worker/js_transferable.js", + "lib/internal/main/repl.js", @@ -1193,6 +1268,8 @@ index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597f + "lib/internal/fs/dir.js", + "lib/internal/fs/streams.js", + "lib/internal/fs/utils.js", ++ "lib/internal/fs/cp/cp.js", ++ "lib/internal/fs/cp/cp-sync.js", + "lib/internal/perf/nodetiming.js", + "lib/internal/perf/usertiming.js", + "lib/internal/perf/performance_entry.js", @@ -1646,7 +1723,7 @@ index 0000000000000000000000000000000000000000..d1d6b51e8c0c5bc6a5d09e217eb30483 + args = rebase_path(inputs + outputs, root_build_dir) +} diff --git a/src/node_version.h b/src/node_version.h -index 0523885212d429ee5c4142137524cb127d8adc97..116815364055a01f0c0619f0f22e9a387c2f2e2e 100644 +index ee1263b8eaaab696b213b308d4aeb01359a289c8..5c4bda9aa24ee8f5db89d20772c28e66d574bcaa 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -89,7 +89,10 @@ @@ -1679,7 +1756,7 @@ index 0000000000000000000000000000000000000000..01f62d4ae6e3b9d539444e3dff069f00 + main(sys.argv[1:]) diff --git a/tools/generate_gn_filenames_json.py b/tools/generate_gn_filenames_json.py new file mode 100755 -index 0000000000000000000000000000000000000000..ece315d915f0a7b2c8e823caccba7ffec8420fdf +index 0000000000000000000000000000000000000000..8f884a41f57630ac432eb85ebfc9b8bc82cddaca --- /dev/null +++ b/tools/generate_gn_filenames_json.py @@ -0,0 +1,75 @@ @@ -1689,16 +1766,17 @@ index 0000000000000000000000000000000000000000..ece315d915f0a7b2c8e823caccba7ffe +import sys + +import install -+import subprocess ++ ++from utils import SearchFiles + +def LoadPythonDictionary(path): + file_string = open(path).read() + try: + file_data = eval(file_string, {'__builtins__': None}, None) -+ except SyntaxError, e: ++ except SyntaxError as e: + e.filename = path + raise -+ except Exception, e: ++ except Exception as e: + raise Exception("Unexpected error while reading %s: %s" % (path, str(e))) + + assert isinstance(file_data, dict), "%s does not eval to a dictionary" % path @@ -1732,8 +1810,7 @@ index 0000000000000000000000000000000000000000..ece315d915f0a7b2c8e823caccba7ffe + files = [f.replace('deps/v8/', '//v8/', 1) for f in files] + return files + -+ cwd = os.path.join(os.getcwd(), 'tools/search_files.py') -+ lib_files = subprocess.check_output('{} {} --ext js lib'.format('python3', cwd), shell=True).split() ++ lib_files = SearchFiles('lib', 'js') + out['library_files'] = filter_v8_files(lib_files) + out['library_files'] += filter_v8_files(node_gyp['variables']['deps_files']) + diff --git a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch index a8a9359880d08..8c6063c0eab23 100644 --- a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch +++ b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch @@ -35,7 +35,7 @@ index b45af42d12ff7df8a9e125e87f51af3456811c23..c84ff7feb07aebf656ada7e37d812d9d async function* watch(filename, options = {}) { const path = toNamespacedPath(getValidatedPath(filename)); diff --git a/src/node_native_module.cc b/src/node_native_module.cc -index 2642982330e8cff166d10682af3d847105dc5c2e..f5491b416203877b89db69bde44f4ff50901ed8b 100644 +index c4fd96c75c1862289d9cabccfbc9bfc3a5ee523d..3c9e5498e6b9c62813ef93ca77558ead753ac797 100644 --- a/src/node_native_module.cc +++ b/src/node_native_module.cc @@ -20,6 +20,7 @@ NativeModuleLoader NativeModuleLoader::instance_; diff --git a/patches/node/chore_add_context_to_context_aware_module_prevention.patch b/patches/node/chore_add_context_to_context_aware_module_prevention.patch index 1b7e544c997c4..e1271a8ce6863 100644 --- a/patches/node/chore_add_context_to_context_aware_module_prevention.patch +++ b/patches/node/chore_add_context_to_context_aware_module_prevention.patch @@ -8,7 +8,7 @@ modules from being used in the renderer process. This should be upstreamed as a customizable error message. diff --git a/src/node_binding.cc b/src/node_binding.cc -index 3c05e553c8e61456205a1f632c903055650a3fc6..292204024f64e6457f1344db1c74d006b7233c82 100644 +index 8b8389ae53608afedc9cc0ad2a6c8461b7aa893e..e79ddab7d73c6297ef1dc74b2a0ce469bf49e37c 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -4,6 +4,7 @@ @@ -19,7 +19,7 @@ index 3c05e553c8e61456205a1f632c903055650a3fc6..292204024f64e6457f1344db1c74d006 #include "util.h" #include -@@ -465,7 +466,12 @@ void DLOpen(const FunctionCallbackInfo& args) { +@@ -466,7 +467,12 @@ void DLOpen(const FunctionCallbackInfo& args) { if (mp->nm_context_register_func == nullptr) { if (env->force_context_aware()) { dlib->Close(); diff --git a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch index 0176d11676b67..5f84bfb1d8cd6 100644 --- a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch +++ b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch @@ -8,10 +8,10 @@ they use themselves as the entry point. We should try to upstream some form of this. diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js -index c90a19d5eed72a55cb9ee89dd2471a32a30c1377..68a52e1ce1f0a2bf4fc2b19ea735948cf6586e06 100644 +index 076eb528af016b9143985685bc6d1e7c14fa80e6..40370102a2f0b6e692761626653c232a77810fbc 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js -@@ -103,10 +103,12 @@ function patchProcessObject(expandArgv1) { +@@ -104,10 +104,12 @@ function patchProcessObject(expandArgv1) { if (expandArgv1 && process.argv[1] && !StringPrototypeStartsWith(process.argv[1], '-')) { // Expand process.argv[1] into a full path. @@ -29,10 +29,10 @@ index c90a19d5eed72a55cb9ee89dd2471a32a30c1377..68a52e1ce1f0a2bf4fc2b19ea735948c // TODO(joyeecheung): most of these should be deprecated and removed, diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js -index afb1eca73a2d91b76d098114de18ad7e29846e5c..01070c214e961d31ac508cfca669df2733abbff6 100644 +index 40655b66fd2a50dac01f88d38457de4602022381..95147ec8a95761b0654e8403578c2c67191834ad 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js -@@ -1069,6 +1069,13 @@ Module.prototype._compile = function(content, filename) { +@@ -1075,6 +1075,13 @@ Module.prototype._compile = function(content, filename) { if (getOptionValue('--inspect-brk') && process._eval == null) { if (!resolvedArgv) { // We enter the repl if we're not given a filename argument. diff --git a/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch b/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch index 43443ecdeec02..b431071f4ea3f 100644 --- a/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch +++ b/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch @@ -8,7 +8,7 @@ node modules will have different (wrong) ideas about how v8 structs are laid out in memory on 64-bit machines, and will summarily fail to work. diff --git a/common.gypi b/common.gypi -index 65729132b233dc5801f142f05a00253ac951e66a..e717a0b76513401daee6910502ea580485a20612 100644 +index df463864778a30b2d2fd769a82ab3c066730b559..ae3f2d69f76f46cbb8cb3f8b32da592160b66009 100644 --- a/common.gypi +++ b/common.gypi @@ -64,7 +64,7 @@ diff --git a/patches/node/expose_get_builtin_module_function.patch b/patches/node/expose_get_builtin_module_function.patch index 89bdf1887b4a1..c4e392fe84a16 100644 --- a/patches/node/expose_get_builtin_module_function.patch +++ b/patches/node/expose_get_builtin_module_function.patch @@ -9,10 +9,10 @@ modules to sandboxed renderers. TODO(codebytere): remove and replace with a public facing API. diff --git a/src/node_binding.cc b/src/node_binding.cc -index b5e42af79510b690a1687d4d32a2a583704a397f..3c05e553c8e61456205a1f632c903055650a3fc6 100644 +index 3c9776e655d0e458cdd3ab7c3adafff7de339cc5..8b8389ae53608afedc9cc0ad2a6c8461b7aa893e 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc -@@ -607,6 +607,10 @@ void GetInternalBinding(const FunctionCallbackInfo& args) { +@@ -608,6 +608,10 @@ void GetInternalBinding(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(exports); } diff --git a/patches/node/feat_add_uv_loop_watcher_queue_code.patch b/patches/node/feat_add_uv_loop_watcher_queue_code.patch index d5a78f7b72332..610da58034be2 100644 --- a/patches/node/feat_add_uv_loop_watcher_queue_code.patch +++ b/patches/node/feat_add_uv_loop_watcher_queue_code.patch @@ -6,10 +6,10 @@ Subject: feat: add uv_loop watcher_queue code Electron's Node Integration works by listening to Node's backend file descriptor in a separate thread; when an event is ready the backend file descriptor will trigger a new event for it, and the main thread will then iterate the libuv loop. For certain operations (ex. adding a timeout task) the backend file descriptor isn't informed, & as a result the main thread doesn't know it needs to iterate the libuv loop so the timeout task will never execute until something else trigger a new event. This commit should be removed when https://github.com/libuv/libuv/pull/1921 is merged diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h -index 1e1fc94bfcc3dca90620d09fab1fe60060e17056..253f23e14d09a8c8d5c51545f71b7f03f064dbd6 100644 +index 77503bde9f28e4769ae3832fb2117e632e9c9268..49930027bdad013d8fcbc375c534d67cc5201bc7 100644 --- a/deps/uv/include/uv.h +++ b/deps/uv/include/uv.h -@@ -1789,6 +1789,8 @@ union uv_any_req { +@@ -1802,6 +1802,8 @@ union uv_any_req { struct uv_loop_s { /* User data - use this for whatever. */ void* data; @@ -19,10 +19,10 @@ index 1e1fc94bfcc3dca90620d09fab1fe60060e17056..253f23e14d09a8c8d5c51545f71b7f03 unsigned int active_handles; void* handle_queue[2]; diff --git a/deps/uv/src/unix/core.c b/deps/uv/src/unix/core.c -index 63f268f795f10072fe1c430d1242e3774bf9eea9..2811f063eef7329f87fbe43b28729c6b25f0a75b 100644 +index 71e9c525c4a77b8b5322e8516c58329100a8d951..a6425294086ff2f1435fdd6866380d3aaaf68200 100644 --- a/deps/uv/src/unix/core.c +++ b/deps/uv/src/unix/core.c -@@ -897,8 +897,11 @@ void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) { +@@ -906,8 +906,11 @@ void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) { return; #endif @@ -35,7 +35,7 @@ index 63f268f795f10072fe1c430d1242e3774bf9eea9..2811f063eef7329f87fbe43b28729c6b if (loop->watchers[w->fd] == NULL) { loop->watchers[w->fd] = w; -@@ -933,8 +936,11 @@ void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) { +@@ -942,8 +945,11 @@ void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) { loop->nfds--; } } @@ -48,7 +48,7 @@ index 63f268f795f10072fe1c430d1242e3774bf9eea9..2811f063eef7329f87fbe43b28729c6b } -@@ -951,6 +957,8 @@ void uv__io_close(uv_loop_t* loop, uv__io_t* w) { +@@ -960,6 +966,8 @@ void uv__io_close(uv_loop_t* loop, uv__io_t* w) { void uv__io_feed(uv_loop_t* loop, uv__io_t* w) { if (QUEUE_EMPTY(&w->pending_queue)) QUEUE_INSERT_TAIL(&loop->pending_queue, &w->pending_queue); diff --git a/patches/node/feat_initialize_asar_support.patch b/patches/node/feat_initialize_asar_support.patch index 8b528c67d8841..0e88671ac585d 100644 --- a/patches/node/feat_initialize_asar_support.patch +++ b/patches/node/feat_initialize_asar_support.patch @@ -6,10 +6,10 @@ Subject: feat: initialize asar support This patch initializes asar support in Node.js. diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js -index 3b69844dc4ea0c4e17a74ea514c4f0dc390e3a61..c90a19d5eed72a55cb9ee89dd2471a32a30c1377 100644 +index 0906b35edc5ff38fb7730eba9cebcc0e472fe56c..076eb528af016b9143985685bc6d1e7c14fa80e6 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js -@@ -75,6 +75,7 @@ function prepareMainThreadExecution(expandArgv1 = false) { +@@ -76,6 +76,7 @@ function prepareMainThreadExecution(expandArgv1 = false) { assert(!CJSLoader.hasLoadedAnyUserCJSModule); loadPreloadModules(); initializeFrozenIntrinsics(); @@ -17,7 +17,7 @@ index 3b69844dc4ea0c4e17a74ea514c4f0dc390e3a61..c90a19d5eed72a55cb9ee89dd2471a32 } function patchProcessObject(expandArgv1) { -@@ -475,6 +476,10 @@ function loadPreloadModules() { +@@ -482,6 +483,10 @@ function loadPreloadModules() { } } diff --git a/patches/node/fix_-wincompatible-pointer-types-discards-qualifiers_error.patch b/patches/node/fix_-wincompatible-pointer-types-discards-qualifiers_error.patch deleted file mode 100644 index 702435846235d..0000000000000 --- a/patches/node/fix_-wincompatible-pointer-types-discards-qualifiers_error.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Shelley Vohr -Date: Tue, 1 Sep 2020 10:17:37 -0700 -Subject: fix: -Wincompatible-pointer-types-discards-qualifiers error - -Fixes an 'assigment to 'char *' from 'const char *'' error in libuv. - -This will be upstreamed. - -diff --git a/deps/uv/src/win/fs.c b/deps/uv/src/win/fs.c -index a083b5e82c8c4294d45a65ab4d01fa3ceb650cdd..5eaaee3b0c6a5f52e10b5749eae4b21c5c059322 100644 ---- a/deps/uv/src/win/fs.c -+++ b/deps/uv/src/win/fs.c -@@ -1237,8 +1237,8 @@ void fs__mktemp(uv_fs_t* req, uv__fs_mktemp_func func) { - size_t len; - uint64_t v; - char* path; -- -- path = req->path; -+ -+ path = (char*) req->path; - len = wcslen(req->file.pathw); - ep = req->file.pathw + len; - if (len < num_x || wcsncmp(ep - num_x, L"XXXXXX", num_x)) { diff --git a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch index f985d6a049ab2..4fabeb0a0c297 100644 --- a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch +++ b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch @@ -7,7 +7,7 @@ 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 71862791dae3be5f05fbe00b91df6240473debb1..65729132b233dc5801f142f05a00253ac951e66a 100644 +index fcd1cebeb560079b8b3b520e85c6c53bd1e779e0..df463864778a30b2d2fd769a82ab3c066730b559 100644 --- a/common.gypi +++ b/common.gypi @@ -81,6 +81,23 @@ diff --git a/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch b/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch index b77bb948eb69f..5225469d81010 100644 --- a/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch +++ b/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch @@ -6,7 +6,7 @@ Subject: fix: add v8_enable_reverse_jsargs defines in common.gypi This can be removed once node upgrades V8 and inevitably has to do this exact same thing. Also hi node people if you are looking at this. diff --git a/common.gypi b/common.gypi -index e717a0b76513401daee6910502ea580485a20612..e7c50b5e46624b537de3ffed51fc21a15b666dc8 100644 +index ae3f2d69f76f46cbb8cb3f8b32da592160b66009..9e25bbed1802c9531701235c438fe33076c3f326 100644 --- a/common.gypi +++ b/common.gypi @@ -65,6 +65,7 @@ @@ -25,7 +25,7 @@ index e717a0b76513401daee6910502ea580485a20612..e7c50b5e46624b537de3ffed51fc21a1 ##### end V8 defaults ##### # When building native modules using 'npm install' with the system npm, -@@ -381,6 +383,9 @@ +@@ -384,6 +386,9 @@ ['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', { 'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'], }], diff --git a/patches/node/fix_allow_preventing_initializeinspector_in_env.patch b/patches/node/fix_allow_preventing_initializeinspector_in_env.patch index 81fa7a2bf7361..17adcc66aee17 100644 --- a/patches/node/fix_allow_preventing_initializeinspector_in_env.patch +++ b/patches/node/fix_allow_preventing_initializeinspector_in_env.patch @@ -51,10 +51,10 @@ index b3b1ea908253b9240cc37931f34b2a8c8c9fa3ab..dc37298aa0e13bb79030123f38070d02 return emit_filehandle_warning_; } diff --git a/src/env.h b/src/env.h -index e1b89261fcb1e94220424aae2273db9fba010331..45210f074a0ca4d57f9fdc5019e8e82540b28b72 100644 +index 24b4a48b5f9657cc115aaa50e0f7354534ed5484..0877f5b1fe2db42acf908e0e1085626fc258ef54 100644 --- a/src/env.h +++ b/src/env.h -@@ -1199,6 +1199,7 @@ class Environment : public MemoryRetainer { +@@ -1198,6 +1198,7 @@ class Environment : public MemoryRetainer { inline bool owns_process_state() const; inline bool owns_inspector() const; inline bool tracks_unmanaged_fds() const; diff --git a/patches/node/fix_crypto_tests_to_run_with_bssl.patch b/patches/node/fix_crypto_tests_to_run_with_bssl.patch index 82ee71b2e31bf..fe11af1b1e289 100644 --- a/patches/node/fix_crypto_tests_to_run_with_bssl.patch +++ b/patches/node/fix_crypto_tests_to_run_with_bssl.patch @@ -489,12 +489,12 @@ index af2146982c7a3bf7bd7527f44e4b17a3b605026e..f6b91f675cfea367c608892dee078b56 // Non-XOF hash functions should accept valid outputLength options as well. assert.strictEqual(crypto.createHash('sha224', { outputLength: 28 }) diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js -index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede5658ac1bc0 100644 +index aa03a0379a291a4632b68d428d4e1875d60166a3..a6862ace1fa73473b406fe4513b9e7a99296d365 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js -@@ -310,11 +310,11 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -307,11 +307,11 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', }, common.hasOpenSSL3 ? { - message: 'Failed to read private key', + message: 'error:1E08010C:DECODER routines::unsupported', } : { - message: 'error:0909006C:PEM routines:get_name:no start line', - code: 'ERR_OSSL_PEM_NO_START_LINE', @@ -509,7 +509,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 }); // This should not abort either: https://github.com/nodejs/node/issues/29904 -@@ -337,8 +337,8 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -334,8 +334,8 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', message: /error:1E08010C:DECODER routines::unsupported/, library: 'DECODER routines' } : { @@ -520,7 +520,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 }); } -@@ -352,6 +352,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -349,6 +349,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', d: 'wVK6M3SMhQh3NK-7GRrSV-BVWQx1FO5pW8hhQeu_NdA', kty: 'OKP' } }, @@ -528,7 +528,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 { private: fixtures.readKey('ed448_private.pem', 'ascii'), public: fixtures.readKey('ed448_public.pem', 'ascii'), keyType: 'ed448', -@@ -383,6 +384,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -380,6 +381,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', 'S0jlSYJk', kty: 'OKP' } }, @@ -536,7 +536,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 ].forEach((info) => { const keyType = info.keyType; -@@ -424,7 +426,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -421,7 +423,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', } } }); @@ -545,7 +545,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 [ { private: fixtures.readKey('ec_p256_private.pem', 'ascii'), public: fixtures.readKey('ec_p256_public.pem', 'ascii'), -@@ -517,7 +519,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -514,7 +516,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', } } }); @@ -554,16 +554,16 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 { // Reading an encrypted key without a passphrase should fail. assert.throws(() => createPrivateKey(privateDsa), common.hasOpenSSL3 ? { -@@ -550,7 +552,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -546,7 +548,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', }), { message: common.hasOpenSSL3 ? - 'error:07880109:common libcrypto routines::interrupted or cancelled' : + 'error:1E08010C:DECODER routines::unsupported' : - /bad decrypt/ -+ /bad decrypt|BAD_DECRYPT/ ++ /bad decrypt|error:1e000065:Cipher functions:OPENSSL_internal:BAD_DECRYPT/ }); const publicKey = createPublicKey(publicDsa); -@@ -573,7 +575,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -569,7 +571,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', () => privateKey.export({ format: 'jwk' }), { code: 'ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE' }); } @@ -572,7 +572,7 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 { // Test RSA-PSS. { -@@ -719,7 +721,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', +@@ -715,7 +717,7 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', } } } @@ -582,28 +582,28 @@ index 3159b0da3f2901aab17e0b360eda84decaed9eb3..995b7f6b45bd0aa83eef143b15dede56 // Exporting an encrypted private key requires a cipher const privateKey = createPrivateKey(privatePem); diff --git a/test/parallel/test-crypto-keygen.js b/test/parallel/test-crypto-keygen.js -index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed989991473 100644 +index ed5986e6bfd4211a1cc22fa94aaf68fc1013133f..08986a6793a39b275277c8bf188316f669a53c63 100644 --- a/test/parallel/test-crypto-keygen.js +++ b/test/parallel/test-crypto-keygen.js -@@ -300,6 +300,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -297,6 +297,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); })); } -+ /* ++/* { // Test RSA-PSS. generateKeyPair('rsa-pss', { -@@ -342,7 +343,9 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -339,7 +340,9 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); testSignVerify(publicKey, privateKey); })); } +*/ -+ /* ++/* { const privateKeyEncoding = { type: 'pkcs8', -@@ -412,6 +415,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -409,6 +412,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); }); })); } @@ -611,7 +611,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 { // Test async elliptic curve key generation, e.g. for ECDSA, with a SEC1 -@@ -436,6 +440,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -433,6 +437,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); testSignVerify(publicKey, privateKey); })); @@ -619,7 +619,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test async elliptic curve key generation, e.g. for ECDSA, with a SEC1 // private key with paramEncoding explicit. generateKeyPair('ec', { -@@ -457,6 +462,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -454,6 +459,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); testSignVerify(publicKey, privateKey); })); @@ -627,7 +627,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Do the same with an encrypted private key. generateKeyPair('ec', { -@@ -492,6 +498,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -489,6 +495,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); testSignVerify(publicKey, { key: privateKey, passphrase: 'secret' }); })); @@ -635,7 +635,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Do the same with an encrypted private key with paramEncoding explicit. generateKeyPair('ec', { namedCurve: 'prime256v1', -@@ -525,6 +532,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -522,6 +529,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); testSignVerify(publicKey, { key: privateKey, passphrase: 'secret' }); })); @@ -643,7 +643,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 } { -@@ -566,6 +574,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -562,6 +570,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); }); })); @@ -651,15 +651,31 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test async elliptic curve key generation, e.g. for ECDSA, with an encrypted // private key with paramEncoding explicit. generateKeyPair('ec', { -@@ -603,6 +612,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); - passphrase: 'top secret' - }); - })); +@@ -686,6 +695,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); + } + } + }); + */ } // Test invalid parameter encoding. -@@ -951,6 +961,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -709,6 +719,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); + message: "The property 'options.paramEncoding' is invalid. " + + "Received 'otherEncoding'" + }); ++ /* + assert.throws(() => generateKeyPairSync('dsa', { + modulusLength: 4096, + publicKeyEncoding: { +@@ -722,6 +733,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); + code: 'ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE', + message: 'Unsupported JWK Key Type.' + }); ++ */ + assert.throws(() => generateKeyPairSync('ec', { + namedCurve: 'secp224r1', + publicKeyEncoding: { +@@ -1060,6 +1072,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); } } @@ -667,7 +683,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test DSA parameters. { // Test invalid modulus lengths. -@@ -978,6 +989,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -1087,6 +1100,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); }); } } @@ -675,7 +691,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test EC parameters. { -@@ -1022,13 +1034,13 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -1131,13 +1145,13 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); })); generateKeyPair('ec', { @@ -692,7 +708,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 }); })); } -@@ -1036,7 +1048,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -1145,7 +1159,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); // Test EdDSA key generation. { if (!/^1\.1\.0/.test(process.versions.openssl)) { @@ -701,7 +717,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 generateKeyPair(keyType, common.mustSucceed((publicKey, privateKey) => { assert.strictEqual(publicKey.type, 'public'); assert.strictEqual(publicKey.asymmetricKeyType, keyType); -@@ -1050,6 +1062,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -1159,6 +1173,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); } } @@ -709,7 +725,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test classic Diffie-Hellman key generation. { generateKeyPair('dh', { -@@ -1162,6 +1175,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); +@@ -1271,6 +1286,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); }); } } @@ -717,7 +733,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 // Test invalid key encoding types. { -@@ -1362,6 +1376,7 @@ if (!common.hasOpenSSL3) { +@@ -1471,6 +1487,7 @@ if (!common.hasOpenSSL3) { }, common.mustSucceed((publicKey, privateKey) => { assert.strictEqual(publicKey.type, 'public'); @@ -725,7 +741,7 @@ index 4612fc4a1ac40a27ccc2c70ac11e32f0fdcaa2c3..a4d604cf0318cfb0771e3573245b1ed9 for (const passphrase of ['', Buffer.alloc(0)]) { const privateKeyObject = createPrivateKey({ passphrase, -@@ -1369,6 +1384,7 @@ if (!common.hasOpenSSL3) { +@@ -1478,6 +1495,7 @@ if (!common.hasOpenSSL3) { }); assert.strictEqual(privateKeyObject.asymmetricKeyType, 'rsa'); } @@ -799,10 +815,10 @@ index 1785f5eef3d202976666081d09850ed744d83446..e88227a215ba4f7fa196f7642ae694a5 }); diff --git a/test/parallel/test-crypto-rsa-dsa.js b/test/parallel/test-crypto-rsa-dsa.js -index 567d8650c5a1772ce8d4e0901f41a07918f3f661..979d372a32723a492c85da91ca127da77f9c08e2 100644 +index 9afcb38616dafd6da1ab7b5843d68f4f796ca9a6..00d3381056a5a40c549f06d74c130149ba4abc8c 100644 --- a/test/parallel/test-crypto-rsa-dsa.js +++ b/test/parallel/test-crypto-rsa-dsa.js -@@ -31,12 +31,11 @@ const dsaPkcs8KeyPem = fixtures.readKey('dsa_private_pkcs8.pem'); +@@ -28,12 +28,11 @@ const dsaPkcs8KeyPem = fixtures.readKey('dsa_private_pkcs8.pem'); const ec = new TextEncoder(); const openssl1DecryptError = { @@ -820,7 +836,7 @@ index 567d8650c5a1772ce8d4e0901f41a07918f3f661..979d372a32723a492c85da91ca127da7 }; const decryptError = common.hasOpenSSL3 ? -@@ -400,7 +399,7 @@ assert.throws(() => { +@@ -397,7 +396,7 @@ assert.throws(() => { assert.strictEqual(verify2.verify(publicKey, signature, 'hex'), true); } @@ -829,16 +845,16 @@ index 567d8650c5a1772ce8d4e0901f41a07918f3f661..979d372a32723a492c85da91ca127da7 // // Test DSA signing and verification // -@@ -475,3 +474,4 @@ const input = 'I AM THE WALRUS'; +@@ -472,3 +471,4 @@ const input = 'I AM THE WALRUS'; assert.strictEqual(verify.verify(dsaPubPem, signature, 'hex'), true); } +*/ diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js -index 15fa3db4a69f191d0d4458bb01c1d23508f07754..27f7d15103276e68b5c73061d0abd11d52b66c9c 100644 +index 444135538ccff8a705806941843717be954ed143..fe07bbbf0b18ae4ff344cb972600d5ee3bd8ede3 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js -@@ -32,6 +32,7 @@ const keySize = 2048; +@@ -29,6 +29,7 @@ const keySize = 2048; 'instance when called without `new`'); } @@ -846,7 +862,7 @@ index 15fa3db4a69f191d0d4458bb01c1d23508f07754..27f7d15103276e68b5c73061d0abd11d // Test handling of exceptional conditions { const library = { -@@ -72,6 +73,7 @@ const keySize = 2048; +@@ -69,6 +70,7 @@ const keySize = 2048; delete Object.prototype.opensslErrorStack; } @@ -854,7 +870,7 @@ index 15fa3db4a69f191d0d4458bb01c1d23508f07754..27f7d15103276e68b5c73061d0abd11d assert.throws( () => crypto.createVerify('SHA256').verify({ -@@ -345,15 +347,17 @@ assert.throws( +@@ -342,15 +344,17 @@ assert.throws( padding: crypto.constants.RSA_PKCS1_OAEP_PADDING }); }, common.hasOpenSSL3 ? { @@ -876,7 +892,7 @@ index 15fa3db4a69f191d0d4458bb01c1d23508f07754..27f7d15103276e68b5c73061d0abd11d }); } -@@ -423,10 +427,12 @@ assert.throws( +@@ -420,10 +424,12 @@ assert.throws( public: fixtures.readKey('ed25519_public.pem', 'ascii'), algo: null, sigLen: 64 }, @@ -889,7 +905,7 @@ index 15fa3db4a69f191d0d4458bb01c1d23508f07754..27f7d15103276e68b5c73061d0abd11d { private: fixtures.readKey('rsa_private_2048.pem', 'ascii'), public: fixtures.readKey('rsa_public_2048.pem', 'ascii'), algo: 'sha1', -@@ -497,7 +503,7 @@ assert.throws( +@@ -494,7 +500,7 @@ assert.throws( { const data = Buffer.from('Hello world'); @@ -1192,10 +1208,10 @@ index ee48a61f4ac8f5e8e4cec96eb03d75cb1c45f56a..5108bbf7499f29bafffda76f3c5270aa // Test PBKDF2 bit derivation { diff --git a/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js b/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js -index e01152c07f294d834f70d94bc105b77ea008c017..177bfdf4702afbbbede15e0ae37c144cfabeae46 100644 +index 151eebd36c9765df086a020ba42920b2442b1b77..efe97ff2499cba909ac5500d827364fa389a0469 100644 --- a/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js +++ b/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js -@@ -130,7 +130,7 @@ async function testEncryptionLongPlaintext({ algorithm, +@@ -127,7 +127,7 @@ async function testEncryptionLongPlaintext({ algorithm, return assert.rejects( subtle.encrypt(algorithm, publicKey, newplaintext), { @@ -1205,10 +1221,10 @@ index e01152c07f294d834f70d94bc105b77ea008c017..177bfdf4702afbbbede15e0ae37c144c } diff --git a/test/parallel/test-webcrypto-wrap-unwrap.js b/test/parallel/test-webcrypto-wrap-unwrap.js -index 54a5a782a09586ff7e02ab23d8c8ca984106f036..8624d1fcf77254bb256a6f4bbde2ff20e148a02b 100644 +index 1094845c73e14313860ad476fb7baba2a11b5af4..51972b4b34b191ac59145889dbf2da5c0d407dbe 100644 --- a/test/parallel/test-webcrypto-wrap-unwrap.js +++ b/test/parallel/test-webcrypto-wrap-unwrap.js -@@ -21,14 +21,15 @@ const kWrappingData = { +@@ -18,14 +18,15 @@ const kWrappingData = { wrap: { label: new Uint8Array(8) }, pair: true }, @@ -1228,7 +1244,7 @@ index 54a5a782a09586ff7e02ab23d8c8ca984106f036..8624d1fcf77254bb256a6f4bbde2ff20 pair: false }, 'AES-GCM': { -@@ -45,6 +46,7 @@ const kWrappingData = { +@@ -42,6 +43,7 @@ const kWrappingData = { wrap: { }, pair: false } diff --git a/patches/node/fix_don_t_create_console_window_when_creating_process.patch b/patches/node/fix_don_t_create_console_window_when_creating_process.patch index d8f144b18bb8d..7016b8334c927 100644 --- a/patches/node/fix_don_t_create_console_window_when_creating_process.patch +++ b/patches/node/fix_don_t_create_console_window_when_creating_process.patch @@ -6,7 +6,7 @@ Subject: fix: don't create console window when creating process This commit prevents console windows from being spawned when creating processes to better align with what Windows users expect and should be removed when upgrading to a version that includes https://github.com/nodejs/node/pull/21316 diff --git a/deps/uv/src/win/process.c b/deps/uv/src/win/process.c -index 73543c6ed987ceed517e8d1ce8135c1ad233795d..249336d0a23cf32e25c93d917ffb1626119c624f 100644 +index 4038fbfd290d1acc91a27ad38e248a2deb06eb68..1ebc0f50e3f0cccb4d8887322b75e61c5284ba2f 100644 --- a/deps/uv/src/win/process.c +++ b/deps/uv/src/win/process.c @@ -1098,6 +1098,9 @@ int uv_spawn(uv_loop_t* loop, diff --git a/patches/node/fix_readbarrier_undefined_symbol_error_on_woa_arm64.patch b/patches/node/fix_readbarrier_undefined_symbol_error_on_woa_arm64.patch new file mode 100644 index 0000000000000..caba4ad4d5b7c --- /dev/null +++ b/patches/node/fix_readbarrier_undefined_symbol_error_on_woa_arm64.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Wed, 18 Aug 2021 11:25:39 +0200 +Subject: fix: _ReadBarrier undefined symbol error on WOA arm64 + +The _ReadBarrier compiler intrinsic isn't present on WOA arm64 devices +and as such is crashing in CI. This fixes the issue by defining them +if they're missing. + +We should upstream or otherwise handle this. + +diff --git a/deps/histogram/src/hdr_atomic.h b/deps/histogram/src/hdr_atomic.h +index ae1056a83612af5e370ce12fea82f334fce0c62c..9acc5c2d78d7f3d718e8b0f69e9a5e17d9609835 100644 +--- a/deps/histogram/src/hdr_atomic.h ++++ b/deps/histogram/src/hdr_atomic.h +@@ -14,6 +14,13 @@ + #include + #include + ++#if !defined(_ReadBarrier) || !defined(_WriteBarrier) ++ ++#define _ReadBarrier() __asm__ __volatile__("" ::: "memory") ++#define _WriteBarrier() __asm__ __volatile__("" ::: "memory") ++ ++#endif ++ + static void __inline * hdr_atomic_load_pointer(void** pointer) + { + _ReadBarrier(); diff --git a/patches/node/make_module_globalpaths_a_reference.patch b/patches/node/make_module_globalpaths_a_reference.patch index 46ec326c72369..f9d8cc442d4b3 100644 --- a/patches/node/make_module_globalpaths_a_reference.patch +++ b/patches/node/make_module_globalpaths_a_reference.patch @@ -8,10 +8,10 @@ load libraries from embedded applications without modifications of node's module code. diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js -index d969a6449cf545c4bb313450dce3940a47be40a2..51bcfe1a4130e5c95f86daad2b2543f9a6fec0a3 100644 +index 3f1dac356b81f437503422a8fb69df792db9c523..8258a46076d1d4905298016cb52247e2cf8432c5 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js -@@ -1222,7 +1222,7 @@ Module._initPaths = function() { +@@ -1251,7 +1251,7 @@ Module._initPaths = function() { modulePaths = paths; // Clone as a shallow copy, for introspection. diff --git a/patches/node/pass_all_globals_through_require.patch b/patches/node/pass_all_globals_through_require.patch index b202955a07d17..80cce00296867 100644 --- a/patches/node/pass_all_globals_through_require.patch +++ b/patches/node/pass_all_globals_through_require.patch @@ -6,10 +6,10 @@ 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 51bcfe1a4130e5c95f86daad2b2543f9a6fec0a3..9a304f05cf4e09038531007efff28c4f57218c1d 100644 +index 8258a46076d1d4905298016cb52247e2cf8432c5..71059956705d1299a19cc9c940a998d9e9717a21 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js -@@ -121,6 +121,13 @@ const { +@@ -127,6 +127,13 @@ const { CHAR_COLON } = require('internal/constants'); @@ -23,7 +23,7 @@ index 51bcfe1a4130e5c95f86daad2b2543f9a6fec0a3..9a304f05cf4e09038531007efff28c4f const { isProxy } = require('internal/util/types'); -@@ -1090,10 +1097,12 @@ Module.prototype._compile = function(content, filename) { +@@ -1096,10 +1103,12 @@ Module.prototype._compile = function(content, filename) { if (requireDepth === 0) statCache = new SafeMap(); if (inspectorWrapper) { result = inspectorWrapper(compiledWrapper, thisValue, exports, diff --git a/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch b/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch index 2f3a9fd388cfc..7e04eb6d931a2 100644 --- a/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch +++ b/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch @@ -22,10 +22,10 @@ index 58f7396990dddb7dd4cf3d23fcdcc1d48f52623e..ef06d0563fa7452348754418867a56c9 const nativeModule = internalBinding('native_module'); diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js -index 9a304f05cf4e09038531007efff28c4f57218c1d..afb1eca73a2d91b76d098114de18ad7e29846e5c 100644 +index 71059956705d1299a19cc9c940a998d9e9717a21..40655b66fd2a50dac01f88d38457de4602022381 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js -@@ -84,7 +84,7 @@ const fs = require('fs'); +@@ -86,7 +86,7 @@ const fs = require('fs'); const internalFS = require('internal/fs/utils'); const path = require('path'); const { sep } = path; @@ -34,7 +34,7 @@ index 9a304f05cf4e09038531007efff28c4f57218c1d..afb1eca73a2d91b76d098114de18ad7e const packageJsonReader = require('internal/modules/package_json_reader'); const { safeGetenv } = internalBinding('credentials'); const { -@@ -155,7 +155,7 @@ function stat(filename) { +@@ -161,7 +161,7 @@ function stat(filename) { const result = statCache.get(filename); if (result !== undefined) return result; } diff --git a/patches/node/repl_fix_crash_when_sharedarraybuffer_disabled.patch b/patches/node/repl_fix_crash_when_sharedarraybuffer_disabled.patch index c08c1e8bad224..5016672a59a37 100644 --- a/patches/node/repl_fix_crash_when_sharedarraybuffer_disabled.patch +++ b/patches/node/repl_fix_crash_when_sharedarraybuffer_disabled.patch @@ -25,7 +25,7 @@ index a771b1813731edf4f0dd60f3505799e389f1d876..b9461677e2d7d1df192e752496e62cca bench.start(); for (let i = 0; i < n; i++) diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js -index d6434ff96e118535bc6ded88ee4d2f0ff253a8f7..1b8894f44e71c6f25f1f50e84293006afe158513 100644 +index 71a07a63a3636ab211746004ebab24a0058b08fc..e3ce67987ee3185a93750ebad72beab304c71e3a 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -9,7 +9,7 @@ const { @@ -37,7 +37,7 @@ index d6434ff96e118535bc6ded88ee4d2f0ff253a8f7..1b8894f44e71c6f25f1f50e84293006a } = primordials; const { -@@ -140,6 +140,9 @@ port.on('message', (message) => { +@@ -142,6 +142,9 @@ port.on('message', (message) => { const originalCwd = process.cwd; process.cwd = function() { diff --git a/patches/node/src_remove_extra_semicolons_outside_fns.patch b/patches/node/src_remove_extra_semicolons_outside_fns.patch new file mode 100644 index 0000000000000..73811ea93eee7 --- /dev/null +++ b/patches/node/src_remove_extra_semicolons_outside_fns.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Wed, 18 Aug 2021 18:06:28 +0200 +Subject: src: remove extra semicolons outside fns + +Fixes several -Wc++98-compat-extra-semi issues. + +Upstreamed at https://github.com/nodejs/node/pull/39800. + +diff --git a/src/node_blob.cc b/src/node_blob.cc +index c583d5e0a93791ae5ca42e3a6474790b7a43f824..4643da4c17496c7bc16bcde4b481e17f6f7de185 100644 +--- a/src/node_blob.cc ++++ b/src/node_blob.cc +@@ -497,5 +497,5 @@ void Blob::RegisterExternalReferences(ExternalReferenceRegistry* registry) { + + } // namespace node + +-NODE_MODULE_CONTEXT_AWARE_INTERNAL(blob, node::Blob::Initialize); +-NODE_MODULE_EXTERNAL_REFERENCE(blob, node::Blob::RegisterExternalReferences); ++NODE_MODULE_CONTEXT_AWARE_INTERNAL(blob, node::Blob::Initialize) ++NODE_MODULE_EXTERNAL_REFERENCE(blob, node::Blob::RegisterExternalReferences) diff --git a/script/node-disabled-tests.json b/script/node-disabled-tests.json index d8ef28cce7c8b..86637a4ec1855 100644 --- a/script/node-disabled-tests.json +++ b/script/node-disabled-tests.json @@ -14,12 +14,12 @@ "parallel/test-child-process-fork-exec-path", "parallel/test-child-process-stdio-overlapped", "parallel/test-cli-node-print-help", - "parallel/test-code-cache", "parallel/test-cluster-bind-privileged-port", "parallel/test-cluster-shared-handle-bind-privileged-port", + "parallel/test-code-cache", "parallel/test-crypto-aes-wrap", - "parallel/test-crypto-authenticated-stream", "parallel/test-crypto-async-sign-verify", + "parallel/test-crypto-authenticated-stream", "parallel/test-crypto-certificate", "parallel/test-crypto-des3-wrap", "parallel/test-crypto-dh-stateless", @@ -145,12 +145,12 @@ "parallel/test-webcrypto-derivebits-node-dh", "parallel/test-webcrypto-ed25519-ed448", "parallel/test-webcrypto-encrypt-decrypt", + "parallel/test-webcrypto-encrypt-decrypt-aes", "parallel/test-webcrypto-encrypt-decrypt-rsa", + "parallel/test-webcrypto-keygen", "parallel/test-webcrypto-rsa-pss-params", - "parallel/test-webcrypto-x25519-x448", "parallel/test-webcrypto-sign-verify-node-dsa", - "parallel/test-webcrypto-keygen", - "parallel/test-webcrypto-encrypt-decrypt-aes", + "parallel/test-webcrypto-x25519-x448", "parallel/test-whatwg-encoding-custom-textdecoder", "parallel/test-worker-message-channel", "parallel/test-worker-message-port", @@ -179,5 +179,6 @@ "sequential/test-tls-connect", "sequential/test-vm-timeout-rethrow", "sequential/test-worker-prof", - "wpt/test-encoding" + "wpt/test-encoding", + "wpt/test-webcrypto" ]