From 5ebed62ba4bb5a05f06ab4fa6c8837dfc41c814b Mon Sep 17 00:00:00 2001 From: Vladimir Morozov Date: Wed, 1 Jun 2022 16:31:44 -0700 Subject: [PATCH 1/5] node-api,src: fix module registration in MSVC C++ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/42459 Reviewed-By: Anna Henningsen Reviewed-By: Michael Dawson Reviewed-By: Gerhard Stöbich Backport-PR-URL: https://github.com/nodejs/node/pull/43293 --- src/node.h | 8 ++- src/node_api.h | 17 ++++++ test/js-native-api/common.h | 3 + test/node-api/test_init_order/binding.gyp | 8 +++ test/node-api/test_init_order/test.js | 10 ++++ .../test_init_order/test_init_order.cc | 55 +++++++++++++++++++ 6 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 test/node-api/test_init_order/binding.gyp create mode 100644 test/node-api/test_init_order/test.js create mode 100644 test/node-api/test_init_order/test_init_order.cc diff --git a/src/node.h b/src/node.h index 966edcd041be1b..7e424f0e15915b 100644 --- a/src/node.h +++ b/src/node.h @@ -824,11 +824,13 @@ extern "C" NODE_EXTERN void node_module_register(void* mod); #endif #if defined(_MSC_VER) -#pragma section(".CRT$XCU", read) #define NODE_C_CTOR(fn) \ NODE_CTOR_PREFIX void __cdecl fn(void); \ - __declspec(dllexport, allocate(".CRT$XCU")) \ - void (__cdecl*fn ## _)(void) = fn; \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); }; \ + } fn##_v_; \ + } \ NODE_CTOR_PREFIX void __cdecl fn(void) #else #define NODE_C_CTOR(fn) \ diff --git a/src/node_api.h b/src/node_api.h index 1772c67c15afb2..05012191b5725f 100644 --- a/src/node_api.h +++ b/src/node_api.h @@ -44,12 +44,29 @@ typedef struct napi_module { #define NAPI_MODULE_VERSION 1 #if defined(_MSC_VER) +#if defined(__cplusplus) +#define NAPI_C_CTOR(fn) \ + static void __cdecl fn(void); \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); } \ + } fn##_v_; \ + } \ + static void __cdecl fn(void) +#else // !defined(__cplusplus) #pragma section(".CRT$XCU", read) +// The NAPI_C_CTOR macro defines a function fn that is called during CRT +// initialization. +// C does not support dynamic initialization of static variables and this code +// simulates C++ behavior. Exporting the function pointer prevents it from being +// optimized. See for details: +// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 #define NAPI_C_CTOR(fn) \ static void __cdecl fn(void); \ __declspec(dllexport, allocate(".CRT$XCU")) void(__cdecl * fn##_)(void) = \ fn; \ static void __cdecl fn(void) +#endif // defined(__cplusplus) #else #define NAPI_C_CTOR(fn) \ static void fn(void) __attribute__((constructor)); \ diff --git a/test/js-native-api/common.h b/test/js-native-api/common.h index 73f60906630140..46784059a1f70a 100644 --- a/test/js-native-api/common.h +++ b/test/js-native-api/common.h @@ -62,6 +62,9 @@ #define DECLARE_NODE_API_GETTER(name, func) \ { (name), NULL, NULL, (func), NULL, NULL, napi_default, NULL } +#define DECLARE_NODE_API_PROPERTY_VALUE(name, value) \ + { (name), NULL, NULL, NULL, NULL, (value), napi_default, NULL } + void add_returned_status(napi_env env, const char* key, napi_value object, diff --git a/test/node-api/test_init_order/binding.gyp b/test/node-api/test_init_order/binding.gyp new file mode 100644 index 00000000000000..2ffb81838d1189 --- /dev/null +++ b/test/node-api/test_init_order/binding.gyp @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "test_init_order", + "sources": [ "test_init_order.cc" ] + } + ] +} diff --git a/test/node-api/test_init_order/test.js b/test/node-api/test_init_order/test.js new file mode 100644 index 00000000000000..0bfeb8f94afebb --- /dev/null +++ b/test/node-api/test_init_order/test.js @@ -0,0 +1,10 @@ +'use strict'; + +// This test verifies that C++ static variable dynamic initialization is called +// correctly and does not interfere with the module initialization. +const common = require('../../common'); +const test_init_order = require(`./build/${common.buildType}/test_init_order`); +const assert = require('assert'); + +assert.strictEqual(test_init_order.cppIntValue, 42); +assert.strictEqual(test_init_order.cppStringValue, '123'); diff --git a/test/node-api/test_init_order/test_init_order.cc b/test/node-api/test_init_order/test_init_order.cc new file mode 100644 index 00000000000000..2b6fffd834e1fd --- /dev/null +++ b/test/node-api/test_init_order/test_init_order.cc @@ -0,0 +1,55 @@ +#include +#include +#include +#include "../../js-native-api/common.h" + +// This test verifies that use of the NAPI_MODULE in C++ code does not +// interfere with the C++ dynamic static initializers. + +namespace { + +// This class uses dynamic static initializers for the test. +// In production code developers must avoid dynamic static initializers because +// they affect the start up time. They must prefer static initialization such as +// use of constexpr functions or classes with constexpr constructors. E.g. +// instead of using std::string, it is preferrable to use const char[], or +// constexpr std::string_view starting with C++17, or even constexpr +// std::string starting with C++20. +struct MyClass { + static const std::unique_ptr valueHolder; + static const std::string testString; +}; + +const std::unique_ptr MyClass::valueHolder = + std::unique_ptr(new int(42)); +// NOLINTNEXTLINE(runtime/string) +const std::string MyClass::testString = std::string("123"); + +} // namespace + +EXTERN_C_START +napi_value Init(napi_env env, napi_value exports) { + napi_value cppIntValue, cppStringValue; + NODE_API_CALL(env, + napi_create_int32(env, *MyClass::valueHolder, &cppIntValue)); + NODE_API_CALL( + env, + napi_create_string_utf8( + env, MyClass::testString.c_str(), NAPI_AUTO_LENGTH, &cppStringValue)); + + napi_property_descriptor descriptors[] = { + DECLARE_NODE_API_PROPERTY_VALUE("cppIntValue", cppIntValue), + DECLARE_NODE_API_PROPERTY_VALUE("cppStringValue", cppStringValue)}; + + NODE_API_CALL( + env, + napi_define_properties(env, + exports, + sizeof(descriptors) / sizeof(descriptors[0]), + descriptors)); + + return exports; +} +EXTERN_C_END + +NAPI_MODULE(NODE_GYP_MODULE_NAME, Init) From f2dc43aad62e5ef734a1d0eec5cf86df1f677168 Mon Sep 17 00:00:00 2001 From: XadillaX Date: Mon, 6 Jun 2022 17:26:06 +0800 Subject: [PATCH 2/5] deps: cherry-pick 4ab70f6 from V8 upstream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [Compiler] Remove untrusted code mitigations. These are no longer enabled, so remove the code mitigation logic from the codebase. BUG=chromium:1003890 Change-Id: I536bb1732e8463281c21da446bbba8f47ede8ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3045704 Commit-Queue: Ross McIlroy Reviewed-by: Jakob Gruber Reviewed-by: Clemens Backes Cr-Commit-Position: refs/heads/master@{#76256} Refs: https://github.com/v8/v8/commit/4ab70f6b218b719d9ba282a6a733c978216943d6 Fixes: https://github.com/nodejs/node/issues/43296 PR-URL: https://github.com/nodejs/node/pull/43328 Reviewed-By: Ben Noordhuis Reviewed-By: Jiawen Geng Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Tobias Nießen --- deps/v8/BUILD.bazel | 4 - deps/v8/BUILD.gn | 41 --- deps/v8/gni/v8.gni | 10 +- deps/v8/src/builtins/arm/builtins-arm.cc | 6 - deps/v8/src/builtins/arm64/builtins-arm64.cc | 6 - deps/v8/src/builtins/mips/builtins-mips.cc | 6 - .../v8/src/builtins/mips64/builtins-mips64.cc | 6 - deps/v8/src/builtins/ppc/builtins-ppc.cc | 6 - .../src/builtins/riscv64/builtins-riscv64.cc | 6 - deps/v8/src/builtins/s390/builtins-s390.cc | 6 - .../src/builtins/setup-builtins-internal.cc | 10 +- deps/v8/src/builtins/x64/builtins-x64.cc | 6 - .../v8/src/codegen/arm/macro-assembler-arm.cc | 4 - deps/v8/src/codegen/arm/macro-assembler-arm.h | 2 - deps/v8/src/codegen/arm/register-arm.h | 1 - .../codegen/arm64/macro-assembler-arm64.cc | 4 - .../src/codegen/arm64/macro-assembler-arm64.h | 2 - deps/v8/src/codegen/arm64/register-arm64.h | 2 - deps/v8/src/codegen/code-stub-assembler.cc | 35 +-- deps/v8/src/codegen/code-stub-assembler.h | 31 +- .../src/codegen/ia32/macro-assembler-ia32.cc | 57 ---- .../src/codegen/ia32/macro-assembler-ia32.h | 8 - deps/v8/src/codegen/ia32/register-ia32.h | 3 - .../src/codegen/mips/macro-assembler-mips.cc | 4 - .../src/codegen/mips/macro-assembler-mips.h | 2 - deps/v8/src/codegen/mips/register-mips.h | 1 - .../codegen/mips64/macro-assembler-mips64.cc | 4 - .../codegen/mips64/macro-assembler-mips64.h | 2 - deps/v8/src/codegen/mips64/register-mips64.h | 1 - .../src/codegen/optimized-compilation-info.cc | 25 -- .../src/codegen/optimized-compilation-info.h | 44 +-- .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 4 - deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 2 - deps/v8/src/codegen/ppc/register-ppc.h | 1 - deps/v8/src/codegen/register-configuration.cc | 40 --- .../riscv64/macro-assembler-riscv64.cc | 4 - .../codegen/riscv64/macro-assembler-riscv64.h | 2 - .../v8/src/codegen/riscv64/register-riscv64.h | 1 - .../src/codegen/s390/macro-assembler-s390.cc | 4 - .../src/codegen/s390/macro-assembler-s390.h | 1 - deps/v8/src/codegen/s390/register-s390.h | 1 - .../v8/src/codegen/x64/macro-assembler-x64.cc | 46 --- deps/v8/src/codegen/x64/macro-assembler-x64.h | 7 - deps/v8/src/codegen/x64/register-x64.h | 1 - deps/v8/src/common/globals.h | 14 - deps/v8/src/compiler/access-builder.cc | 84 +++--- deps/v8/src/compiler/access-builder.h | 9 +- .../backend/arm/code-generator-arm.cc | 94 +----- .../backend/arm/instruction-selector-arm.cc | 6 - .../backend/arm64/code-generator-arm64.cc | 100 +------ .../arm64/instruction-selector-arm64.cc | 40 +-- .../v8/src/compiler/backend/code-generator.cc | 102 ++----- deps/v8/src/compiler/backend/code-generator.h | 37 +-- .../backend/ia32/code-generator-ia32.cc | 57 +--- .../backend/ia32/instruction-selector-ia32.cc | 6 - .../src/compiler/backend/instruction-codes.h | 12 +- .../compiler/backend/instruction-scheduler.cc | 6 - .../compiler/backend/instruction-selector.cc | 133 ++------- .../compiler/backend/instruction-selector.h | 40 +-- deps/v8/src/compiler/backend/instruction.cc | 4 - deps/v8/src/compiler/backend/instruction.h | 3 +- .../v8/src/compiler/backend/jump-threading.cc | 156 +++++----- .../backend/mips/code-generator-mips.cc | 127 --------- .../mips/instruction-scheduler-mips.cc | 2 - .../backend/mips/instruction-selector-mips.cc | 6 - .../backend/mips64/code-generator-mips64.cc | 150 ---------- .../mips64/instruction-scheduler-mips64.cc | 2 - .../mips64/instruction-selector-mips64.cc | 10 +- .../backend/ppc/code-generator-ppc.cc | 59 ---- .../backend/ppc/instruction-selector-ppc.cc | 7 - .../backend/riscv64/code-generator-riscv64.cc | 157 ---------- .../riscv64/instruction-scheduler-riscv64.cc | 2 - .../riscv64/instruction-selector-riscv64.cc | 10 +- .../backend/s390/code-generator-s390.cc | 58 ---- .../backend/s390/instruction-selector-s390.cc | 6 - .../backend/x64/code-generator-x64.cc | 109 +------ .../backend/x64/instruction-selector-x64.cc | 8 +- deps/v8/src/compiler/branch-elimination.cc | 17 -- deps/v8/src/compiler/branch-elimination.h | 1 - .../v8/src/compiler/bytecode-graph-builder.cc | 15 +- deps/v8/src/compiler/code-assembler.cc | 49 +--- deps/v8/src/compiler/code-assembler.h | 37 +-- deps/v8/src/compiler/common-operator.cc | 212 ++++---------- deps/v8/src/compiler/common-operator.h | 62 +--- .../src/compiler/decompression-optimizer.cc | 7 +- .../src/compiler/effect-control-linearizer.cc | 54 +--- .../src/compiler/effect-control-linearizer.h | 4 +- deps/v8/src/compiler/graph-assembler.cc | 41 +-- deps/v8/src/compiler/graph-assembler.h | 42 +-- deps/v8/src/compiler/js-call-reducer.cc | 16 +- deps/v8/src/compiler/js-create-lowering.cc | 1 - .../js-native-context-specialization.cc | 38 +-- deps/v8/src/compiler/linkage.h | 18 +- .../v8/src/compiler/machine-graph-verifier.cc | 20 -- deps/v8/src/compiler/machine-operator.cc | 55 ---- deps/v8/src/compiler/machine-operator.h | 7 - deps/v8/src/compiler/memory-lowering.cc | 33 +-- deps/v8/src/compiler/memory-lowering.h | 3 - deps/v8/src/compiler/memory-optimizer.cc | 11 +- deps/v8/src/compiler/memory-optimizer.h | 1 - deps/v8/src/compiler/node-matchers.h | 1 - deps/v8/src/compiler/opcodes.h | 5 - deps/v8/src/compiler/pipeline.cc | 49 +--- deps/v8/src/compiler/pipeline.h | 3 +- .../src/compiler/property-access-builder.cc | 4 - deps/v8/src/compiler/raw-machine-assembler.cc | 23 +- deps/v8/src/compiler/raw-machine-assembler.h | 40 +-- deps/v8/src/compiler/simplified-lowering.cc | 26 +- deps/v8/src/compiler/simplified-lowering.h | 3 - deps/v8/src/compiler/simplified-operator.cc | 267 ++++++++---------- deps/v8/src/compiler/simplified-operator.h | 19 +- deps/v8/src/compiler/typer.cc | 4 - deps/v8/src/compiler/verifier.cc | 8 - deps/v8/src/compiler/wasm-compiler.cc | 125 ++------ deps/v8/src/compiler/wasm-compiler.h | 13 +- deps/v8/src/diagnostics/objects-printer.cc | 1 - deps/v8/src/execution/isolate.cc | 32 --- deps/v8/src/flags/flag-definitions.h | 9 - deps/v8/src/init/startup-data-util.cc | 5 - .../src/interpreter/interpreter-assembler.cc | 125 ++++---- .../src/interpreter/interpreter-assembler.h | 53 ++-- .../src/interpreter/interpreter-generator.cc | 3 - .../src/snapshot/embedded/embedded-empty.cc | 12 - .../baseline/ia32/liftoff-assembler-ia32.h | 12 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 61 +--- .../wasm/baseline/x64/liftoff-assembler-x64.h | 12 +- deps/v8/src/wasm/graph-builder-interface.cc | 1 - deps/v8/src/wasm/wasm-external-refs.cc | 14 - deps/v8/src/wasm/wasm-objects-inl.h | 1 - deps/v8/src/wasm/wasm-objects.cc | 8 - deps/v8/src/wasm/wasm-objects.h | 2 - deps/v8/test/cctest/BUILD.gn | 3 - deps/v8/test/cctest/cctest.status | 1 - .../cctest/compiler/code-assembler-tester.h | 7 +- .../cctest/compiler/test-code-generator.cc | 3 - deps/v8/test/common/wasm/wasm-interpreter.cc | 3 +- .../codegen/code-stub-assembler-unittest.cc | 7 +- .../backend/instruction-selector-unittest.cc | 41 ++- .../effect-control-linearizer-unittest.cc | 24 +- .../unittests/compiler/node-test-utils.cc | 12 - .../test/unittests/compiler/node-test-utils.h | 6 - .../compiler/simplified-lowering-unittest.cc | 5 +- .../interpreter-assembler-unittest.cc | 120 +++----- .../interpreter-assembler-unittest.h | 32 +-- deps/v8/tools/clusterfuzz/v8_foozzie.py | 7 - deps/v8/tools/testrunner/local/android.py | 6 - deps/v8/tools/testrunner/local/variants.py | 3 +- .../test-v8-untrusted-code-mitigations.js | 19 -- 148 files changed, 769 insertions(+), 3290 deletions(-) delete mode 100644 test/parallel/test-v8-untrusted-code-mitigations.js diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index c5b4a94f911a7b..b8040db86f0ee5 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -150,7 +150,6 @@ config_setting( # v8_can_use_fpu_instructions # v8_use_mips_abi_hardfloat # v8_enable_gdbjit -# v8_untrusted_code_mitigations # v8_enable_minor_mc # v8_check_header_includes # v8_enable_shared_ro_heap @@ -305,9 +304,6 @@ v8_config( "V8_HAVE_TARGET_OS", "V8_TARGET_OS_MACOSX", ], - }) + select({ - ":is_android_x86": [ "DISABLE_UNTRUSTED_CODE_MITIGATIONS" ], - "//conditions:default": [], }) + select({ ":is_v8_enable_pointer_compression": [ "V8_COMPRESS_POINTERS", diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 3e48fb11bff9f9..727c4f8da6c97c 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -228,11 +228,6 @@ declare_args() { (is_linux || is_chromeos || is_mac)) || (v8_current_cpu == "ppc64" && (is_linux || is_chromeos)) - # Enable mitigations for executing untrusted code. - # Disabled by default on ia32 due to conflicting requirements with embedded - # builtins. - v8_untrusted_code_mitigations = false - # Enable minor mark compact. v8_enable_minor_mc = true @@ -461,9 +456,6 @@ if (build_with_chromium && v8_current_cpu == "arm64" && assert(!v8_disable_write_barriers || v8_enable_single_generation, "Disabling write barriers works only with single generation") -assert(v8_current_cpu != "x86" || !v8_untrusted_code_mitigations, - "Untrusted code mitigations are unsupported on ia32") - assert(v8_current_cpu == "arm64" || !v8_control_flow_integrity, "Control-flow integrity is only supported on arm64") @@ -480,9 +472,6 @@ assert(!v8_enable_map_packing || !v8_enable_pointer_compression, assert(!v8_enable_map_packing || v8_current_cpu == "x64", "Map packing is only supported on x64") -assert(!v8_use_multi_snapshots || !v8_control_flow_integrity, - "Control-flow integrity does not support multisnapshots") - assert(!v8_enable_heap_sandbox || v8_enable_pointer_compression, "V8 Heap Sandbox requires pointer compression") @@ -872,9 +861,6 @@ config("features") { if (v8_enable_lazy_source_positions) { defines += [ "V8_ENABLE_LAZY_SOURCE_POSITIONS" ] } - if (v8_use_multi_snapshots) { - defines += [ "V8_MULTI_SNAPSHOTS" ] - } if (v8_use_siphash) { defines += [ "V8_USE_SIPHASH" ] } @@ -1170,10 +1156,6 @@ config("toolchain") { defines += [ "V8_RUNTIME_CALL_STATS" ] } - if (!v8_untrusted_code_mitigations) { - defines += [ "DISABLE_UNTRUSTED_CODE_MITIGATIONS" ] - } - if (v8_no_inline) { if (is_win) { cflags += [ "/Ob0" ] @@ -1309,8 +1291,6 @@ template("asm_to_inline_asm") { if (is_android && enable_java_templates) { android_assets("v8_external_startup_data_assets") { if (v8_use_external_startup_data) { - # We don't support side-by-side snapshots on Android within Chromium. - assert(!v8_use_multi_snapshots) deps = [ "//v8" ] renaming_sources = [ "$root_out_dir/snapshot_blob.bin" ] if (current_cpu == "arm" || current_cpu == "x86" || @@ -1987,17 +1967,6 @@ if (emit_builtins_as_inline_asm) { args = [] } } -if (v8_use_multi_snapshots) { - run_mksnapshot("trusted") { - args = [ "--no-untrusted-code-mitigations" ] - embedded_variant = "Trusted" - } - if (emit_builtins_as_inline_asm) { - asm_to_inline_asm("trusted") { - args = [] - } - } -} action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" @@ -2086,16 +2055,6 @@ v8_source_set("v8_snapshot") { deps += [ ":v8_base" ] sources += [ "src/snapshot/snapshot-external.cc" ] - - if (v8_use_multi_snapshots) { - public_deps += [ ":run_mksnapshot_trusted" ] - if (emit_builtins_as_inline_asm) { - deps += [ ":asm_to_inline_asm_trusted" ] - sources += [ "$target_gen_dir/embedded_trusted.cc" ] - } else { - sources += [ "$target_gen_dir/embedded_trusted.S" ] - } - } } else { # Also top-level visibility targets can depend on this. visibility += [ "//:gn_visibility" ] diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index a3346517978b32..0c22a858da0c6c 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -35,7 +35,8 @@ declare_args() { # as an argument to profiler's method `takeHeapSnapshot`. v8_enable_raw_heap_snapshots = false - # Enable several snapshots side-by-side (e.g. default and for trusted code). + # Deprecated flag that no longer does anything. + # TODO(rmcilroy): Remove this gn arg once it's no longer used by the bots. v8_use_multi_snapshots = false # Use external files for startup data blobs: @@ -99,13 +100,6 @@ if (v8_use_external_startup_data == "") { v8_use_external_startup_data = !is_ios } -if (v8_use_multi_snapshots) { - # Silently disable multi snapshots if they're incompatible with the current - # build configuration. This allows us to set v8_use_multi_snapshots=true on - # all bots, and e.g. no-snapshot bots will automatically do the right thing. - v8_use_multi_snapshots = v8_use_external_startup_data && !build_with_chromium -} - if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } diff --git a/deps/v8/src/builtins/arm/builtins-arm.cc b/deps/v8/src/builtins/arm/builtins-arm.cc index f45c927e67546e..6c0de814872d92 100644 --- a/deps/v8/src/builtins/arm/builtins-arm.cc +++ b/deps/v8/src/builtins/arm/builtins-arm.cc @@ -2777,12 +2777,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ cmp(cp, Operand(0)); __ str(cp, MemOperand(fp, StandardFrameConstants::kContextOffset), ne); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/arm64/builtins-arm64.cc b/deps/v8/src/builtins/arm64/builtins-arm64.cc index b1f9a63e3c7e9c..db8a198c7a2f9f 100644 --- a/deps/v8/src/builtins/arm64/builtins-arm64.cc +++ b/deps/v8/src/builtins/arm64/builtins-arm64.cc @@ -3250,12 +3250,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Str(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ Bind(¬_js_frame); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - { // Clear c_entry_fp, like we do in `LeaveExitFrame`. UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/mips/builtins-mips.cc b/deps/v8/src/builtins/mips/builtins-mips.cc index 8f4bf4d06bd13f..a07c786c57984d 100644 --- a/deps/v8/src/builtins/mips/builtins-mips.cc +++ b/deps/v8/src/builtins/mips/builtins-mips.cc @@ -2723,12 +2723,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ sw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/mips64/builtins-mips64.cc b/deps/v8/src/builtins/mips64/builtins-mips64.cc index 45e1c32f82f990..70176b37702e82 100644 --- a/deps/v8/src/builtins/mips64/builtins-mips64.cc +++ b/deps/v8/src/builtins/mips64/builtins-mips64.cc @@ -2814,12 +2814,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Sd(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/ppc/builtins-ppc.cc b/deps/v8/src/builtins/ppc/builtins-ppc.cc index 02b76175ec128f..888daf0b73d152 100644 --- a/deps/v8/src/builtins/ppc/builtins-ppc.cc +++ b/deps/v8/src/builtins/ppc/builtins-ppc.cc @@ -2646,12 +2646,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ StoreU64(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc index 764ef97952cf13..4b5ec97448d358 100644 --- a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc +++ b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc @@ -2903,12 +2903,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Sd(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Compute the handler entry address and jump to it. UseScratchRegisterScope temp(masm); Register scratch = temp.Acquire(); diff --git a/deps/v8/src/builtins/s390/builtins-s390.cc b/deps/v8/src/builtins/s390/builtins-s390.cc index 5129cc6ee31550..879c1ed4059e0b 100644 --- a/deps/v8/src/builtins/s390/builtins-s390.cc +++ b/deps/v8/src/builtins/s390/builtins-s390.cc @@ -2679,12 +2679,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ StoreU64(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/setup-builtins-internal.cc b/deps/v8/src/builtins/setup-builtins-internal.cc index 2724f9a2001e4e..c51020119f5213 100644 --- a/deps/v8/src/builtins/setup-builtins-internal.cc +++ b/deps/v8/src/builtins/setup-builtins-internal.cc @@ -158,9 +158,8 @@ Code BuildWithCodeStubAssemblerJS(Isolate* isolate, Builtin builtin, Zone zone(isolate->allocator(), ZONE_NAME, kCompressGraphZone); const int argc_with_recv = (argc == kDontAdaptArgumentsSentinel) ? 0 : argc + 1; - compiler::CodeAssemblerState state( - isolate, &zone, argc_with_recv, CodeKind::BUILTIN, name, - PoisoningMitigationLevel::kDontPoison, builtin); + compiler::CodeAssemblerState state(isolate, &zone, argc_with_recv, + CodeKind::BUILTIN, name, builtin); generator(&state); Handle code = compiler::CodeAssembler::GenerateCode( &state, BuiltinAssemblerOptions(isolate, builtin), @@ -183,9 +182,8 @@ Code BuildWithCodeStubAssemblerCS(Isolate* isolate, Builtin builtin, CallInterfaceDescriptor descriptor(interface_descriptor); // Ensure descriptor is already initialized. DCHECK_LE(0, descriptor.GetRegisterParameterCount()); - compiler::CodeAssemblerState state( - isolate, &zone, descriptor, CodeKind::BUILTIN, name, - PoisoningMitigationLevel::kDontPoison, builtin); + compiler::CodeAssemblerState state(isolate, &zone, descriptor, + CodeKind::BUILTIN, name, builtin); generator(&state); Handle code = compiler::CodeAssembler::GenerateCode( &state, BuiltinAssemblerOptions(isolate, builtin), diff --git a/deps/v8/src/builtins/x64/builtins-x64.cc b/deps/v8/src/builtins/x64/builtins-x64.cc index 14186e3be6d1eb..a3fc113b899834 100644 --- a/deps/v8/src/builtins/x64/builtins-x64.cc +++ b/deps/v8/src/builtins/x64/builtins-x64.cc @@ -3691,12 +3691,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ movq(Operand(rbp, StandardFrameConstants::kContextOffset), rsi); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. ExternalReference c_entry_fp_address = ExternalReference::Create( IsolateAddressId::kCEntryFPAddress, masm->isolate()); diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.cc b/deps/v8/src/codegen/arm/macro-assembler-arm.cc index 26d16406a6277e..5d6512fc6b71e9 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.cc +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.cc @@ -2660,10 +2660,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { sub(dst, pc, Operand(pc_offset() + Instruction::kPcLoadDelta)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.h b/deps/v8/src/codegen/arm/macro-assembler-arm.h index 41bc5ec54432a7..bcecaec42928fc 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.h +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.h @@ -560,8 +560,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/arm/register-arm.h b/deps/v8/src/codegen/arm/register-arm.h index 6608ad4edebb49..8cc838945d25bc 100644 --- a/deps/v8/src/codegen/arm/register-arm.h +++ b/deps/v8/src/codegen/arm/register-arm.h @@ -336,7 +336,6 @@ constexpr Register kReturnRegister2 = r2; constexpr Register kJSFunctionRegister = r1; constexpr Register kContextRegister = r7; constexpr Register kAllocateSizeRegister = r1; -constexpr Register kSpeculationPoisonRegister = r9; constexpr Register kInterpreterAccumulatorRegister = r0; constexpr Register kInterpreterBytecodeOffsetRegister = r5; constexpr Register kInterpreterBytecodeArrayRegister = r6; diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc index ef95b4e8132400..be26ddb7e21290 100644 --- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc +++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc @@ -3540,10 +3540,6 @@ void TurboAssembler::ComputeCodeStartAddress(const Register& rd) { adr(rd, -pc_offset()); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - Mov(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::RestoreFPAndLR() { static_assert(StandardFrameConstants::kCallerFPOffset + kSystemPointerSize == StandardFrameConstants::kCallerPCOffset, diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h index 9128ba2c18edb7..b2a0f91d8c76de 100644 --- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h +++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h @@ -1347,8 +1347,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(const Register& rd); - void ResetSpeculationPoisonRegister(); - // --------------------------------------------------------------------------- // Pointer compression Support diff --git a/deps/v8/src/codegen/arm64/register-arm64.h b/deps/v8/src/codegen/arm64/register-arm64.h index 5b234526a4361a..ae6c4c920037c0 100644 --- a/deps/v8/src/codegen/arm64/register-arm64.h +++ b/deps/v8/src/codegen/arm64/register-arm64.h @@ -701,8 +701,6 @@ constexpr Register kJSFunctionRegister = x1; constexpr Register kContextRegister = cp; constexpr Register kAllocateSizeRegister = x1; -constexpr Register kSpeculationPoisonRegister = x23; - constexpr Register kInterpreterAccumulatorRegister = x0; constexpr Register kInterpreterBytecodeOffsetRegister = x19; constexpr Register kInterpreterBytecodeArrayRegister = x20; diff --git a/deps/v8/src/codegen/code-stub-assembler.cc b/deps/v8/src/codegen/code-stub-assembler.cc index e25135decee421..7ad013e2fca6a9 100644 --- a/deps/v8/src/codegen/code-stub-assembler.cc +++ b/deps/v8/src/codegen/code-stub-assembler.cc @@ -2193,9 +2193,10 @@ TNode CodeStubAssembler::LoadArrayLength( } template -TNode CodeStubAssembler::LoadArrayElement( - TNode array, int array_header_size, TNode index_node, - int additional_offset, LoadSensitivity needs_poisoning) { +TNode CodeStubAssembler::LoadArrayElement(TNode array, + int array_header_size, + TNode index_node, + int additional_offset) { // TODO(v8:9708): Do we want to keep both IntPtrT and UintPtrT variants? static_assert(std::is_same::value || std::is_same::value || @@ -2210,23 +2211,17 @@ TNode CodeStubAssembler::LoadArrayElement( CSA_ASSERT(this, IsOffsetInBounds(offset, LoadArrayLength(array), array_header_size)); constexpr MachineType machine_type = MachineTypeOf::value; - // TODO(gsps): Remove the Load case once LoadFromObject supports poisoning - if (needs_poisoning == LoadSensitivity::kSafe) { - return UncheckedCast(LoadFromObject(machine_type, array, offset)); - } else { - return UncheckedCast( - Load(machine_type, array, offset, needs_poisoning)); - } + return UncheckedCast(LoadFromObject(machine_type, array, offset)); } template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadArrayElement( - TNode, int, TNode, int, LoadSensitivity); + TNode, int, TNode, int); template TNode CodeStubAssembler::LoadFixedArrayElement( TNode object, TNode index, int additional_offset, - LoadSensitivity needs_poisoning, CheckBounds check_bounds) { + CheckBounds check_bounds) { // TODO(v8:9708): Do we want to keep both IntPtrT and UintPtrT variants? static_assert(std::is_same::value || std::is_same::value || @@ -2238,25 +2233,22 @@ TNode CodeStubAssembler::LoadFixedArrayElement( if (NeedsBoundsCheck(check_bounds)) { FixedArrayBoundsCheck(object, index, additional_offset); } - TNode element = - LoadArrayElement(object, FixedArray::kHeaderSize, index, - additional_offset, needs_poisoning); + TNode element = LoadArrayElement(object, FixedArray::kHeaderSize, + index, additional_offset); return CAST(element); } template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, - int, LoadSensitivity, - CheckBounds); + int, CheckBounds); template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, int, - LoadSensitivity, CheckBounds); template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, int, - LoadSensitivity, CheckBounds); + CheckBounds); void CodeStubAssembler::FixedArrayBoundsCheck(TNode array, TNode index, @@ -2291,9 +2283,8 @@ void CodeStubAssembler::FixedArrayBoundsCheck(TNode array, TNode CodeStubAssembler::LoadPropertyArrayElement( TNode object, TNode index) { int additional_offset = 0; - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe; return CAST(LoadArrayElement(object, PropertyArray::kHeaderSize, index, - additional_offset, needs_poisoning)); + additional_offset)); } TNode CodeStubAssembler::LoadPropertyArrayLength( @@ -2648,7 +2639,7 @@ TNode CodeStubAssembler::LoadAndUntagToWord32FixedArrayElement( TNode CodeStubAssembler::LoadWeakFixedArrayElement( TNode object, TNode index, int additional_offset) { return LoadArrayElement(object, WeakFixedArray::kHeaderSize, index, - additional_offset, LoadSensitivity::kSafe); + additional_offset); } TNode CodeStubAssembler::LoadFixedDoubleArrayElement( diff --git a/deps/v8/src/codegen/code-stub-assembler.h b/deps/v8/src/codegen/code-stub-assembler.h index 008af6006f5b63..b3930c0a5231d7 100644 --- a/deps/v8/src/codegen/code-stub-assembler.h +++ b/deps/v8/src/codegen/code-stub-assembler.h @@ -1448,40 +1448,35 @@ class V8_EXPORT_PRIVATE CodeStubAssembler // Array is any array-like type that has a fixed header followed by // tagged elements. template - TNode LoadArrayElement( - TNode array, int array_header_size, TNode index, - int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + TNode LoadArrayElement(TNode array, int array_header_size, + TNode index, + int additional_offset = 0); template TNode LoadFixedArrayElement( TNode object, TNode index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe, CheckBounds check_bounds = CheckBounds::kAlways); // This doesn't emit a bounds-check. As part of the security-performance // tradeoff, only use it if it is performance critical. - TNode UnsafeLoadFixedArrayElement( - TNode object, TNode index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode UnsafeLoadFixedArrayElement(TNode object, + TNode index, + int additional_offset = 0) { return LoadFixedArrayElement(object, index, additional_offset, - needs_poisoning, CheckBounds::kDebugOnly); + CheckBounds::kDebugOnly); } - TNode LoadFixedArrayElement( - TNode object, int index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode LoadFixedArrayElement(TNode object, int index, + int additional_offset = 0) { return LoadFixedArrayElement(object, IntPtrConstant(index), - additional_offset, needs_poisoning); + additional_offset); } // This doesn't emit a bounds-check. As part of the security-performance // tradeoff, only use it if it is performance critical. - TNode UnsafeLoadFixedArrayElement( - TNode object, int index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode UnsafeLoadFixedArrayElement(TNode object, int index, + int additional_offset = 0) { return LoadFixedArrayElement(object, IntPtrConstant(index), - additional_offset, needs_poisoning, - CheckBounds::kDebugOnly); + additional_offset, CheckBounds::kDebugOnly); } TNode LoadPropertyArrayElement(TNode object, diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc index c95ea8ad2c6d21..09fb17a6cea109 100644 --- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc +++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc @@ -2385,63 +2385,6 @@ void TurboAssembler::Jump(Handle code_object, RelocInfo::Mode rmode) { jmp(code_object, rmode); } -void TurboAssembler::RetpolineCall(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), reg); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineCall(Address destination, RelocInfo::Mode rmode) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), destination, rmode); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineJump(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_target, capture_spec; - - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), reg); - ret(0); -} - void TurboAssembler::CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label* condition_met, Label::Distance condition_met_distance) { diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h index 527c3570470626..1d5243f51815d4 100644 --- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h +++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h @@ -158,15 +158,10 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { JumpMode jump_mode = JumpMode::kJump); void Jump(const ExternalReference& reference); - void RetpolineCall(Register reg); - void RetpolineCall(Address destination, RelocInfo::Mode rmode); - void Jump(Handle code_object, RelocInfo::Mode rmode); void LoadMap(Register destination, Register object); - void RetpolineJump(Register reg); - void Trap(); void DebugBreak(); @@ -480,9 +475,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - void ResetSpeculationPoisonRegister() { UNREACHABLE(); } - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/ia32/register-ia32.h b/deps/v8/src/codegen/ia32/register-ia32.h index 5dc035d96690e4..37a5783deda0d9 100644 --- a/deps/v8/src/codegen/ia32/register-ia32.h +++ b/deps/v8/src/codegen/ia32/register-ia32.h @@ -161,9 +161,6 @@ constexpr Register kWasmCompileLazyFuncIndexRegister = edi; constexpr Register kRootRegister = ebx; -// TODO(860429): Remove remaining poisoning infrastructure on ia32. -constexpr Register kSpeculationPoisonRegister = no_reg; - constexpr DoubleRegister kFPReturnRegister0 = xmm1; // xmm0 isn't allocatable. } // namespace internal diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.cc b/deps/v8/src/codegen/mips/macro-assembler-mips.cc index 9c1af1cb056c7f..72166769eb6ca2 100644 --- a/deps/v8/src/codegen/mips/macro-assembler-mips.cc +++ b/deps/v8/src/codegen/mips/macro-assembler-mips.cc @@ -5519,10 +5519,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.h b/deps/v8/src/codegen/mips/macro-assembler-mips.h index ffa5f5820d2d8e..365640a617ab7a 100644 --- a/deps/v8/src/codegen/mips/macro-assembler-mips.h +++ b/deps/v8/src/codegen/mips/macro-assembler-mips.h @@ -817,8 +817,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/mips/register-mips.h b/deps/v8/src/codegen/mips/register-mips.h index 95164a86c1c3a7..7fd259bf9ba328 100644 --- a/deps/v8/src/codegen/mips/register-mips.h +++ b/deps/v8/src/codegen/mips/register-mips.h @@ -362,7 +362,6 @@ constexpr Register kReturnRegister2 = a0; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a0; -constexpr Register kSpeculationPoisonRegister = t3; constexpr Register kInterpreterAccumulatorRegister = v0; constexpr Register kInterpreterBytecodeOffsetRegister = t4; constexpr Register kInterpreterBytecodeArrayRegister = t5; diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc index 708cf4baa6736a..2d684b9087ff4a 100644 --- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc +++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc @@ -6059,10 +6059,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h index a4991bcb1e642d..1ad5f4fdae64df 100644 --- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h +++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h @@ -836,8 +836,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/mips64/register-mips64.h b/deps/v8/src/codegen/mips64/register-mips64.h index 51b03aba1fa27a..1fbe3ec7ac2c7c 100644 --- a/deps/v8/src/codegen/mips64/register-mips64.h +++ b/deps/v8/src/codegen/mips64/register-mips64.h @@ -373,7 +373,6 @@ constexpr Register kReturnRegister2 = a0; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a0; -constexpr Register kSpeculationPoisonRegister = t3; constexpr Register kInterpreterAccumulatorRegister = v0; constexpr Register kInterpreterBytecodeOffsetRegister = t0; constexpr Register kInterpreterBytecodeArrayRegister = t1; diff --git a/deps/v8/src/codegen/optimized-compilation-info.cc b/deps/v8/src/codegen/optimized-compilation-info.cc index e3ca07a3c9d015..b8eb5e62fe4cf7 100644 --- a/deps/v8/src/codegen/optimized-compilation-info.cc +++ b/deps/v8/src/codegen/optimized-compilation-info.cc @@ -63,31 +63,7 @@ OptimizedCompilationInfo::OptimizedCompilationInfo( ConfigureFlags(); } -#ifdef DEBUG -bool OptimizedCompilationInfo::FlagSetIsValid(Flag flag) const { - switch (flag) { - case kPoisonRegisterArguments: - return untrusted_code_mitigations(); - default: - return true; - } - UNREACHABLE(); -} - -bool OptimizedCompilationInfo::FlagGetIsValid(Flag flag) const { - switch (flag) { - case kPoisonRegisterArguments: - if (!GetFlag(kPoisonRegisterArguments)) return true; - return untrusted_code_mitigations() && called_with_code_start_register(); - default: - return true; - } - UNREACHABLE(); -} -#endif // DEBUG - void OptimizedCompilationInfo::ConfigureFlags() { - if (FLAG_untrusted_code_mitigations) set_untrusted_code_mitigations(); if (FLAG_turbo_inline_js_wasm_calls) set_inline_js_wasm_calls(); if (!is_osr() && (IsTurboprop() || FLAG_concurrent_inlining)) { @@ -104,7 +80,6 @@ void OptimizedCompilationInfo::ConfigureFlags() { case CodeKind::TURBOPROP: set_called_with_code_start_register(); set_switch_jump_table(); - if (FLAG_untrusted_code_mitigations) set_poison_register_arguments(); // TODO(yangguo): Disable this in case of debugging for crbug.com/826613 if (FLAG_analyze_environment_liveness) set_analyze_environment_liveness(); break; diff --git a/deps/v8/src/codegen/optimized-compilation-info.h b/deps/v8/src/codegen/optimized-compilation-info.h index b7ed0d29c4f477..d92964c79613d9 100644 --- a/deps/v8/src/codegen/optimized-compilation-info.h +++ b/deps/v8/src/codegen/optimized-compilation-info.h @@ -58,21 +58,19 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { V(SourcePositions, source_positions, 4) \ V(BailoutOnUninitialized, bailout_on_uninitialized, 5) \ V(LoopPeeling, loop_peeling, 6) \ - V(UntrustedCodeMitigations, untrusted_code_mitigations, 7) \ - V(SwitchJumpTable, switch_jump_table, 8) \ - V(CalledWithCodeStartRegister, called_with_code_start_register, 9) \ - V(PoisonRegisterArguments, poison_register_arguments, 10) \ - V(AllocationFolding, allocation_folding, 11) \ - V(AnalyzeEnvironmentLiveness, analyze_environment_liveness, 12) \ - V(TraceTurboJson, trace_turbo_json, 13) \ - V(TraceTurboGraph, trace_turbo_graph, 14) \ - V(TraceTurboScheduled, trace_turbo_scheduled, 15) \ - V(TraceTurboAllocation, trace_turbo_allocation, 16) \ - V(TraceHeapBroker, trace_heap_broker, 17) \ - V(WasmRuntimeExceptionSupport, wasm_runtime_exception_support, 18) \ - V(ConcurrentInlining, concurrent_inlining, 19) \ - V(DiscardResultForTesting, discard_result_for_testing, 20) \ - V(InlineJSWasmCalls, inline_js_wasm_calls, 21) + V(SwitchJumpTable, switch_jump_table, 7) \ + V(CalledWithCodeStartRegister, called_with_code_start_register, 8) \ + V(AllocationFolding, allocation_folding, 9) \ + V(AnalyzeEnvironmentLiveness, analyze_environment_liveness, 10) \ + V(TraceTurboJson, trace_turbo_json, 11) \ + V(TraceTurboGraph, trace_turbo_graph, 12) \ + V(TraceTurboScheduled, trace_turbo_scheduled, 13) \ + V(TraceTurboAllocation, trace_turbo_allocation, 14) \ + V(TraceHeapBroker, trace_heap_broker, 15) \ + V(WasmRuntimeExceptionSupport, wasm_runtime_exception_support, 16) \ + V(ConcurrentInlining, concurrent_inlining, 17) \ + V(DiscardResultForTesting, discard_result_for_testing, 18) \ + V(InlineJSWasmCalls, inline_js_wasm_calls, 19) enum Flag { #define DEF_ENUM(Camel, Lower, Bit) k##Camel = 1 << Bit, @@ -82,7 +80,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { #define DEF_GETTER(Camel, Lower, Bit) \ bool Lower() const { \ - DCHECK(FlagGetIsValid(k##Camel)); \ return GetFlag(k##Camel); \ } FLAGS(DEF_GETTER) @@ -90,17 +87,11 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { #define DEF_SETTER(Camel, Lower, Bit) \ void set_##Lower() { \ - DCHECK(FlagSetIsValid(k##Camel)); \ SetFlag(k##Camel); \ } FLAGS(DEF_SETTER) #undef DEF_SETTER -#ifdef DEBUG - bool FlagGetIsValid(Flag flag) const; - bool FlagSetIsValid(Flag flag) const; -#endif // DEBUG - // Construct a compilation info for optimized compilation. OptimizedCompilationInfo(Zone* zone, Isolate* isolate, Handle shared, @@ -141,13 +132,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { } compiler::NodeObserver* node_observer() const { return node_observer_; } - void SetPoisoningMitigationLevel(PoisoningMitigationLevel poisoning_level) { - poisoning_level_ = poisoning_level; - } - PoisoningMitigationLevel GetPoisoningMitigationLevel() const { - return poisoning_level_; - } - // Code getters and setters. void SetCode(Handle code); @@ -269,8 +253,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { // Compilation flags. unsigned flags_ = 0; - PoisoningMitigationLevel poisoning_level_ = - PoisoningMitigationLevel::kDontPoison; const CodeKind code_kind_; Builtin builtin_ = Builtin::kNoBuiltinId; diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc index f243055490cfa5..447cc8e4dbc314 100644 --- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc +++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc @@ -3453,10 +3453,6 @@ void TurboAssembler::SwapSimd128(MemOperand src, MemOperand dst, addi(sp, sp, Operand(2 * kSimd128Size)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::JumpIfEqual(Register x, int32_t y, Label* dest) { CmpS64(x, Operand(y), r0); beq(dest); diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h index 035c29b1e5266e..95290af5aa8120 100644 --- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h +++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h @@ -735,8 +735,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // The return address on the stack is used by frame iteration. void StoreReturnAddressAndCall(Register target); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/ppc/register-ppc.h b/deps/v8/src/codegen/ppc/register-ppc.h index ffeb327055fb55..68adfdb1557bce 100644 --- a/deps/v8/src/codegen/ppc/register-ppc.h +++ b/deps/v8/src/codegen/ppc/register-ppc.h @@ -349,7 +349,6 @@ constexpr Register kReturnRegister2 = r5; constexpr Register kJSFunctionRegister = r4; constexpr Register kContextRegister = r30; constexpr Register kAllocateSizeRegister = r4; -constexpr Register kSpeculationPoisonRegister = r14; constexpr Register kInterpreterAccumulatorRegister = r3; constexpr Register kInterpreterBytecodeOffsetRegister = r15; constexpr Register kInterpreterBytecodeArrayRegister = r16; diff --git a/deps/v8/src/codegen/register-configuration.cc b/deps/v8/src/codegen/register-configuration.cc index aca5295c11929e..17dddcd88278ae 100644 --- a/deps/v8/src/codegen/register-configuration.cc +++ b/deps/v8/src/codegen/register-configuration.cc @@ -102,42 +102,6 @@ class ArchDefaultRegisterConfiguration : public RegisterConfiguration { DEFINE_LAZY_LEAKY_OBJECT_GETTER(ArchDefaultRegisterConfiguration, GetDefaultRegisterConfiguration) -// Allocatable registers with the masking register removed. -class ArchDefaultPoisoningRegisterConfiguration : public RegisterConfiguration { - public: - ArchDefaultPoisoningRegisterConfiguration() - : RegisterConfiguration( - Register::kNumRegisters, DoubleRegister::kNumRegisters, - kMaxAllocatableGeneralRegisterCount - 1, - get_num_allocatable_double_registers(), - InitializeGeneralRegisterCodes(), get_allocatable_double_codes(), - kSimpleFPAliasing ? AliasingKind::OVERLAP : AliasingKind::COMBINE) { - } - - private: - static const int* InitializeGeneralRegisterCodes() { - int filtered_index = 0; - for (int i = 0; i < kMaxAllocatableGeneralRegisterCount; ++i) { - if (kAllocatableGeneralCodes[i] != kSpeculationPoisonRegister.code()) { - allocatable_general_codes_[filtered_index] = - kAllocatableGeneralCodes[i]; - filtered_index++; - } - } - DCHECK_EQ(filtered_index, kMaxAllocatableGeneralRegisterCount - 1); - return allocatable_general_codes_; - } - - static int - allocatable_general_codes_[kMaxAllocatableGeneralRegisterCount - 1]; -}; - -int ArchDefaultPoisoningRegisterConfiguration::allocatable_general_codes_ - [kMaxAllocatableGeneralRegisterCount - 1]; - -DEFINE_LAZY_LEAKY_OBJECT_GETTER(ArchDefaultPoisoningRegisterConfiguration, - GetDefaultPoisoningRegisterConfiguration) - // RestrictedRegisterConfiguration uses the subset of allocatable general // registers the architecture support, which results into generating assembly // to use less registers. Currently, it's only used by RecordWrite code stub. @@ -184,10 +148,6 @@ const RegisterConfiguration* RegisterConfiguration::Default() { return GetDefaultRegisterConfiguration(); } -const RegisterConfiguration* RegisterConfiguration::Poisoning() { - return GetDefaultPoisoningRegisterConfiguration(); -} - const RegisterConfiguration* RegisterConfiguration::RestrictGeneralRegisters( RegList registers) { int num = NumRegs(registers); diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc index 4d231adfb4823e..b49cd669441080 100644 --- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc +++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc @@ -4744,10 +4744,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h index 75d99a34059b1b..cd7310e00aa671 100644 --- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h +++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h @@ -858,8 +858,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/riscv64/register-riscv64.h b/deps/v8/src/codegen/riscv64/register-riscv64.h index 69654a4f54d156..af652f0e61a86e 100644 --- a/deps/v8/src/codegen/riscv64/register-riscv64.h +++ b/deps/v8/src/codegen/riscv64/register-riscv64.h @@ -344,7 +344,6 @@ constexpr Register kReturnRegister2 = a2; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a1; -constexpr Register kSpeculationPoisonRegister = a7; constexpr Register kInterpreterAccumulatorRegister = a0; constexpr Register kInterpreterBytecodeOffsetRegister = t0; constexpr Register kInterpreterBytecodeArrayRegister = t1; diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.cc b/deps/v8/src/codegen/s390/macro-assembler-s390.cc index 4de7f2cf4bb292..481105cdd36b3d 100644 --- a/deps/v8/src/codegen/s390/macro-assembler-s390.cc +++ b/deps/v8/src/codegen/s390/macro-assembler-s390.cc @@ -4670,10 +4670,6 @@ void TurboAssembler::SwapSimd128(MemOperand src, MemOperand dst, lay(sp, MemOperand(sp, kSimd128Size)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::ComputeCodeStartAddress(Register dst) { larl(dst, Operand(-pc_offset() / 2)); } diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.h b/deps/v8/src/codegen/s390/macro-assembler-s390.h index 51cdb48326380e..1e3567cf9cf222 100644 --- a/deps/v8/src/codegen/s390/macro-assembler-s390.h +++ b/deps/v8/src/codegen/s390/macro-assembler-s390.h @@ -1015,7 +1015,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label* condition_met); - void ResetSpeculationPoisonRegister(); void ComputeCodeStartAddress(Register dst); void LoadPC(Register dst); diff --git a/deps/v8/src/codegen/s390/register-s390.h b/deps/v8/src/codegen/s390/register-s390.h index 48accf08c5d0c4..6e3b6a3e2b226a 100644 --- a/deps/v8/src/codegen/s390/register-s390.h +++ b/deps/v8/src/codegen/s390/register-s390.h @@ -253,7 +253,6 @@ constexpr Register kReturnRegister2 = r4; constexpr Register kJSFunctionRegister = r3; constexpr Register kContextRegister = r13; constexpr Register kAllocateSizeRegister = r3; -constexpr Register kSpeculationPoisonRegister = r9; constexpr Register kInterpreterAccumulatorRegister = r2; constexpr Register kInterpreterBytecodeOffsetRegister = r6; constexpr Register kInterpreterBytecodeArrayRegister = r7; diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.cc b/deps/v8/src/codegen/x64/macro-assembler-x64.cc index 5a8dc356b8f45e..0ac3b3697914da 100644 --- a/deps/v8/src/codegen/x64/macro-assembler-x64.cc +++ b/deps/v8/src/codegen/x64/macro-assembler-x64.cc @@ -1993,47 +1993,6 @@ void TurboAssembler::JumpCodeTObject(Register code, JumpMode jump_mode) { } } -void TurboAssembler::RetpolineCall(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - movq(Operand(rsp, 0), reg); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineCall(Address destination, RelocInfo::Mode rmode) { - Move(kScratchRegister, destination, rmode); - RetpolineCall(kScratchRegister); -} - -void TurboAssembler::RetpolineJump(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_target, capture_spec; - - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - movq(Operand(rsp, 0), reg); - ret(0); -} - void TurboAssembler::Pmaddwd(XMMRegister dst, XMMRegister src1, Operand src2) { if (CpuFeatures::IsSupported(AVX)) { CpuFeatureScope avx_scope(this, AVX); @@ -3523,11 +3482,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { leaq(dst, Operand(¤t, -pc)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - // TODO(turbofan): Perhaps, we want to put an lfence here. - Move(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.h b/deps/v8/src/codegen/x64/macro-assembler-x64.h index 02b9eb410ec837..25689b01d970a9 100644 --- a/deps/v8/src/codegen/x64/macro-assembler-x64.h +++ b/deps/v8/src/codegen/x64/macro-assembler-x64.h @@ -432,17 +432,12 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { void CallCodeTObject(Register code); void JumpCodeTObject(Register code, JumpMode jump_mode = JumpMode::kJump); - void RetpolineCall(Register reg); - void RetpolineCall(Address destination, RelocInfo::Mode rmode); - void Jump(Address destination, RelocInfo::Mode rmode); void Jump(const ExternalReference& reference); void Jump(Operand op); void Jump(Handle code_object, RelocInfo::Mode rmode, Condition cc = always); - void RetpolineJump(Register reg); - void CallForDeoptimization(Builtin target, int deopt_id, Label* exit, DeoptimizeKind kind, Label* ret, Label* jump_deoptimization_entry_label); @@ -632,8 +627,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/x64/register-x64.h b/deps/v8/src/codegen/x64/register-x64.h index 61e7ccf396a3e1..b8d97e104b0a73 100644 --- a/deps/v8/src/codegen/x64/register-x64.h +++ b/deps/v8/src/codegen/x64/register-x64.h @@ -212,7 +212,6 @@ constexpr Register kReturnRegister2 = r8; constexpr Register kJSFunctionRegister = rdi; constexpr Register kContextRegister = rsi; constexpr Register kAllocateSizeRegister = rdx; -constexpr Register kSpeculationPoisonRegister = r11; constexpr Register kInterpreterAccumulatorRegister = rax; constexpr Register kInterpreterBytecodeOffsetRegister = r9; constexpr Register kInterpreterBytecodeArrayRegister = r12; diff --git a/deps/v8/src/common/globals.h b/deps/v8/src/common/globals.h index 6aee59eb83fd54..a2506ef63c7124 100644 --- a/deps/v8/src/common/globals.h +++ b/deps/v8/src/common/globals.h @@ -1701,20 +1701,6 @@ enum IsolateAddressId { kIsolateAddressCount }; -enum class PoisoningMitigationLevel { - kPoisonAll, - kDontPoison, - kPoisonCriticalOnly -}; - -enum class LoadSensitivity { - kCritical, // Critical loads are poisoned whenever we can run untrusted - // code (i.e., when --untrusted-code-mitigations is on). - kUnsafe, // Unsafe loads are poisoned when full poisoning is on - // (--branch-load-poisoning). - kSafe // Safe loads are never poisoned. -}; - // The reason for a WebAssembly trap. #define FOREACH_WASM_TRAPREASON(V) \ V(TrapUnreachable) \ diff --git a/deps/v8/src/compiler/access-builder.cc b/deps/v8/src/compiler/access-builder.cc index 675371df57a99b..ea2c35d9537951 100644 --- a/deps/v8/src/compiler/access-builder.cc +++ b/deps/v8/src/compiler/access-builder.cc @@ -82,25 +82,25 @@ FieldAccess AccessBuilder::ForJSObjectPropertiesOrHash() { FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, MaybeHandle(), MaybeHandle(), Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + kFullWriteBarrier}; return access; } // static FieldAccess AccessBuilder::ForJSObjectPropertiesOrHashKnownPointer() { - FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, - MaybeHandle(), MaybeHandle(), - Type::Any(), MachineType::TaggedPointer(), - kPointerWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, + MaybeHandle(), MaybeHandle(), + Type::Any(), MachineType::TaggedPointer(), + kPointerWriteBarrier}; return access; } // static FieldAccess AccessBuilder::ForJSObjectElements() { - FieldAccess access = {kTaggedBase, JSObject::kElementsOffset, - MaybeHandle(), MaybeHandle(), - Type::Internal(), MachineType::TaggedPointer(), - kPointerWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, JSObject::kElementsOffset, + MaybeHandle(), MaybeHandle(), + Type::Internal(), MachineType::TaggedPointer(), + kPointerWriteBarrier}; return access; } @@ -410,7 +410,7 @@ FieldAccess AccessBuilder::ForJSTypedArrayBasePointer() { FieldAccess access = {kTaggedBase, JSTypedArray::kBasePointerOffset, MaybeHandle(), MaybeHandle(), Type::OtherInternal(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + kFullWriteBarrier}; return access; } @@ -424,7 +424,6 @@ FieldAccess AccessBuilder::ForJSTypedArrayExternalPointer() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kCritical, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -445,7 +444,6 @@ FieldAccess AccessBuilder::ForJSDataViewDataPointer() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kUnsafe, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -756,7 +754,6 @@ FieldAccess AccessBuilder::ForExternalStringResourceData() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kUnsafe, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -902,10 +899,10 @@ FieldAccess AccessBuilder::ForWeakFixedArraySlot(int index) { } // static FieldAccess AccessBuilder::ForCellValue() { - FieldAccess access = {kTaggedBase, Cell::kValueOffset, - Handle(), MaybeHandle(), - Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, Cell::kValueOffset, + Handle(), MaybeHandle(), + Type::Any(), MachineType::AnyTagged(), + kFullWriteBarrier}; return access; } @@ -966,11 +963,9 @@ ElementAccess AccessBuilder::ForSloppyArgumentsElementsMappedEntry() { } // statics -ElementAccess AccessBuilder::ForFixedArrayElement( - ElementsKind kind, LoadSensitivity load_sensitivity) { - ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, - Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, load_sensitivity}; +ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { + ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), + MachineType::AnyTagged(), kFullWriteBarrier}; switch (kind) { case PACKED_SMI_ELEMENTS: access.type = Type::SignedSmall(); @@ -1038,59 +1033,50 @@ FieldAccess AccessBuilder::ForEnumCacheIndices() { } // static -ElementAccess AccessBuilder::ForTypedArrayElement( - ExternalArrayType type, bool is_external, - LoadSensitivity load_sensitivity) { +ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type, + bool is_external) { BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase; int header_size = is_external ? 0 : ByteArray::kHeaderSize; switch (type) { case kExternalInt8Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int8(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int8(), kNoWriteBarrier}; return access; } case kExternalUint8Array: case kExternalUint8ClampedArray: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint8(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint8(), kNoWriteBarrier}; return access; } case kExternalInt16Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int16(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int16(), kNoWriteBarrier}; return access; } case kExternalUint16Array: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint16(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint16(), kNoWriteBarrier}; return access; } case kExternalInt32Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int32(), kNoWriteBarrier}; return access; } case kExternalUint32Array: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint32(), kNoWriteBarrier}; return access; } case kExternalFloat32Array: { - ElementAccess access = {taggedness, header_size, - Type::Number(), MachineType::Float32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Number(), + MachineType::Float32(), kNoWriteBarrier}; return access; } case kExternalFloat64Array: { - ElementAccess access = {taggedness, header_size, - Type::Number(), MachineType::Float64(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Number(), + MachineType::Float64(), kNoWriteBarrier}; return access; } case kExternalBigInt64Array: diff --git a/deps/v8/src/compiler/access-builder.h b/deps/v8/src/compiler/access-builder.h index fa68628cf80007..3aa29a2d55a115 100644 --- a/deps/v8/src/compiler/access-builder.h +++ b/deps/v8/src/compiler/access-builder.h @@ -299,9 +299,7 @@ class V8_EXPORT_PRIVATE AccessBuilder final // Provides access to FixedArray elements. static ElementAccess ForFixedArrayElement(); - static ElementAccess ForFixedArrayElement( - ElementsKind kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe); + static ElementAccess ForFixedArrayElement(ElementsKind kind); // Provides access to SloppyArgumentsElements elements. static ElementAccess ForSloppyArgumentsElementsMappedEntry(); @@ -319,9 +317,8 @@ class V8_EXPORT_PRIVATE AccessBuilder final static FieldAccess ForEnumCacheIndices(); // Provides access to Fixed{type}TypedArray and External{type}Array elements. - static ElementAccess ForTypedArrayElement( - ExternalArrayType type, bool is_external, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe); + static ElementAccess ForTypedArrayElement(ExternalArrayType type, + bool is_external); // Provides access to HashTable fields. static FieldAccess ForHashTableBaseNumberOfElements(); diff --git a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc index 29c7897ec9ef60..9617003880eed5 100644 --- a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc +++ b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc @@ -36,9 +36,7 @@ class ArmOperandConverter final : public InstructionOperandConverter { SBit OutputSBit() const { switch (instr_->flags_mode()) { case kFlags_branch: - case kFlags_branch_and_poison: case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: case kFlags_set: case kFlags_trap: case kFlags_select: @@ -322,35 +320,6 @@ Condition FlagsConditionToCondition(FlagsCondition condition) { UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, - ArmOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->and_(value, value, Operand(kSpeculationPoisonRegister)); - } -} - -void ComputePoisonedAddressForLoad(CodeGenerator* codegen, - InstructionCode opcode, - ArmOperandConverter const& i, - Register address) { - DCHECK_EQ(kMemoryAccessPoisoned, AccessModeField::decode(opcode)); - switch (AddressingModeField::decode(opcode)) { - case kMode_Offset_RI: - codegen->tasm()->mov(address, i.InputImmediate(1)); - codegen->tasm()->add(address, address, i.InputRegister(0)); - break; - case kMode_Offset_RR: - codegen->tasm()->add(address, i.InputRegister(0), i.InputRegister(1)); - break; - default: - UNREACHABLE(); - } - codegen->tasm()->and_(address, address, Operand(kSpeculationPoisonRegister)); -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -691,25 +660,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.Acquire(); - - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(scratch); - __ cmp(kJavaScriptCallCodeStartRegister, scratch); - __ mov(kSpeculationPoisonRegister, Operand(-1), SBit::LeaveCC, eq); - __ mov(kSpeculationPoisonRegister, Operand(0), SBit::LeaveCC, ne); - __ csdb(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ and_(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ and_(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ and_(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1619,12 +1569,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArmLdrb: __ ldrb(i.OutputRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmLdrsb: __ ldrsb(i.OutputRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStrb: __ strb(i.InputRegister(0), i.InputOffset(1)); @@ -1632,11 +1580,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArmLdrh: __ ldrh(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmLdrsh: __ ldrsh(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStrh: __ strh(i.InputRegister(0), i.InputOffset(1)); @@ -1644,22 +1590,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArmLdr: __ ldr(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStr: __ str(i.InputRegister(0), i.InputOffset(1)); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; case kArmVldrF32: { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - UseScratchRegisterScope temps(tasm()); - Register address = temps.Acquire(); - ComputePoisonedAddressForLoad(this, opcode, i, address); - __ vldr(i.OutputFloatRegister(), address, 0); - } else { - __ vldr(i.OutputFloatRegister(), i.InputOffset()); - } + __ vldr(i.OutputFloatRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; } @@ -1688,15 +1625,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; } case kArmVldrF64: { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - UseScratchRegisterScope temps(tasm()); - Register address = temps.Acquire(); - ComputePoisonedAddressForLoad(this, opcode, i, address); - __ vldr(i.OutputDoubleRegister(), address, 0); - } else { - __ vldr(i.OutputDoubleRegister(), i.InputOffset()); - } + __ vldr(i.OutputDoubleRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; } @@ -1832,10 +1761,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ isb(SY); break; } - case kArchWordPoisonOnSpeculation: - __ and_(i.OutputRegister(0), i.InputRegister(0), - Operand(kSpeculationPoisonRegister)); - break; case kArmVmullLow: { auto dt = static_cast(MiscField::decode(instr->opcode())); __ vmull(dt, i.OutputSimd128Register(), i.InputSimd128Register(0).low(), @@ -3597,20 +3522,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ eor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - Operand(kSpeculationPoisonRegister), SBit::LeaveCC, - FlagsConditionToCondition(condition)); - __ csdb(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3805,7 +3716,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc index 2698d45ae7f4de..a624b1864064f1 100644 --- a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc +++ b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc @@ -630,17 +630,11 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } InstructionOperand output = g.DefineAsRegister(node); EmitLoad(this, opcode, &output, base, index); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc index c1213834269645..ff88c93cdcf80e 100644 --- a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc +++ b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc @@ -460,47 +460,6 @@ void EmitOOLTrapIfNeeded(Zone* zone, CodeGenerator* codegen, } #endif // V8_ENABLE_WEBASSEMBLY -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - Arm64OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - Register poison = value.Is64Bits() ? kSpeculationPoisonRegister - : kSpeculationPoisonRegister.W(); - codegen->tasm()->And(value, value, Operand(poison)); - } -} - -void EmitMaybePoisonedFPLoad(CodeGenerator* codegen, InstructionCode opcode, - Arm64OperandConverter* i, VRegister output_reg) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - AddressingMode address_mode = AddressingModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned && address_mode != kMode_Root) { - UseScratchRegisterScope temps(codegen->tasm()); - Register address = temps.AcquireX(); - switch (address_mode) { - case kMode_MRI: // Fall through. - case kMode_MRR: - codegen->tasm()->Add(address, i->InputRegister(0), i->InputOperand(1)); - break; - case kMode_Operand2_R_LSL_I: - codegen->tasm()->Add(address, i->InputRegister(0), - i->InputOperand2_64(1)); - break; - default: - // Note: we don't need poisoning for kMode_Root loads as those loads - // target a fixed offset from root register which is set once when - // initializing the vm. - UNREACHABLE(); - } - codegen->tasm()->And(address, address, Operand(kSpeculationPoisonRegister)); - codegen->tasm()->Ldr(output_reg, MemOperand(address)); - } else { - codegen->tasm()->Ldr(output_reg, i->MemoryOperand()); - } -} - // Handles unary ops that work for float (scalar), double (scalar), or NEON. template void EmitFpOrNeonUnop(TurboAssembler* tasm, Fn fn, Instruction* instr, @@ -714,29 +673,6 @@ void CodeGenerator::BailoutIfDeoptimized() { __ Bind(¬_deoptimized); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.AcquireX(); - - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(scratch); - __ Cmp(kJavaScriptCallCodeStartRegister, scratch); - __ Csetm(kSpeculationPoisonRegister, eq); - __ Csdb(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.AcquireX(); - - __ Mov(scratch, sp); - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(scratch, scratch, kSpeculationPoisonRegister); - __ Mov(sp, scratch); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1814,12 +1750,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrb: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Ldrsb: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrsbW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1832,12 +1766,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrh: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Ldrsh: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrshW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1850,12 +1782,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrsw: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldr(i.OutputRegister32(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64StrW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1864,19 +1794,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldr: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldr(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressTaggedSigned: __ DecompressTaggedSigned(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressTaggedPointer: __ DecompressTaggedPointer(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressAnyTagged: __ DecompressAnyTagged(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Str: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1887,7 +1813,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArm64LdrS: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); - EmitMaybePoisonedFPLoad(this, opcode, &i, i.OutputDoubleRegister().S()); + __ Ldr(i.OutputDoubleRegister().S(), i.MemoryOperand()); break; case kArm64StrS: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1895,7 +1821,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArm64LdrD: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); - EmitMaybePoisonedFPLoad(this, opcode, &i, i.OutputDoubleRegister()); + __ Ldr(i.OutputDoubleRegister(), i.MemoryOperand()); break; case kArm64StrD: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1916,10 +1842,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ Dsb(FullSystem, BarrierAll); __ Isb(); break; - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(0), i.InputRegister(0), - Operand(kSpeculationPoisonRegister)); - break; case kWord32AtomicLoadInt8: ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldarb, Register32); __ Sxtb(i.OutputRegister(0), i.OutputRegister(0)); @@ -2907,7 +2829,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { ArchOpcode opcode = instr->arch_opcode(); if (opcode == kArm64CompareAndBranch32) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Cbz(i.InputRegister32(0), tlabel); @@ -2919,7 +2840,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64CompareAndBranch) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Cbz(i.InputRegister64(0), tlabel); @@ -2931,7 +2851,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64TestAndBranch32) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Tbz(i.InputRegister32(0), i.InputInt5(1), tlabel); @@ -2943,7 +2862,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64TestAndBranch) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Tbz(i.InputRegister64(0), i.InputInt6(1), tlabel); @@ -2961,19 +2879,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ B(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ CmovX(kSpeculationPoisonRegister, xzr, - FlagsConditionToCondition(condition)); - __ Csdb(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3143,7 +3048,6 @@ void CodeGenerator::AssembleConstructFrame() { // arguments count was pushed. required_slots -= unoptimized_frame_slots - TurboAssembler::kExtraSlotClaimedByPrologue; - ResetSpeculationPoison(); } #if V8_ENABLE_WEBASSEMBLY diff --git a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc index 6a1a101e35baaa..c8bada6ab20d2e 100644 --- a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc +++ b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc @@ -845,10 +845,6 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } if (node->opcode() == IrOpcode::kProtectedLoad) { opcode |= AccessModeField::encode(kMemoryAccessProtected); } @@ -856,8 +852,6 @@ void InstructionSelector::VisitLoad(Node* node) { EmitLoad(this, node, opcode, immediate_mode, rep); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { VisitLoad(node); } void InstructionSelector::VisitStore(Node* node) { @@ -2324,9 +2318,6 @@ template bool TryEmitCbzOrTbz(InstructionSelector* selector, Node* node, typename CbzOrTbzMatchTrait::IntegralType value, Node* user, FlagsCondition cond, FlagsContinuation* cont) { - // Branch poisoning requires flags to be set, so when it's enabled for - // a particular branch, we shouldn't be applying the cbz/tbz optimization. - DCHECK(!cont->IsPoisoned()); // Only handle branches and deoptimisations. if (!cont->IsBranch() && !cont->IsDeoptimize()) return false; @@ -2414,7 +2405,7 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, std::swap(left, right); } - if (opcode == kArm64Cmp && !cont->IsPoisoned()) { + if (opcode == kArm64Cmp) { Int64Matcher m(right); if (m.HasResolvedValue()) { if (TryEmitCbzOrTbz<64>(selector, left, m.ResolvedValue(), node, @@ -2432,19 +2423,17 @@ void VisitWord32Compare(InstructionSelector* selector, Node* node, FlagsContinuation* cont) { Int32BinopMatcher m(node); FlagsCondition cond = cont->condition(); - if (!cont->IsPoisoned()) { - if (m.right().HasResolvedValue()) { - if (TryEmitCbzOrTbz<32>(selector, m.left().node(), - m.right().ResolvedValue(), node, cond, cont)) { - return; - } - } else if (m.left().HasResolvedValue()) { - FlagsCondition commuted_cond = CommuteFlagsCondition(cond); - if (TryEmitCbzOrTbz<32>(selector, m.right().node(), - m.left().ResolvedValue(), node, commuted_cond, - cont)) { - return; - } + if (m.right().HasResolvedValue()) { + if (TryEmitCbzOrTbz<32>(selector, m.left().node(), + m.right().ResolvedValue(), node, cond, cont)) { + return; + } + } else if (m.left().HasResolvedValue()) { + FlagsCondition commuted_cond = CommuteFlagsCondition(cond); + if (TryEmitCbzOrTbz<32>(selector, m.right().node(), + m.left().ResolvedValue(), node, commuted_cond, + cont)) { + return; } } ArchOpcode opcode = kArm64Cmp32; @@ -2533,8 +2522,7 @@ struct TestAndBranchMatcher { Matcher matcher_; void Initialize() { - if (cont_->IsBranch() && !cont_->IsPoisoned() && - matcher_.right().HasResolvedValue() && + if (cont_->IsBranch() && matcher_.right().HasResolvedValue() && base::bits::IsPowerOfTwo(matcher_.right().ResolvedValue())) { // If the mask has only one bit set, we can use tbz/tbnz. DCHECK((cont_->condition() == kEqual) || @@ -2842,7 +2830,7 @@ void InstructionSelector::VisitWordCompareZero(Node* user, Node* value, } // Branch could not be combined with a compare, compare against 0 and branch. - if (!cont->IsPoisoned() && cont->IsBranch()) { + if (cont->IsBranch()) { Emit(cont->Encode(kArm64CompareAndBranch32), g.NoOutput(), g.UseRegister(value), g.Label(cont->true_block()), g.Label(cont->false_block())); diff --git a/deps/v8/src/compiler/backend/code-generator.cc b/deps/v8/src/compiler/backend/code-generator.cc index 9e378b84584cdd..ed25a1f1ff72ed 100644 --- a/deps/v8/src/compiler/backend/code-generator.cc +++ b/deps/v8/src/compiler/backend/code-generator.cc @@ -41,14 +41,16 @@ class CodeGenerator::JumpTable final : public ZoneObject { size_t const target_count_; }; -CodeGenerator::CodeGenerator( - Zone* codegen_zone, Frame* frame, Linkage* linkage, - InstructionSequence* instructions, OptimizedCompilationInfo* info, - Isolate* isolate, base::Optional osr_helper, - int start_source_position, JumpOptimizationInfo* jump_opt, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, - Builtin builtin, size_t max_unoptimized_frame_height, - size_t max_pushed_argument_count, const char* debug_name) +CodeGenerator::CodeGenerator(Zone* codegen_zone, Frame* frame, Linkage* linkage, + InstructionSequence* instructions, + OptimizedCompilationInfo* info, Isolate* isolate, + base::Optional osr_helper, + int start_source_position, + JumpOptimizationInfo* jump_opt, + const AssemblerOptions& options, Builtin builtin, + size_t max_unoptimized_frame_height, + size_t max_pushed_argument_count, + const char* debug_name) : zone_(codegen_zone), isolate_(isolate), frame_access_state_(nullptr), @@ -80,7 +82,6 @@ CodeGenerator::CodeGenerator( codegen_zone, SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS), protected_instructions_(codegen_zone), result_(kSuccess), - poisoning_level_(poisoning_level), block_starts_(codegen_zone), instr_starts_(codegen_zone), debug_name_(debug_name) { @@ -284,9 +285,6 @@ void CodeGenerator::AssembleCode() { BailoutIfDeoptimized(); } - offsets_info_.init_poison = tasm()->pc_offset(); - InitializeSpeculationPoison(); - // Define deoptimization literals for all inlined functions. DCHECK_EQ(0u, deoptimization_literals_.size()); for (OptimizedCompilationInfo::InlinedFunctionHolder& inlined : @@ -355,8 +353,6 @@ void CodeGenerator::AssembleCode() { tasm()->bind(GetLabel(current_block_)); - TryInsertBranchPoisoning(block); - if (block->must_construct_frame()) { AssembleConstructFrame(); // We need to setup the root register after we assemble the prologue, to @@ -494,37 +490,6 @@ void CodeGenerator::AssembleCode() { result_ = kSuccess; } -void CodeGenerator::TryInsertBranchPoisoning(const InstructionBlock* block) { - // See if our predecessor was a basic block terminated by a branch_and_poison - // instruction. If yes, then perform the masking based on the flags. - if (block->PredecessorCount() != 1) return; - RpoNumber pred_rpo = (block->predecessors())[0]; - const InstructionBlock* pred = instructions()->InstructionBlockAt(pred_rpo); - if (pred->code_start() == pred->code_end()) return; - Instruction* instr = instructions()->InstructionAt(pred->code_end() - 1); - FlagsMode mode = FlagsModeField::decode(instr->opcode()); - switch (mode) { - case kFlags_branch_and_poison: { - BranchInfo branch; - RpoNumber target = ComputeBranchInfo(&branch, instr); - if (!target.IsValid()) { - // Non-trivial branch, add the masking code. - FlagsCondition condition = branch.condition; - if (branch.false_label == GetLabel(block->rpo_number())) { - condition = NegateFlagsCondition(condition); - } - AssembleBranchPoisoning(condition, instr); - } - break; - } - case kFlags_deoptimize_and_poison: { - UNREACHABLE(); - } - default: - break; - } -} - void CodeGenerator::AssembleArchBinarySearchSwitchRange( Register input, RpoNumber def_block, std::pair* begin, std::pair* end) { @@ -839,8 +804,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( FlagsCondition condition = FlagsConditionField::decode(instr->opcode()); switch (mode) { - case kFlags_branch: - case kFlags_branch_and_poison: { + case kFlags_branch: { BranchInfo branch; RpoNumber target = ComputeBranchInfo(&branch, instr); if (target.IsValid()) { @@ -854,8 +818,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( AssembleArchBranch(instr, &branch); break; } - case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: { + case kFlags_deoptimize: { // Assemble a conditional eager deoptimization after this instruction. InstructionOperandConverter i(this, instr); size_t frame_state_offset = @@ -864,17 +827,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( DeoptImmedArgsCountField::decode(instr->opcode()); DeoptimizationExit* const exit = AddDeoptimizationExit( instr, frame_state_offset, immediate_args_count); - Label continue_label; BranchInfo branch; branch.condition = condition; branch.true_label = exit->label(); - branch.false_label = &continue_label; + branch.false_label = exit->continue_label(); branch.fallthru = true; AssembleArchDeoptBranch(instr, &branch); - tasm()->bind(&continue_label); - if (mode == kFlags_deoptimize_and_poison) { - AssembleBranchPoisoning(NegateFlagsCondition(branch.condition), instr); - } tasm()->bind(exit->continue_label()); break; } @@ -900,11 +858,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( } } - // TODO(jarin) We should thread the flag through rather than set it. - if (instr->IsCall()) { - ResetSpeculationPoison(); - } - return kSuccess; } @@ -1087,9 +1040,9 @@ void CodeGenerator::RecordCallPosition(Instruction* instr) { if (needs_frame_state) { MarkLazyDeoptSite(); - // If the frame state is present, it starts at argument 2 - after - // the code address and the poison-alias index. - size_t frame_state_offset = 2; + // If the frame state is present, it starts at argument 1 - after + // the code address. + size_t frame_state_offset = 1; FrameStateDescriptor* descriptor = GetDeoptimizationEntry(instr, frame_state_offset).descriptor(); int pc_offset = tasm()->pc_offset_for_safepoint(); @@ -1428,29 +1381,6 @@ DeoptimizationExit* CodeGenerator::AddDeoptimizationExit( OutputFrameStateCombine::Ignore()); } -void CodeGenerator::InitializeSpeculationPoison() { - if (poisoning_level_ == PoisoningMitigationLevel::kDontPoison) return; - - // Initialize {kSpeculationPoisonRegister} either by comparing the expected - // with the actual call target, or by unconditionally using {-1} initially. - // Masking register arguments with it only makes sense in the first case. - if (info()->called_with_code_start_register()) { - tasm()->RecordComment("-- Prologue: generate speculation poison --"); - GenerateSpeculationPoisonFromCodeStartRegister(); - if (info()->poison_register_arguments()) { - AssembleRegisterArgumentPoisoning(); - } - } else { - ResetSpeculationPoison(); - } -} - -void CodeGenerator::ResetSpeculationPoison() { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - tasm()->ResetSpeculationPoisonRegister(); - } -} - OutOfLineCode::OutOfLineCode(CodeGenerator* gen) : frame_(gen->frame()), tasm_(gen->tasm()), next_(gen->ools_) { gen->ools_ = this; diff --git a/deps/v8/src/compiler/backend/code-generator.h b/deps/v8/src/compiler/backend/code-generator.h index 7ccb09d5ac3ed2..18de20f92c8e4b 100644 --- a/deps/v8/src/compiler/backend/code-generator.h +++ b/deps/v8/src/compiler/backend/code-generator.h @@ -103,7 +103,6 @@ class DeoptimizationLiteral { struct TurbolizerCodeOffsetsInfo { int code_start_register_check = -1; int deopt_check = -1; - int init_poison = -1; int blocks_start = -1; int out_of_line_code = -1; int deoptimization_exits = -1; @@ -120,14 +119,16 @@ struct TurbolizerInstructionStartInfo { // Generates native code for a sequence of instructions. class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { public: - explicit CodeGenerator( - Zone* codegen_zone, Frame* frame, Linkage* linkage, - InstructionSequence* instructions, OptimizedCompilationInfo* info, - Isolate* isolate, base::Optional osr_helper, - int start_source_position, JumpOptimizationInfo* jump_opt, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, - Builtin builtin, size_t max_unoptimized_frame_height, - size_t max_pushed_argument_count, const char* debug_name = nullptr); + explicit CodeGenerator(Zone* codegen_zone, Frame* frame, Linkage* linkage, + InstructionSequence* instructions, + OptimizedCompilationInfo* info, Isolate* isolate, + base::Optional osr_helper, + int start_source_position, + JumpOptimizationInfo* jump_opt, + const AssemblerOptions& options, Builtin builtin, + size_t max_unoptimized_frame_height, + size_t max_pushed_argument_count, + const char* debug_name = nullptr); // Generate native code. After calling AssembleCode, call FinalizeCode to // produce the actual code object. If an error occurs during either phase, @@ -216,17 +217,6 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { // Assemble instructions for the specified block. CodeGenResult AssembleBlock(const InstructionBlock* block); - // Inserts mask update at the beginning of an instruction block if the - // predecessor blocks ends with a masking branch. - void TryInsertBranchPoisoning(const InstructionBlock* block); - - // Initializes the masking register in the prologue of a function. - void InitializeSpeculationPoison(); - // Reset the masking register during execution of a function. - void ResetSpeculationPoison(); - // Generates a mask from the pc passed in {kJavaScriptCallCodeStartRegister}. - void GenerateSpeculationPoisonFromCodeStartRegister(); - // Assemble code for the specified instruction. CodeGenResult AssembleInstruction(int instruction_index, const InstructionBlock* block); @@ -276,18 +266,12 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { // contains the expected pointer to the start of the instruction stream. void AssembleCodeStartRegisterCheck(); - void AssembleBranchPoisoning(FlagsCondition condition, Instruction* instr); - // When entering a code that is marked for deoptimization, rather continuing // with its execution, we jump to a lazy compiled code. We need to do this // because this code has already been deoptimized and needs to be unlinked // from the JS functions referring it. void BailoutIfDeoptimized(); - // Generates code to poison the stack pointer and implicit register arguments - // like the context register and the function register. - void AssembleRegisterArgumentPoisoning(); - // Generates an architecture-specific, descriptor-specific prologue // to set up a stack frame. void AssembleConstructFrame(); @@ -484,7 +468,6 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { SourcePositionTableBuilder source_position_table_builder_; ZoneVector protected_instructions_; CodeGenResult result_; - PoisoningMitigationLevel poisoning_level_; ZoneVector block_starts_; TurbolizerCodeOffsetsInfo offsets_info_; ZoneVector instr_starts_; diff --git a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc index 5db3f20fa4f4e3..c8180d3e5bfb44 100644 --- a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc +++ b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc @@ -684,16 +684,6 @@ void CodeGenerator::BailoutIfDeoptimized() { __ bind(&skip); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -712,11 +702,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(reg); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -738,19 +724,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( if (DetermineStubCallMode() == StubCallMode::kCallWasmRuntimeStub) { __ wasm_call(wasm_code, constant.rmode()); } else { - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(wasm_code, constant.rmode()); - } else { - __ call(wasm_code, constant.rmode()); - } + __ call(wasm_code, constant.rmode()); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(i.InputRegister(0)); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -762,12 +739,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Address wasm_code = static_cast
(constant.ToInt32()); __ jmp(wasm_code, constant.rmode()); } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(i.InputRegister(0)); } frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -784,11 +756,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); } frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -800,11 +768,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DCHECK_IMPLIES( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); break; @@ -1278,9 +1242,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kIA32Bswap: __ bswap(i.OutputRegister()); break; - case kArchWordPoisonOnSpeculation: - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); case kIA32MFence: __ mfence(); break; @@ -4183,12 +4144,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ jmp(flabel); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); diff --git a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc index f36fdb293564ed..b4714408e83f2d 100644 --- a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc +++ b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc @@ -564,15 +564,9 @@ void InstructionSelector::VisitLoad(Node* node) { AddressingMode mode = g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); InstructionCode code = opcode | AddressingModeField::encode(mode); - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - code |= AccessModeField::encode(kMemoryAccessPoisoned); - } Emit(code, 1, outputs, input_count, inputs); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/instruction-codes.h b/deps/v8/src/compiler/backend/instruction-codes.h index 31d669813e2862..448c9e7148a4ad 100644 --- a/deps/v8/src/compiler/backend/instruction-codes.h +++ b/deps/v8/src/compiler/backend/instruction-codes.h @@ -100,7 +100,6 @@ inline RecordWriteMode WriteBarrierKindToRecordWriteMode( V(ArchTruncateDoubleToI) \ V(ArchStoreWithWriteBarrier) \ V(ArchStackSlot) \ - V(ArchWordPoisonOnSpeculation) \ V(ArchStackPointerGreaterThan) \ V(ArchStackCheckOffset) \ V(Word32AtomicLoadInt8) \ @@ -208,12 +207,10 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, enum FlagsMode { kFlags_none = 0, kFlags_branch = 1, - kFlags_branch_and_poison = 2, - kFlags_deoptimize = 3, - kFlags_deoptimize_and_poison = 4, - kFlags_set = 5, - kFlags_trap = 6, - kFlags_select = 7, + kFlags_deoptimize = 2, + kFlags_set = 3, + kFlags_trap = 4, + kFlags_select = 5, }; V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, @@ -262,7 +259,6 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, enum MemoryAccessMode { kMemoryAccessDirect = 0, kMemoryAccessProtected = 1, - kMemoryAccessPoisoned = 2 }; // The InstructionCode is an opaque, target-specific integer that encodes diff --git a/deps/v8/src/compiler/backend/instruction-scheduler.cc b/deps/v8/src/compiler/backend/instruction-scheduler.cc index c46d263bae26c8..291b4def9279b0 100644 --- a/deps/v8/src/compiler/backend/instruction-scheduler.cc +++ b/deps/v8/src/compiler/backend/instruction-scheduler.cc @@ -132,7 +132,6 @@ void InstructionScheduler::AddInstruction(Instruction* instr) { // We should not have branches in the middle of a block. DCHECK_NE(instr->flags_mode(), kFlags_branch); - DCHECK_NE(instr->flags_mode(), kFlags_branch_and_poison); if (IsFixedRegisterParameter(instr)) { if (last_live_in_reg_marker_ != nullptr) { @@ -298,11 +297,6 @@ int InstructionScheduler::GetInstructionFlags(const Instruction* instr) const { // effects. return kIsLoadOperation; - case kArchWordPoisonOnSpeculation: - // While poisoning operations have no side effect, they must not be - // reordered relative to branches. - return kHasSideEffect; - case kArchPrepareCallCFunction: case kArchPrepareTailCall: case kArchTailCallCodeObject: diff --git a/deps/v8/src/compiler/backend/instruction-selector.cc b/deps/v8/src/compiler/backend/instruction-selector.cc index f279ea15900976..7bcb5f806948a4 100644 --- a/deps/v8/src/compiler/backend/instruction-selector.cc +++ b/deps/v8/src/compiler/backend/instruction-selector.cc @@ -39,7 +39,7 @@ InstructionSelector::InstructionSelector( size_t* max_pushed_argument_count, SourcePositionMode source_position_mode, Features features, EnableScheduling enable_scheduling, EnableRootsRelativeAddressing enable_roots_relative_addressing, - PoisoningMitigationLevel poisoning_level, EnableTraceTurboJson trace_turbo) + EnableTraceTurboJson trace_turbo) : zone_(zone), linkage_(linkage), sequence_(sequence), @@ -63,7 +63,6 @@ InstructionSelector::InstructionSelector( enable_roots_relative_addressing_(enable_roots_relative_addressing), enable_switch_jump_table_(enable_switch_jump_table), state_values_cache_(zone), - poisoning_level_(poisoning_level), frame_(frame), instruction_selection_failed_(false), instr_origins_(sequence->zone()), @@ -1076,17 +1075,10 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, } DCHECK_EQ(1u, buffer->instruction_args.size()); - // Argument 1 is used for poison-alias index (encoded in a word-sized - // immediate. This an index of the operand that aliases with poison register - // or -1 if there is no aliasing. - buffer->instruction_args.push_back(g.TempImmediate(-1)); - const size_t poison_alias_index = 1; - DCHECK_EQ(buffer->instruction_args.size() - 1, poison_alias_index); - // If the call needs a frame state, we insert the state information as // follows (n is the number of value inputs to the frame state): - // arg 2 : deoptimization id. - // arg 3 - arg (n + 2) : value inputs to the frame state. + // arg 1 : deoptimization id. + // arg 2 - arg (n + 2) : value inputs to the frame state. size_t frame_state_entries = 0; USE(frame_state_entries); // frame_state_entries is only used for debug. if (buffer->frame_state_descriptor != nullptr) { @@ -1123,7 +1115,7 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, &buffer->instruction_args, FrameStateInputKind::kStackSlot, instruction_zone()); - DCHECK_EQ(2 + frame_state_entries, buffer->instruction_args.size()); + DCHECK_EQ(1 + frame_state_entries, buffer->instruction_args.size()); } size_t input_count = static_cast(buffer->input_count()); @@ -1159,23 +1151,11 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, buffer->pushed_nodes[stack_index] = param; pushed_count++; } else { - // If we do load poisoning and the linkage uses the poisoning register, - // then we request the input in memory location, and during code - // generation, we move the input to the register. - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison && - unallocated.HasFixedRegisterPolicy()) { - int reg = unallocated.fixed_register_index(); - if (Register::from_code(reg) == kSpeculationPoisonRegister) { - buffer->instruction_args[poison_alias_index] = g.TempImmediate( - static_cast(buffer->instruction_args.size())); - op = g.UseRegisterOrSlotOrConstant(*iter); - } - } buffer->instruction_args.push_back(op); } } DCHECK_EQ(input_count, buffer->instruction_args.size() + pushed_count - - frame_state_entries - 1); + frame_state_entries); if (V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK && is_tail_call && stack_param_delta != 0) { // For tail calls that change the size of their parameter list and keep @@ -1509,11 +1489,6 @@ void InstructionSelector::VisitNode(Node* node) { MarkAsRepresentation(MachineRepresentation::kSimd128, node); return VisitLoadLane(node); } - case IrOpcode::kPoisonedLoad: { - LoadRepresentation type = LoadRepresentationOf(node->op()); - MarkAsRepresentation(type.representation(), node); - return VisitPoisonedLoad(node); - } case IrOpcode::kStore: return VisitStore(node); case IrOpcode::kProtectedStore: @@ -1850,12 +1825,6 @@ void InstructionSelector::VisitNode(Node* node) { return MarkAsFloat64(node), VisitFloat64InsertLowWord32(node); case IrOpcode::kFloat64InsertHighWord32: return MarkAsFloat64(node), VisitFloat64InsertHighWord32(node); - case IrOpcode::kTaggedPoisonOnSpeculation: - return MarkAsTagged(node), VisitTaggedPoisonOnSpeculation(node); - case IrOpcode::kWord32PoisonOnSpeculation: - return MarkAsWord32(node), VisitWord32PoisonOnSpeculation(node); - case IrOpcode::kWord64PoisonOnSpeculation: - return MarkAsWord64(node), VisitWord64PoisonOnSpeculation(node); case IrOpcode::kStackSlot: return VisitStackSlot(node); case IrOpcode::kStackPointerGreaterThan: @@ -2389,30 +2358,6 @@ void InstructionSelector::VisitNode(Node* node) { } } -void InstructionSelector::EmitWordPoisonOnSpeculation(Node* node) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - OperandGenerator g(this); - Node* input_node = NodeProperties::GetValueInput(node, 0); - InstructionOperand input = g.UseRegister(input_node); - InstructionOperand output = g.DefineSameAsFirst(node); - Emit(kArchWordPoisonOnSpeculation, output, input); - } else { - EmitIdentity(node); - } -} - -void InstructionSelector::VisitWord32PoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - -void InstructionSelector::VisitWord64PoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - -void InstructionSelector::VisitTaggedPoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - void InstructionSelector::VisitStackPointerGreaterThan(Node* node) { FlagsContinuation cont = FlagsContinuation::ForSet(kStackPointerGreaterThanCondition, node); @@ -3104,45 +3049,24 @@ void InstructionSelector::VisitReturn(Node* ret) { void InstructionSelector::VisitBranch(Node* branch, BasicBlock* tbranch, BasicBlock* fbranch) { - if (NeedsPoisoning(IsSafetyCheckOf(branch->op()))) { - FlagsContinuation cont = - FlagsContinuation::ForBranchAndPoison(kNotEqual, tbranch, fbranch); - VisitWordCompareZero(branch, branch->InputAt(0), &cont); - } else { - FlagsContinuation cont = - FlagsContinuation::ForBranch(kNotEqual, tbranch, fbranch); - VisitWordCompareZero(branch, branch->InputAt(0), &cont); - } + FlagsContinuation cont = + FlagsContinuation::ForBranch(kNotEqual, tbranch, fbranch); + VisitWordCompareZero(branch, branch->InputAt(0), &cont); } void InstructionSelector::VisitDeoptimizeIf(Node* node) { DeoptimizeParameters p = DeoptimizeParametersOf(node->op()); - if (NeedsPoisoning(p.is_safety_check())) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), + node->InputAt(1)); + VisitWordCompareZero(node, node->InputAt(0), &cont); } void InstructionSelector::VisitDeoptimizeUnless(Node* node) { DeoptimizeParameters p = DeoptimizeParametersOf(node->op()); - if (NeedsPoisoning(p.is_safety_check())) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kEqual, p.kind(), p.reason(), node->id(), p.feedback(), node->InputAt(1)); + VisitWordCompareZero(node, node->InputAt(0), &cont); } void InstructionSelector::VisitSelect(Node* node) { @@ -3186,17 +3110,10 @@ void InstructionSelector::VisitDynamicCheckMapsWithDeoptUnless(Node* node) { g.UseImmediate(n.slot()), g.UseImmediate(n.handler())}); } - if (NeedsPoisoning(IsSafetyCheck::kCriticalSafetyCheck)) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), - dynamic_check_args.data(), static_cast(dynamic_check_args.size())); - VisitWordCompareZero(node, n.condition(), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), - dynamic_check_args.data(), static_cast(dynamic_check_args.size())); - VisitWordCompareZero(node, n.condition(), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), + dynamic_check_args.data(), static_cast(dynamic_check_args.size())); + VisitWordCompareZero(node, n.condition(), &cont); } void InstructionSelector::VisitTrapIf(Node* node, TrapId trap_id) { @@ -3409,18 +3326,6 @@ void InstructionSelector::SwapShuffleInputs(Node* node) { } #endif // V8_ENABLE_WEBASSEMBLY -// static -bool InstructionSelector::NeedsPoisoning(IsSafetyCheck safety_check) const { - switch (poisoning_level_) { - case PoisoningMitigationLevel::kDontPoison: - return false; - case PoisoningMitigationLevel::kPoisonAll: - return safety_check != IsSafetyCheck::kNoSafetyCheck; - case PoisoningMitigationLevel::kPoisonCriticalOnly: - return safety_check == IsSafetyCheck::kCriticalSafetyCheck; - } - UNREACHABLE(); -} } // namespace compiler } // namespace internal } // namespace v8 diff --git a/deps/v8/src/compiler/backend/instruction-selector.h b/deps/v8/src/compiler/backend/instruction-selector.h index 11a329d1d6e410..b33de8e8569ebc 100644 --- a/deps/v8/src/compiler/backend/instruction-selector.h +++ b/deps/v8/src/compiler/backend/instruction-selector.h @@ -54,13 +54,6 @@ class FlagsContinuation final { return FlagsContinuation(kFlags_branch, condition, true_block, false_block); } - static FlagsContinuation ForBranchAndPoison(FlagsCondition condition, - BasicBlock* true_block, - BasicBlock* false_block) { - return FlagsContinuation(kFlags_branch_and_poison, condition, true_block, - false_block); - } - // Creates a new flags continuation for an eager deoptimization exit. static FlagsContinuation ForDeoptimize( FlagsCondition condition, DeoptimizeKind kind, DeoptimizeReason reason, @@ -71,16 +64,6 @@ class FlagsContinuation final { extra_args_count); } - // Creates a new flags continuation for an eager deoptimization exit. - static FlagsContinuation ForDeoptimizeAndPoison( - FlagsCondition condition, DeoptimizeKind kind, DeoptimizeReason reason, - NodeId node_id, FeedbackSource const& feedback, Node* frame_state, - InstructionOperand* extra_args = nullptr, int extra_args_count = 0) { - return FlagsContinuation(kFlags_deoptimize_and_poison, condition, kind, - reason, node_id, feedback, frame_state, extra_args, - extra_args_count); - } - // Creates a new flags continuation for a boolean value. static FlagsContinuation ForSet(FlagsCondition condition, Node* result) { return FlagsContinuation(condition, result); @@ -98,16 +81,8 @@ class FlagsContinuation final { } bool IsNone() const { return mode_ == kFlags_none; } - bool IsBranch() const { - return mode_ == kFlags_branch || mode_ == kFlags_branch_and_poison; - } - bool IsDeoptimize() const { - return mode_ == kFlags_deoptimize || mode_ == kFlags_deoptimize_and_poison; - } - bool IsPoisoned() const { - return mode_ == kFlags_branch_and_poison || - mode_ == kFlags_deoptimize_and_poison; - } + bool IsBranch() const { return mode_ == kFlags_branch; } + bool IsDeoptimize() const { return mode_ == kFlags_deoptimize; } bool IsSet() const { return mode_ == kFlags_set; } bool IsTrap() const { return mode_ == kFlags_trap; } bool IsSelect() const { return mode_ == kFlags_select; } @@ -226,7 +201,7 @@ class FlagsContinuation final { condition_(condition), true_block_(true_block), false_block_(false_block) { - DCHECK(mode == kFlags_branch || mode == kFlags_branch_and_poison); + DCHECK(mode == kFlags_branch); DCHECK_NOT_NULL(true_block); DCHECK_NOT_NULL(false_block); } @@ -245,7 +220,7 @@ class FlagsContinuation final { frame_state_or_result_(frame_state), extra_args_(extra_args), extra_args_count_(extra_args_count) { - DCHECK(mode == kFlags_deoptimize || mode == kFlags_deoptimize_and_poison); + DCHECK(mode == kFlags_deoptimize); DCHECK_NOT_NULL(frame_state); } @@ -338,8 +313,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { : kDisableScheduling, EnableRootsRelativeAddressing enable_roots_relative_addressing = kDisableRootsRelativeAddressing, - PoisoningMitigationLevel poisoning_level = - PoisoningMitigationLevel::kDontPoison, EnableTraceTurboJson trace_turbo = kDisableTraceTurboJson); // Visit code for the entire graph with the included schedule. @@ -443,8 +416,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { static MachineOperatorBuilder::AlignmentRequirements AlignmentRequirements(); - bool NeedsPoisoning(IsSafetyCheck safety_check) const; - // =========================================================================== // ============ Architecture-independent graph covering methods. ============= // =========================================================================== @@ -681,8 +652,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { void VisitWordCompareZero(Node* user, Node* value, FlagsContinuation* cont); - void EmitWordPoisonOnSpeculation(Node* node); - void EmitPrepareArguments(ZoneVector* arguments, const CallDescriptor* call_descriptor, Node* node); void EmitPrepareResults(ZoneVector* results, @@ -797,7 +766,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { FrameStateInput::Equal> state_values_cache_; - PoisoningMitigationLevel poisoning_level_; Frame* frame_; bool instruction_selection_failed_; ZoneVector> instr_origins_; diff --git a/deps/v8/src/compiler/backend/instruction.cc b/deps/v8/src/compiler/backend/instruction.cc index 63ca78e06000c4..0da8e054ae33ca 100644 --- a/deps/v8/src/compiler/backend/instruction.cc +++ b/deps/v8/src/compiler/backend/instruction.cc @@ -410,12 +410,8 @@ std::ostream& operator<<(std::ostream& os, const FlagsMode& fm) { return os; case kFlags_branch: return os << "branch"; - case kFlags_branch_and_poison: - return os << "branch_and_poison"; case kFlags_deoptimize: return os << "deoptimize"; - case kFlags_deoptimize_and_poison: - return os << "deoptimize_and_poison"; case kFlags_set: return os << "set"; case kFlags_trap: diff --git a/deps/v8/src/compiler/backend/instruction.h b/deps/v8/src/compiler/backend/instruction.h index 204683c973567c..8698ed8a98b617 100644 --- a/deps/v8/src/compiler/backend/instruction.h +++ b/deps/v8/src/compiler/backend/instruction.h @@ -935,8 +935,7 @@ class V8_EXPORT_PRIVATE Instruction final { bool IsDeoptimizeCall() const { return arch_opcode() == ArchOpcode::kArchDeoptimize || - FlagsModeField::decode(opcode()) == kFlags_deoptimize || - FlagsModeField::decode(opcode()) == kFlags_deoptimize_and_poison; + FlagsModeField::decode(opcode()) == kFlags_deoptimize; } bool IsTrap() const { diff --git a/deps/v8/src/compiler/backend/jump-threading.cc b/deps/v8/src/compiler/backend/jump-threading.cc index e91b7e17d2b730..258d05955e5bec 100644 --- a/deps/v8/src/compiler/backend/jump-threading.cc +++ b/deps/v8/src/compiler/backend/jump-threading.cc @@ -55,17 +55,6 @@ struct JumpThreadingState { RpoNumber onstack() { return RpoNumber::FromInt(-2); } }; -bool IsBlockWithBranchPoisoning(InstructionSequence* code, - InstructionBlock* block) { - if (block->PredecessorCount() != 1) return false; - RpoNumber pred_rpo = (block->predecessors())[0]; - const InstructionBlock* pred = code->InstructionBlockAt(pred_rpo); - if (pred->code_start() == pred->code_end()) return false; - Instruction* instr = code->InstructionAt(pred->code_end() - 1); - FlagsMode mode = FlagsModeField::decode(instr->opcode()); - return mode == kFlags_branch_and_poison; -} - } // namespace bool JumpThreading::ComputeForwarding(Zone* local_zone, @@ -92,85 +81,80 @@ bool JumpThreading::ComputeForwarding(Zone* local_zone, TRACE("jt [%d] B%d\n", static_cast(stack.size()), block->rpo_number().ToInt()); RpoNumber fw = block->rpo_number(); - if (!IsBlockWithBranchPoisoning(code, block)) { - bool fallthru = true; - for (int i = block->code_start(); i < block->code_end(); ++i) { - Instruction* instr = code->InstructionAt(i); - if (!instr->AreMovesRedundant()) { - // can't skip instructions with non redundant moves. - TRACE(" parallel move\n"); - fallthru = false; - } else if (FlagsModeField::decode(instr->opcode()) != kFlags_none) { - // can't skip instructions with flags continuations. - TRACE(" flags\n"); - fallthru = false; - } else if (instr->IsNop()) { - // skip nops. - TRACE(" nop\n"); - continue; - } else if (instr->arch_opcode() == kArchJmp) { - // try to forward the jump instruction. - TRACE(" jmp\n"); - // if this block deconstructs the frame, we can't forward it. - // TODO(mtrofin): we can still forward if we end up building - // the frame at start. So we should move the decision of whether - // to build a frame or not in the register allocator, and trickle it - // here and to the code generator. - if (frame_at_start || !(block->must_deconstruct_frame() || - block->must_construct_frame())) { - fw = code->InputRpo(instr, 0); - } - fallthru = false; - } else if (instr->IsRet()) { - TRACE(" ret\n"); - if (fallthru) { - CHECK_IMPLIES(block->must_construct_frame(), - block->must_deconstruct_frame()); - // Only handle returns with immediate/constant operands, since - // they must always be the same for all returns in a function. - // Dynamic return values might use different registers at - // different return sites and therefore cannot be shared. - if (instr->InputAt(0)->IsImmediate()) { - int32_t return_size = ImmediateOperand::cast(instr->InputAt(0)) - ->inline_int32_value(); - // Instructions can be shared only for blocks that share - // the same |must_deconstruct_frame| attribute. - if (block->must_deconstruct_frame()) { - if (empty_deconstruct_frame_return_block == - RpoNumber::Invalid()) { - empty_deconstruct_frame_return_block = block->rpo_number(); - empty_deconstruct_frame_return_size = return_size; - } else if (empty_deconstruct_frame_return_size == - return_size) { - fw = empty_deconstruct_frame_return_block; - block->clear_must_deconstruct_frame(); - } - } else { - if (empty_no_deconstruct_frame_return_block == - RpoNumber::Invalid()) { - empty_no_deconstruct_frame_return_block = - block->rpo_number(); - empty_no_deconstruct_frame_return_size = return_size; - } else if (empty_no_deconstruct_frame_return_size == - return_size) { - fw = empty_no_deconstruct_frame_return_block; - } + bool fallthru = true; + for (int i = block->code_start(); i < block->code_end(); ++i) { + Instruction* instr = code->InstructionAt(i); + if (!instr->AreMovesRedundant()) { + // can't skip instructions with non redundant moves. + TRACE(" parallel move\n"); + fallthru = false; + } else if (FlagsModeField::decode(instr->opcode()) != kFlags_none) { + // can't skip instructions with flags continuations. + TRACE(" flags\n"); + fallthru = false; + } else if (instr->IsNop()) { + // skip nops. + TRACE(" nop\n"); + continue; + } else if (instr->arch_opcode() == kArchJmp) { + // try to forward the jump instruction. + TRACE(" jmp\n"); + // if this block deconstructs the frame, we can't forward it. + // TODO(mtrofin): we can still forward if we end up building + // the frame at start. So we should move the decision of whether + // to build a frame or not in the register allocator, and trickle it + // here and to the code generator. + if (frame_at_start || !(block->must_deconstruct_frame() || + block->must_construct_frame())) { + fw = code->InputRpo(instr, 0); + } + fallthru = false; + } else if (instr->IsRet()) { + TRACE(" ret\n"); + if (fallthru) { + CHECK_IMPLIES(block->must_construct_frame(), + block->must_deconstruct_frame()); + // Only handle returns with immediate/constant operands, since + // they must always be the same for all returns in a function. + // Dynamic return values might use different registers at + // different return sites and therefore cannot be shared. + if (instr->InputAt(0)->IsImmediate()) { + int32_t return_size = ImmediateOperand::cast(instr->InputAt(0)) + ->inline_int32_value(); + // Instructions can be shared only for blocks that share + // the same |must_deconstruct_frame| attribute. + if (block->must_deconstruct_frame()) { + if (empty_deconstruct_frame_return_block == + RpoNumber::Invalid()) { + empty_deconstruct_frame_return_block = block->rpo_number(); + empty_deconstruct_frame_return_size = return_size; + } else if (empty_deconstruct_frame_return_size == return_size) { + fw = empty_deconstruct_frame_return_block; + block->clear_must_deconstruct_frame(); + } + } else { + if (empty_no_deconstruct_frame_return_block == + RpoNumber::Invalid()) { + empty_no_deconstruct_frame_return_block = block->rpo_number(); + empty_no_deconstruct_frame_return_size = return_size; + } else if (empty_no_deconstruct_frame_return_size == + return_size) { + fw = empty_no_deconstruct_frame_return_block; } } } - fallthru = false; - } else { - // can't skip other instructions. - TRACE(" other\n"); - fallthru = false; } - break; - } - if (fallthru) { - int next = 1 + block->rpo_number().ToInt(); - if (next < code->InstructionBlockCount()) - fw = RpoNumber::FromInt(next); + fallthru = false; + } else { + // can't skip other instructions. + TRACE(" other\n"); + fallthru = false; } + break; + } + if (fallthru) { + int next = 1 + block->rpo_number().ToInt(); + if (next < code->InstructionBlockCount()) fw = RpoNumber::FromInt(next); } state.Forward(fw); } @@ -225,7 +209,7 @@ void JumpThreading::ApplyForwarding(Zone* local_zone, for (int i = block->code_start(); i < block->code_end(); ++i) { Instruction* instr = code->InstructionAt(i); FlagsMode mode = FlagsModeField::decode(instr->opcode()); - if (mode == kFlags_branch || mode == kFlags_branch_and_poison) { + if (mode == kFlags_branch) { fallthru = false; // branches don't fall through to the next block. } else if (instr->arch_opcode() == kArchJmp || instr->arch_opcode() == kArchRet) { diff --git a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc index 2b8197e7e64a06..e7ba9ab933811e 100644 --- a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc +++ b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc @@ -313,16 +313,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, << "\""; \ UNIMPLEMENTED(); -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - MipsOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -614,31 +604,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ subu(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ subu(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ sra(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -938,10 +903,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1541,30 +1502,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMipsLbu: __ lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsLb: __ lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSb: __ sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kMipsLhu: __ lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsLh: __ lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSh: __ sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1574,11 +1529,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMipsLw: __ lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSw: __ sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -3727,85 +3680,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - MipsOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kMipsCmp: { - __ LoadZeroOnCondition(kSpeculationPoisonRegister, i.InputRegister(0), - i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - } - return; - case kMipsTst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kMipsAddOvf: - case kMipsSubOvf: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMipsMulOvf: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMipsCmpS: - case kMipsCmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfFPUCondition(kSpeculationPoisonRegister); - } else { - __ LoadZeroIfNotFPUCondition(kSpeculationPoisonRegister); - } - } - return; - default: - UNREACHABLE(); - } -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -4130,7 +4004,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc index 48635c9c15b519..6d56892f30ca2f 100644 --- a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc +++ b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc @@ -1444,8 +1444,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { AdduLatency(false) + AndLatency(false) + BranchShortLatency() + 1 + SubuLatency() + AdduLatency(); } - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc index c8236122461d65..f22278e240b0ae 100644 --- a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc +++ b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc @@ -375,10 +375,6 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } if (g.CanBeImmediate(index, opcode)) { Emit(opcode | AddressingModeField::encode(kMode_MRI), @@ -393,8 +389,6 @@ void InstructionSelector::VisitLoad(Node* node) { } } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc index 6fce103d247f2e..cd5365b1eefebc 100644 --- a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc @@ -321,16 +321,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - MipsOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -577,31 +567,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ subu(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ subu(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ sra(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -900,10 +865,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1646,30 +1607,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMips64Lbu: __ Lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lb: __ Lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sb: __ Sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kMips64Lhu: __ Lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lh: __ Lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sh: __ Sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1679,27 +1634,21 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMips64Lw: __ Lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lwu: __ Lwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulwu: __ Ulwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ld: __ Ld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Uld: __ Uld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sw: __ Sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -3904,104 +3853,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - MipsOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kMips64Cmp: { - __ LoadZeroOnCondition(kSpeculationPoisonRegister, i.InputRegister(0), - i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - } - return; - case kMips64Tst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kMips64Dadd: - case kMips64Dsub: { - // Check for overflow creates 1 or 0 for result. - __ dsrl32(kScratchReg, i.OutputRegister(), 31); - __ srl(kScratchReg2, i.OutputRegister(), 31); - __ xor_(kScratchReg2, kScratchReg, kScratchReg2); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64DaddOvf: - case kMips64DsubOvf: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64MulOvf: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64CmpS: - case kMips64CmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfFPUCondition(kSpeculationPoisonRegister); - } else { - __ LoadZeroIfNotFPUCondition(kSpeculationPoisonRegister); - } - } - return; - default: - UNREACHABLE(); - } -} - #undef UNSUPPORTED_COND void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, @@ -4340,7 +4191,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc index c63e0aa3d36d55..d6016f2b97d559 100644 --- a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc @@ -1352,8 +1352,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { return DadduLatency(false) + AndLatency(false) + AssertLatency() + DadduLatency(false) + AndLatency(false) + BranchShortLatency() + 1 + DsubuLatency() + DadduLatency(); - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc index bec7bbefdcbce6..942d918dce73c6 100644 --- a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc @@ -515,16 +515,10 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } EmitLoad(this, node, opcode); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); @@ -2041,8 +2035,8 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, bool IsNodeUnsigned(Node* n) { NodeMatcher m(n); - if (m.IsLoad() || m.IsUnalignedLoad() || m.IsPoisonedLoad() || - m.IsProtectedLoad() || m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { + if (m.IsLoad() || m.IsUnalignedLoad() || m.IsProtectedLoad() || + m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { LoadRepresentation load_rep = LoadRepresentationOf(n->op()); return load_rep.IsUnsigned(); } else { diff --git a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc index cf324353f2c43c..838ef4b4c07ce4 100644 --- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc +++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc @@ -38,9 +38,7 @@ class PPCOperandConverter final : public InstructionOperandConverter { RCBit OutputRCBit() const { switch (instr_->flags_mode()) { case kFlags_branch: - case kFlags_branch_and_poison: case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: case kFlags_set: case kFlags_trap: case kFlags_select: @@ -289,15 +287,6 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) { UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, Instruction* instr, - PPCOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(instr->opcode()); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->and_(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_FLOAT_UNOP_RC(asm_instr, round) \ @@ -777,25 +766,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, cr0); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - Register scratch = kScratchReg; - - __ ComputeCodeStartAddress(scratch); - - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ CmpS64(kJavaScriptCallCodeStartRegister, scratch); - __ li(scratch, Operand::Zero()); - __ notx(kSpeculationPoisonRegister, scratch); - __ isel(eq, kSpeculationPoisonRegister, kSpeculationPoisonRegister, scratch); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ and_(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ and_(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ and_(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1164,10 +1134,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Operand(offset.offset()), r0); break; } - case kArchWordPoisonOnSpeculation: - __ and_(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kPPC_Peek: { int reverse_slot = i.InputInt32(0); int offset = @@ -1968,33 +1934,26 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( #endif case kPPC_LoadWordU8: ASSEMBLE_LOAD_INTEGER(lbz, lbzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS8: ASSEMBLE_LOAD_INTEGER(lbz, lbzx); __ extsb(i.OutputRegister(), i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordU16: ASSEMBLE_LOAD_INTEGER(lhz, lhzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS16: ASSEMBLE_LOAD_INTEGER(lha, lhax); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordU32: ASSEMBLE_LOAD_INTEGER(lwz, lwzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS32: ASSEMBLE_LOAD_INTEGER(lwa, lwax); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; #if V8_TARGET_ARCH_PPC64 case kPPC_LoadWord64: ASSEMBLE_LOAD_INTEGER(ld, ldx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; #endif case kPPC_LoadFloat32: @@ -2143,7 +2102,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kPPC_LoadByteRev32: { ASSEMBLE_LOAD_INTEGER_RR(lwbrx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kPPC_StoreByteRev32: { @@ -2169,7 +2127,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kPPC_LoadByteRev64: { ASSEMBLE_LOAD_INTEGER_RR(ldbrx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kPPC_StoreByteRev64: { @@ -3799,21 +3756,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(John) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual || - condition == kOverflow || condition == kNotOverflow) { - return; - } - - ArchOpcode op = instr->arch_opcode(); - condition = NegateFlagsCondition(condition); - __ li(kScratchReg, Operand::Zero()); - __ isel(FlagsConditionToCondition(condition, op), kSpeculationPoisonRegister, - kScratchReg, kSpeculationPoisonRegister, cr0); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -4079,7 +4021,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves_fp = call_descriptor->CalleeSavedFPRegisters(); diff --git a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc index c74211aa3895f1..ab2b0a3338f7d9 100644 --- a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc +++ b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc @@ -229,11 +229,6 @@ void InstructionSelector::VisitLoad(Node* node) { UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad && - poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } - bool is_atomic = (node->opcode() == IrOpcode::kWord32AtomicLoad || node->opcode() == IrOpcode::kWord64AtomicLoad); @@ -252,8 +247,6 @@ void InstructionSelector::VisitLoad(Node* node) { } } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc index 2d92ae1567e1e8..3bd288ae1d9b04 100644 --- a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc @@ -307,17 +307,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - RiscvOperandConverter const& i) { - const MemoryAccessMode access_mode = - static_cast(MiscField::decode(opcode)); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -570,31 +559,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ Sub32(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ Sub32(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ Sra64(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ Nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -887,10 +851,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1553,30 +1513,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kRiscvLbu: __ Lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLb: __ Lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSb: __ Sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kRiscvLhu: __ Lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLh: __ Lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSh: __ Sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1586,27 +1540,21 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kRiscvLw: __ Lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLwu: __ Lwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlwu: __ Ulwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLd: __ Ld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUld: __ Uld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSw: __ Sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -2011,110 +1959,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - RiscvOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kRiscvCmp: { - __ CompareI(kScratchReg, i.InputRegister(0), i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } - return; - case kRiscvCmpZero: { - __ CompareI(kScratchReg, i.InputRegister(0), Operand(zero_reg), - FlagsConditionToConditionCmp(condition)); - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } - return; - case kRiscvTst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kRiscvAdd64: - case kRiscvSub64: { - // Check for overflow creates 1 or 0 for result. - __ Srl64(kScratchReg, i.OutputRegister(), 63); - __ Srl32(kScratchReg2, i.OutputRegister(), 31); - __ Xor(kScratchReg2, kScratchReg, kScratchReg2); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvAddOvf64: - case kRiscvSubOvf64: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvMulOvf32: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvCmpS: - case kRiscvCmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } else { - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - } - } - return; - default: - UNREACHABLE(); - } -} - #undef UNSUPPORTED_COND void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, @@ -2489,7 +2333,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc index 157b11c9308a6f..91ceae622bb037 100644 --- a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc @@ -1169,8 +1169,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { return Add64Latency(false) + AndLatency(false) + AssertLatency() + Add64Latency(false) + AndLatency(false) + BranchShortLatency() + 1 + Sub64Latency() + Add64Latency(); - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc index 72706201e2a78b..dea4ed9fe6fc24 100644 --- a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc @@ -489,16 +489,10 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= MiscField::encode(kMemoryAccessPoisoned); - } EmitLoad(this, node, opcode); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); @@ -1827,8 +1821,8 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, bool IsNodeUnsigned(Node* n) { NodeMatcher m(n); - if (m.IsLoad() || m.IsUnalignedLoad() || m.IsPoisonedLoad() || - m.IsProtectedLoad() || m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { + if (m.IsLoad() || m.IsUnalignedLoad() || m.IsProtectedLoad() || + m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { LoadRepresentation load_rep = LoadRepresentationOf(n->op()); return load_rep.IsUnsigned(); } else { diff --git a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc index 685293169d7fd7..2cd3244a1fb7c7 100644 --- a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc +++ b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc @@ -985,15 +985,6 @@ void AdjustStackPointerForTailCall( } } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, Instruction* instr, - S390OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(instr->opcode()); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->AndP(value, kSpeculationPoisonRegister); - } -} - } // namespace void CodeGenerator::AssembleTailCallBeforeGap(Instruction* instr, @@ -1071,25 +1062,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - Register scratch = r1; - - __ ComputeCodeStartAddress(scratch); - - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ mov(kSpeculationPoisonRegister, Operand::Zero()); - __ mov(r0, Operand(-1)); - __ CmpS64(kJavaScriptCallCodeStartRegister, scratch); - __ LoadOnConditionP(eq, kSpeculationPoisonRegister, r0); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ AndP(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ AndP(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ AndP(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1395,10 +1367,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Operand(offset.offset())); break; } - case kArchWordPoisonOnSpeculation: - DCHECK_EQ(i.OutputRegister(), i.InputRegister(0)); - __ AndP(i.InputRegister(0), kSpeculationPoisonRegister); - break; case kS390_Peek: { int reverse_slot = i.InputInt32(0); int offset = @@ -2155,7 +2123,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kS390_LoadWordS8: ASSEMBLE_LOAD_INTEGER(LoadS8); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_BitcastFloat32ToInt32: ASSEMBLE_UNARY_OP(R_DInstr(MovFloatToInt), R_MInstr(LoadU32), nullInstr); @@ -2173,35 +2140,27 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( #endif case kS390_LoadWordU8: ASSEMBLE_LOAD_INTEGER(LoadU8); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordU16: ASSEMBLE_LOAD_INTEGER(LoadU16); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordS16: ASSEMBLE_LOAD_INTEGER(LoadS16); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordU32: ASSEMBLE_LOAD_INTEGER(LoadU32); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordS32: ASSEMBLE_LOAD_INTEGER(LoadS32); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse16: ASSEMBLE_LOAD_INTEGER(lrvh); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse32: ASSEMBLE_LOAD_INTEGER(lrv); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse64: ASSEMBLE_LOAD_INTEGER(lrvg); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse16RR: __ lrvr(i.OutputRegister(), i.InputRegister(0)); @@ -2238,7 +2197,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kS390_LoadWord64: ASSEMBLE_LOAD_INTEGER(lg); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadAndTestWord32: { ASSEMBLE_LOADANDTEST32(ltr, lt_z); @@ -2258,7 +2216,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( AddressingMode mode = kMode_None; MemOperand operand = i.MemoryOperand(&mode); __ vl(i.OutputSimd128Register(), operand, Condition(0)); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kS390_StoreWord8: @@ -3541,20 +3498,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(John) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual || - condition == kOverflow || condition == kNotOverflow) { - return; - } - - condition = NegateFlagsCondition(condition); - __ mov(r0, Operand::Zero()); - __ LoadOnConditionP(FlagsConditionToCondition(condition, kArchNop), - kSpeculationPoisonRegister, r0); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3781,7 +3724,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves_fp = call_descriptor->CalleeSavedFPRegisters(); diff --git a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc index bcf5a8dfff8ff0..27a0218b8513ba 100644 --- a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc +++ b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc @@ -704,15 +704,9 @@ void InstructionSelector::VisitLoad(Node* node) { AddressingMode mode = g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); opcode |= AddressingModeField::encode(mode); - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } Emit(opcode, 1, outputs, input_count, inputs); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc index 60a40fb4893bea..bb0bc293610013 100644 --- a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc +++ b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc @@ -569,16 +569,6 @@ void EmitOOLTrapIfNeeded(Zone* zone, CodeGenerator* codegen, #endif // V8_ENABLE_WEBASSEMBLY -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - X64OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->andq(value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_UNOP(asm_instr) \ @@ -1019,22 +1009,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, not_zero); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(rbx); - __ xorq(kSpeculationPoisonRegister, kSpeculationPoisonRegister); - __ cmpq(kJavaScriptCallCodeStartRegister, rbx); - __ Move(rbx, -1); - __ cmovq(equal, kSpeculationPoisonRegister, rbx); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ andq(kJSFunctionRegister, kSpeculationPoisonRegister); - __ andq(kContextRegister, kSpeculationPoisonRegister); - __ andq(rsp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1052,11 +1026,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(reg); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -1078,19 +1048,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( if (DetermineStubCallMode() == StubCallMode::kCallWasmRuntimeStub) { __ near_call(wasm_code, constant.rmode()); } else { - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(wasm_code, constant.rmode()); - } else { - __ Call(wasm_code, constant.rmode()); - } + __ Call(wasm_code, constant.rmode()); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(i.InputRegister(0)); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -1107,12 +1068,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ jmp(kScratchRegister); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(i.InputRegister(0)); } unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); @@ -1130,11 +1086,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); } unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); @@ -1147,11 +1099,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DCHECK_IMPLIES( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -1368,10 +1316,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kTaggedSize); break; } - case kArchWordPoisonOnSpeculation: - DCHECK_EQ(i.OutputRegister(), i.InputRegister(0)); - __ andq(i.InputRegister(0), kSpeculationPoisonRegister); - break; case kX64MFence: __ mfence(); break; @@ -2180,24 +2124,20 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxbl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxbl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxbl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxbq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxbq); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxbq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxbq); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movb: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2214,20 +2154,17 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitTSANStoreOOLIfNeeded(zone(), this, tasm(), operand, value, i, DetermineStubCallMode(), kInt8Size); } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64Movsxwl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxwl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxwl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxwl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxwq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2237,7 +2174,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxwq); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movw: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2254,7 +2190,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitTSANStoreOOLIfNeeded(zone(), this, tasm(), operand, value, i, DetermineStubCallMode(), kInt16Size); } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64Movl: @@ -2288,12 +2223,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kInt32Size); } } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxlq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxlq); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64MovqDecompressTaggedSigned: { CHECK(instr->HasOutput()); @@ -2301,7 +2234,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressTaggedSigned(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqDecompressTaggedPointer: { @@ -2310,7 +2242,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressTaggedPointer(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqDecompressAnyTagged: { @@ -2319,7 +2250,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressAnyTagged(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqCompressTagged: { @@ -2361,7 +2291,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kInt64Size); } } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movss: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2376,17 +2305,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kX64Movsd: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); if (instr->HasOutput()) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - // If we have to poison the loaded value, we load into a general - // purpose register first, mask it with the poison, and move the - // value from the general purpose register into the double register. - __ movq(kScratchRegister, i.MemoryOperand()); - __ andq(kScratchRegister, kSpeculationPoisonRegister); - __ Movq(i.OutputDoubleRegister(), kScratchRegister); - } else { - __ Movsd(i.OutputDoubleRegister(), i.MemoryOperand()); - } + __ Movsd(i.OutputDoubleRegister(), i.MemoryOperand()); } else { size_t index = 0; Operand operand = i.MemoryOperand(&index); @@ -4462,19 +4381,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ jmp(flabel, flabel_distance); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ Move(kScratchRegister, 0); - __ cmovq(FlagsConditionToCondition(condition), kSpeculationPoisonRegister, - kScratchRegister); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { Label::Distance flabel_distance = @@ -4716,7 +4622,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= static_cast(osr_helper()->UnoptimizedFrameSlots()); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc index 53ee75064bb97c..5a5acb746e5c3d 100644 --- a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc +++ b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc @@ -471,9 +471,6 @@ void InstructionSelector::VisitLoad(Node* node, Node* value, InstructionCode code = opcode | AddressingModeField::encode(mode); if (node->opcode() == IrOpcode::kProtectedLoad) { code |= AccessModeField::encode(kMemoryAccessProtected); - } else if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - code |= AccessModeField::encode(kMemoryAccessPoisoned); } Emit(code, 1, outputs, input_count, inputs, temp_count, temps); } @@ -484,8 +481,6 @@ void InstructionSelector::VisitLoad(Node* node) { VisitLoad(node, node, GetLoadOpcode(load_rep)); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { VisitLoad(node); } void InstructionSelector::VisitStore(Node* node) { @@ -1502,8 +1497,7 @@ bool InstructionSelector::ZeroExtendsWord32ToWord64NoPhis(Node* node) { } case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kProtectedLoad: - case IrOpcode::kPoisonedLoad: { + case IrOpcode::kProtectedLoad: { // The movzxbl/movsxbl/movzxwl/movsxwl/movl operations implicitly // zero-extend to 64-bit on x64, so the zero-extension is a no-op. LoadRepresentation load_rep = LoadRepresentationOf(node->op()); diff --git a/deps/v8/src/compiler/branch-elimination.cc b/deps/v8/src/compiler/branch-elimination.cc index a864012a7a662a..151534050391ec 100644 --- a/deps/v8/src/compiler/branch-elimination.cc +++ b/deps/v8/src/compiler/branch-elimination.cc @@ -135,7 +135,6 @@ Reduction BranchElimination::ReduceBranch(Node* node) { bool condition_value; // If we know the condition we can discard the branch. if (from_input.LookupCondition(condition, &branch, &condition_value)) { - MarkAsSafetyCheckIfNeeded(branch, node); for (Node* const use : node->uses()) { switch (use->opcode()) { case IrOpcode::kIfTrue: @@ -215,7 +214,6 @@ Reduction BranchElimination::ReduceDeoptimizeConditional(Node* node) { Node* branch; // If we know the condition we can discard the branch. if (conditions.LookupCondition(condition, &branch, &condition_value)) { - MarkAsSafetyCheckIfNeeded(branch, node); if (condition_is_true == condition_value) { // We don't update the conditions here, because we're replacing {node} // with the {control} node that already contains the right information. @@ -410,21 +408,6 @@ bool BranchElimination::ControlPathConditions::BlocksAndConditionsInvariant() { } #endif -void BranchElimination::MarkAsSafetyCheckIfNeeded(Node* branch, Node* node) { - // Check if {branch} is dead because we might have a stale side-table entry. - if (!branch->IsDead() && branch->opcode() != IrOpcode::kDead && - branch->opcode() != IrOpcode::kTrapIf && - branch->opcode() != IrOpcode::kTrapUnless) { - IsSafetyCheck branch_safety = IsSafetyCheckOf(branch->op()); - IsSafetyCheck combined_safety = - CombineSafetyChecks(branch_safety, IsSafetyCheckOf(node->op())); - if (branch_safety != combined_safety) { - NodeProperties::ChangeOp( - branch, common()->MarkAsSafetyCheck(branch->op(), combined_safety)); - } - } -} - Graph* BranchElimination::graph() const { return jsgraph()->graph(); } Isolate* BranchElimination::isolate() const { return jsgraph()->isolate(); } diff --git a/deps/v8/src/compiler/branch-elimination.h b/deps/v8/src/compiler/branch-elimination.h index 9078c3903814cb..93bacbff7b30cd 100644 --- a/deps/v8/src/compiler/branch-elimination.h +++ b/deps/v8/src/compiler/branch-elimination.h @@ -114,7 +114,6 @@ class V8_EXPORT_PRIVATE BranchElimination final Reduction UpdateConditions(Node* node, ControlPathConditions prev_conditions, Node* current_condition, Node* current_branch, bool is_true_branch, bool in_new_block); - void MarkAsSafetyCheckIfNeeded(Node* branch, Node* node); Node* dead() const { return dead_; } Graph* graph() const; diff --git a/deps/v8/src/compiler/bytecode-graph-builder.cc b/deps/v8/src/compiler/bytecode-graph-builder.cc index 985a256c57dd99..3a28b33b52b86e 100644 --- a/deps/v8/src/compiler/bytecode-graph-builder.cc +++ b/deps/v8/src/compiler/bytecode-graph-builder.cc @@ -141,9 +141,8 @@ class BytecodeGraphBuilder { Node* NewIfDefault() { return NewNode(common()->IfDefault()); } Node* NewMerge() { return NewNode(common()->Merge(1), true); } Node* NewLoop() { return NewNode(common()->Loop(1), true); } - Node* NewBranch(Node* condition, BranchHint hint = BranchHint::kNone, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck) { - return NewNode(common()->Branch(hint, is_safety_check), condition); + Node* NewBranch(Node* condition, BranchHint hint = BranchHint::kNone) { + return NewNode(common()->Branch(hint), condition); } Node* NewSwitch(Node* condition, int control_output_count) { return NewNode(common()->Switch(control_output_count), condition); @@ -3959,7 +3958,7 @@ void BytecodeGraphBuilder::BuildJump() { } void BytecodeGraphBuilder::BuildJumpIf(Node* condition) { - NewBranch(condition, BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck); + NewBranch(condition, BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfTrue(); @@ -3971,7 +3970,7 @@ void BytecodeGraphBuilder::BuildJumpIf(Node* condition) { } void BytecodeGraphBuilder::BuildJumpIfNot(Node* condition) { - NewBranch(condition, BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck); + NewBranch(condition, BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfFalse(); @@ -3997,8 +3996,7 @@ void BytecodeGraphBuilder::BuildJumpIfNotEqual(Node* comperand) { } void BytecodeGraphBuilder::BuildJumpIfFalse() { - NewBranch(environment()->LookupAccumulator(), BranchHint::kNone, - IsSafetyCheck::kNoSafetyCheck); + NewBranch(environment()->LookupAccumulator(), BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfFalse(); @@ -4012,8 +4010,7 @@ void BytecodeGraphBuilder::BuildJumpIfFalse() { } void BytecodeGraphBuilder::BuildJumpIfTrue() { - NewBranch(environment()->LookupAccumulator(), BranchHint::kNone, - IsSafetyCheck::kNoSafetyCheck); + NewBranch(environment()->LookupAccumulator(), BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfTrue(); diff --git a/deps/v8/src/compiler/code-assembler.cc b/deps/v8/src/compiler/code-assembler.cc index 2cbcce236fa1e0..63154ea6a064b9 100644 --- a/deps/v8/src/compiler/code-assembler.cc +++ b/deps/v8/src/compiler/code-assembler.cc @@ -48,8 +48,7 @@ static_assert( CodeAssemblerState::CodeAssemblerState( Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor, - CodeKind kind, const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin) + CodeKind kind, const char* name, Builtin builtin) // TODO(rmcilroy): Should we use Linkage::GetBytecodeDispatchDescriptor for // bytecode handlers? : CodeAssemblerState( @@ -57,29 +56,26 @@ CodeAssemblerState::CodeAssemblerState( Linkage::GetStubCallDescriptor( zone, descriptor, descriptor.GetStackParameterCount(), CallDescriptor::kNoFlags, Operator::kNoProperties), - kind, name, poisoning_level, builtin) {} + kind, name, builtin) {} CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, CodeKind kind, - const char* name, - PoisoningMitigationLevel poisoning_level, - Builtin builtin) + const char* name, Builtin builtin) : CodeAssemblerState( isolate, zone, Linkage::GetJSCallDescriptor(zone, false, parameter_count, CallDescriptor::kCanUseRoots), - kind, name, poisoning_level, builtin) {} + kind, name, builtin) {} CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, CallDescriptor* call_descriptor, CodeKind kind, const char* name, - PoisoningMitigationLevel poisoning_level, Builtin builtin) : raw_assembler_(new RawMachineAssembler( isolate, zone->New(zone), call_descriptor, MachineType::PointerRepresentation(), InstructionSelector::SupportedMachineOperatorFlags(), - InstructionSelector::AlignmentRequirements(), poisoning_level)), + InstructionSelector::AlignmentRequirements())), kind_(kind), name_(name), builtin_(builtin), @@ -169,10 +165,6 @@ bool CodeAssembler::Word32ShiftIsSafe() const { return raw_assembler()->machine()->Word32ShiftIsSafe(); } -PoisoningMitigationLevel CodeAssembler::poisoning_level() const { - return raw_assembler()->poisoning_level(); -} - // static Handle CodeAssembler::GenerateCode( CodeAssemblerState* state, const AssemblerOptions& options, @@ -187,7 +179,7 @@ Handle CodeAssembler::GenerateCode( code = Pipeline::GenerateCodeForCodeStub( rasm->isolate(), rasm->call_descriptor(), graph, state->jsgraph_, rasm->source_positions(), state->kind_, state->name_, - state->builtin_, rasm->poisoning_level(), options, profile_data) + state->builtin_, options, profile_data) .ToHandleChecked(); state->code_generated_ = true; @@ -565,15 +557,6 @@ TNode CodeAssembler::LoadParentFramePointer() { return UncheckedCast(raw_assembler()->LoadParentFramePointer()); } -TNode CodeAssembler::TaggedPoisonOnSpeculation(TNode value) { - return UncheckedCast( - raw_assembler()->TaggedPoisonOnSpeculation(value)); -} - -TNode CodeAssembler::WordPoisonOnSpeculation(TNode value) { - return UncheckedCast(raw_assembler()->WordPoisonOnSpeculation(value)); -} - #define DEFINE_CODE_ASSEMBLER_BINARY_OP(name, ResType, Arg1Type, Arg2Type) \ TNode CodeAssembler::name(TNode a, TNode b) { \ return UncheckedCast(raw_assembler()->name(a, b)); \ @@ -677,27 +660,23 @@ TNode CodeAssembler::TruncateFloat32ToInt32(TNode value) { CODE_ASSEMBLER_UNARY_OP_LIST(DEFINE_CODE_ASSEMBLER_UNARY_OP) #undef DEFINE_CODE_ASSEMBLER_UNARY_OP -Node* CodeAssembler::Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning) { - return raw_assembler()->Load(type, base, needs_poisoning); +Node* CodeAssembler::Load(MachineType type, Node* base) { + return raw_assembler()->Load(type, base); } -Node* CodeAssembler::Load(MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning) { - return raw_assembler()->Load(type, base, offset, needs_poisoning); +Node* CodeAssembler::Load(MachineType type, Node* base, Node* offset) { + return raw_assembler()->Load(type, base, offset); } -TNode CodeAssembler::LoadFullTagged(Node* base, - LoadSensitivity needs_poisoning) { - return BitcastWordToTagged(Load(base, needs_poisoning)); +TNode CodeAssembler::LoadFullTagged(Node* base) { + return BitcastWordToTagged(Load(base)); } -TNode CodeAssembler::LoadFullTagged(Node* base, TNode offset, - LoadSensitivity needs_poisoning) { +TNode CodeAssembler::LoadFullTagged(Node* base, TNode offset) { // Please use LoadFromObject(MachineType::MapInHeader(), object, // IntPtrConstant(-kHeapObjectTag)) instead. DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset)); - return BitcastWordToTagged(Load(base, offset, needs_poisoning)); + return BitcastWordToTagged(Load(base, offset)); } Node* CodeAssembler::AtomicLoad(MachineType type, TNode base, diff --git a/deps/v8/src/compiler/code-assembler.h b/deps/v8/src/compiler/code-assembler.h index 0e6872aa66e22f..35d860db22c82d 100644 --- a/deps/v8/src/compiler/code-assembler.h +++ b/deps/v8/src/compiler/code-assembler.h @@ -725,32 +725,22 @@ class V8_EXPORT_PRIVATE CodeAssembler { TNode LoadFramePointer(); TNode LoadParentFramePointer(); - // Poison |value| on speculative paths. - TNode TaggedPoisonOnSpeculation(TNode value); - TNode WordPoisonOnSpeculation(TNode value); - // Load raw memory location. - Node* Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + Node* Load(MachineType type, Node* base); template TNode Load(MachineType type, TNode> base) { DCHECK( IsSubtype(type.representation(), MachineRepresentationOf::value)); return UncheckedCast(Load(type, static_cast(base))); } - Node* Load(MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + Node* Load(MachineType type, Node* base, Node* offset); template - TNode Load(Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return UncheckedCast( - Load(MachineTypeOf::value, base, needs_poisoning)); + TNode Load(Node* base) { + return UncheckedCast(Load(MachineTypeOf::value, base)); } template - TNode Load(Node* base, TNode offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return UncheckedCast( - Load(MachineTypeOf::value, base, offset, needs_poisoning)); + TNode Load(Node* base, TNode offset) { + return UncheckedCast(Load(MachineTypeOf::value, base, offset)); } template TNode AtomicLoad(TNode base, TNode offset) { @@ -761,11 +751,8 @@ class V8_EXPORT_PRIVATE CodeAssembler { TNode AtomicLoad64(TNode base, TNode offset); // Load uncompressed tagged value from (most likely off JS heap) memory // location. - TNode LoadFullTagged( - Node* base, LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); - TNode LoadFullTagged( - Node* base, TNode offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + TNode LoadFullTagged(Node* base); + TNode LoadFullTagged(Node* base, TNode offset); Node* LoadFromObject(MachineType type, TNode object, TNode offset); @@ -1312,7 +1299,6 @@ class V8_EXPORT_PRIVATE CodeAssembler { void UnregisterCallGenerationCallbacks(); bool Word32ShiftIsSafe() const; - PoisoningMitigationLevel poisoning_level() const; bool IsJSFunctionCall() const; @@ -1595,13 +1581,11 @@ class V8_EXPORT_PRIVATE CodeAssemblerState { // TODO(rmcilroy): move result_size to the CallInterfaceDescriptor. CodeAssemblerState(Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor, CodeKind kind, - const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin = Builtin::kNoBuiltinId); + const char* name, Builtin builtin = Builtin::kNoBuiltinId); // Create with JSCall linkage. CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, CodeKind kind, const char* name, - PoisoningMitigationLevel poisoning_level, Builtin builtin = Builtin::kNoBuiltinId); ~CodeAssemblerState(); @@ -1628,8 +1612,7 @@ class V8_EXPORT_PRIVATE CodeAssemblerState { CodeAssemblerState(Isolate* isolate, Zone* zone, CallDescriptor* call_descriptor, CodeKind kind, - const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin); + const char* name, Builtin builtin); void PushExceptionHandler(CodeAssemblerExceptionHandlerLabel* label); void PopExceptionHandler(); diff --git a/deps/v8/src/compiler/common-operator.cc b/deps/v8/src/compiler/common-operator.cc index b370a673b96850..329ccc7e86ddae 100644 --- a/deps/v8/src/compiler/common-operator.cc +++ b/deps/v8/src/compiler/common-operator.cc @@ -28,18 +28,6 @@ std::ostream& operator<<(std::ostream& os, BranchHint hint) { UNREACHABLE(); } -std::ostream& operator<<(std::ostream& os, IsSafetyCheck is_safety_check) { - switch (is_safety_check) { - case IsSafetyCheck::kCriticalSafetyCheck: - return os << "CriticalSafetyCheck"; - case IsSafetyCheck::kSafetyCheck: - return os << "SafetyCheck"; - case IsSafetyCheck::kNoSafetyCheck: - return os << "NoSafetyCheck"; - } - UNREACHABLE(); -} - std::ostream& operator<<(std::ostream& os, TrapId trap_id) { switch (trap_id) { #define TRAP_CASE(Name) \ @@ -59,22 +47,12 @@ TrapId TrapIdOf(const Operator* const op) { return OpParameter(op); } -std::ostream& operator<<(std::ostream& os, BranchOperatorInfo info) { - return os << info.hint << ", " << info.is_safety_check; -} - -const BranchOperatorInfo& BranchOperatorInfoOf(const Operator* const op) { - DCHECK_EQ(IrOpcode::kBranch, op->opcode()); - return OpParameter(op); -} - BranchHint BranchHintOf(const Operator* const op) { switch (op->opcode()) { - case IrOpcode::kBranch: - return BranchOperatorInfoOf(op).hint; case IrOpcode::kIfValue: return IfValueParametersOf(op).hint(); case IrOpcode::kIfDefault: + case IrOpcode::kBranch: return OpParameter(op); default: UNREACHABLE(); @@ -90,8 +68,7 @@ int ValueInputCountOfReturn(Operator const* const op) { bool operator==(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { return lhs.kind() == rhs.kind() && lhs.reason() == rhs.reason() && - lhs.feedback() == rhs.feedback() && - lhs.is_safety_check() == rhs.is_safety_check(); + lhs.feedback() == rhs.feedback(); } bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { @@ -100,13 +77,11 @@ bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { size_t hash_value(DeoptimizeParameters p) { FeedbackSource::Hash feebdack_hash; - return base::hash_combine(p.kind(), p.reason(), feebdack_hash(p.feedback()), - p.is_safety_check()); + return base::hash_combine(p.kind(), p.reason(), feebdack_hash(p.feedback())); } std::ostream& operator<<(std::ostream& os, DeoptimizeParameters p) { - return os << p.kind() << ", " << p.reason() << ", " << p.is_safety_check() - << ", " << p.feedback(); + return os << p.kind() << ", " << p.reason() << ", " << p.feedback(); } DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) { @@ -117,32 +92,6 @@ DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) { return OpParameter(op); } -IsSafetyCheck IsSafetyCheckOf(const Operator* op) { - if (op->opcode() == IrOpcode::kBranch) { - return BranchOperatorInfoOf(op).is_safety_check; - } - return DeoptimizeParametersOf(op).is_safety_check(); -} - -const Operator* CommonOperatorBuilder::MarkAsSafetyCheck( - const Operator* op, IsSafetyCheck safety_check) { - if (op->opcode() == IrOpcode::kBranch) { - BranchOperatorInfo info = BranchOperatorInfoOf(op); - if (info.is_safety_check == safety_check) return op; - return Branch(info.hint, safety_check); - } - DeoptimizeParameters p = DeoptimizeParametersOf(op); - if (p.is_safety_check() == safety_check) return op; - switch (op->opcode()) { - case IrOpcode::kDeoptimizeIf: - return DeoptimizeIf(p.kind(), p.reason(), p.feedback(), safety_check); - case IrOpcode::kDeoptimizeUnless: - return DeoptimizeUnless(p.kind(), p.reason(), p.feedback(), safety_check); - default: - UNREACHABLE(); - } -} - const Operator* CommonOperatorBuilder::DelayedStringConstant( const StringConstantBase* str) { return zone()->New>( @@ -478,16 +427,10 @@ IfValueParameters const& IfValueParametersOf(const Operator* op) { #define CACHED_LOOP_EXIT_VALUE_LIST(V) V(kTagged) -#define CACHED_BRANCH_LIST(V) \ - V(None, CriticalSafetyCheck) \ - V(True, CriticalSafetyCheck) \ - V(False, CriticalSafetyCheck) \ - V(None, SafetyCheck) \ - V(True, SafetyCheck) \ - V(False, SafetyCheck) \ - V(None, NoSafetyCheck) \ - V(True, NoSafetyCheck) \ - V(False, NoSafetyCheck) +#define CACHED_BRANCH_LIST(V) \ + V(None) \ + V(True) \ + V(False) #define CACHED_RETURN_LIST(V) \ V(1) \ @@ -541,28 +484,22 @@ IfValueParameters const& IfValueParametersOf(const Operator* op) { V(Soft, InsufficientTypeFeedbackForGenericKeyedAccess) \ V(Soft, InsufficientTypeFeedbackForGenericNamedAccess) -#define CACHED_DEOPTIMIZE_IF_LIST(V) \ - V(Eager, DivisionByZero, NoSafetyCheck) \ - V(Eager, DivisionByZero, SafetyCheck) \ - V(Eager, Hole, NoSafetyCheck) \ - V(Eager, Hole, SafetyCheck) \ - V(Eager, MinusZero, NoSafetyCheck) \ - V(Eager, MinusZero, SafetyCheck) \ - V(Eager, Overflow, NoSafetyCheck) \ - V(Eager, Overflow, SafetyCheck) \ - V(Eager, Smi, SafetyCheck) - -#define CACHED_DEOPTIMIZE_UNLESS_LIST(V) \ - V(Eager, LostPrecision, NoSafetyCheck) \ - V(Eager, LostPrecision, SafetyCheck) \ - V(Eager, LostPrecisionOrNaN, NoSafetyCheck) \ - V(Eager, LostPrecisionOrNaN, SafetyCheck) \ - V(Eager, NotAHeapNumber, SafetyCheck) \ - V(Eager, NotANumberOrOddball, SafetyCheck) \ - V(Eager, NotASmi, SafetyCheck) \ - V(Eager, OutOfBounds, SafetyCheck) \ - V(Eager, WrongInstanceType, SafetyCheck) \ - V(Eager, WrongMap, SafetyCheck) +#define CACHED_DEOPTIMIZE_IF_LIST(V) \ + V(Eager, DivisionByZero) \ + V(Eager, Hole) \ + V(Eager, MinusZero) \ + V(Eager, Overflow) \ + V(Eager, Smi) + +#define CACHED_DEOPTIMIZE_UNLESS_LIST(V) \ + V(Eager, LostPrecision) \ + V(Eager, LostPrecisionOrNaN) \ + V(Eager, NotAHeapNumber) \ + V(Eager, NotANumberOrOddball) \ + V(Eager, NotASmi) \ + V(Eager, OutOfBounds) \ + V(Eager, WrongInstanceType) \ + V(Eager, WrongMap) #define CACHED_DYNAMIC_CHECK_MAPS_LIST(V) \ V(DynamicCheckMaps) \ @@ -668,18 +605,17 @@ struct CommonOperatorGlobalCache final { CACHED_RETURN_LIST(CACHED_RETURN) #undef CACHED_RETURN - template - struct BranchOperator final : public Operator1 { + template + struct BranchOperator final : public Operator1 { BranchOperator() - : Operator1( // -- - IrOpcode::kBranch, Operator::kKontrol, // opcode - "Branch", // name - 1, 0, 1, 0, 0, 2, // counts - BranchOperatorInfo{hint, is_safety_check}) {} // parameter + : Operator1( // -- + IrOpcode::kBranch, Operator::kKontrol, // opcode + "Branch", // name + 1, 0, 1, 0, 0, 2, // counts + hint) {} // parameter }; -#define CACHED_BRANCH(Hint, IsCheck) \ - BranchOperator \ - kBranch##Hint##IsCheck##Operator; +#define CACHED_BRANCH(Hint) \ + BranchOperator kBranch##Hint##Operator; CACHED_BRANCH_LIST(CACHED_BRANCH) #undef CACHED_BRANCH @@ -757,8 +693,7 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "Deoptimize", // name 1, 1, 1, 0, 0, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - IsSafetyCheck::kNoSafetyCheck)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; #define CACHED_DEOPTIMIZE(Kind, Reason) \ DeoptimizeOperator \ @@ -766,8 +701,7 @@ struct CommonOperatorGlobalCache final { CACHED_DEOPTIMIZE_LIST(CACHED_DEOPTIMIZE) #undef CACHED_DEOPTIMIZE - template + template struct DeoptimizeIfOperator final : public Operator1 { DeoptimizeIfOperator() : Operator1( // -- @@ -775,18 +709,15 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "DeoptimizeIf", // name 2, 1, 1, 0, 1, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - is_safety_check)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; -#define CACHED_DEOPTIMIZE_IF(Kind, Reason, IsCheck) \ - DeoptimizeIfOperator \ - kDeoptimizeIf##Kind##Reason##IsCheck##Operator; +#define CACHED_DEOPTIMIZE_IF(Kind, Reason) \ + DeoptimizeIfOperator \ + kDeoptimizeIf##Kind##Reason##Operator; CACHED_DEOPTIMIZE_IF_LIST(CACHED_DEOPTIMIZE_IF) #undef CACHED_DEOPTIMIZE_IF - template + template struct DeoptimizeUnlessOperator final : public Operator1 { DeoptimizeUnlessOperator() @@ -795,14 +726,12 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "DeoptimizeUnless", // name 2, 1, 1, 0, 1, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - is_safety_check)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; -#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason, IsCheck) \ +#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason) \ DeoptimizeUnlessOperator \ - kDeoptimizeUnless##Kind##Reason##IsCheck##Operator; + DeoptimizeReason::k##Reason> \ + kDeoptimizeUnless##Kind##Reason##Operator; CACHED_DEOPTIMIZE_UNLESS_LIST(CACHED_DEOPTIMIZE_UNLESS) #undef CACHED_DEOPTIMIZE_UNLESS @@ -815,8 +744,7 @@ struct CommonOperatorGlobalCache final { "DynamicCheckMapsWithDeoptUnless", // name 6, 1, 1, 0, 1, 1, // counts DeoptimizeParameters(DeoptimizeKind::kEagerWithResume, kReason, - FeedbackSource(), - IsSafetyCheck::kCriticalSafetyCheck)) {} + FeedbackSource())) {} }; #define CACHED_DYNAMIC_CHECK_MAPS(Reason) \ DynamicMapCheckOperator k##Reason##Operator; @@ -985,12 +913,10 @@ const Operator* CommonOperatorBuilder::StaticAssert(const char* source) { 1, 0, source); } -const Operator* CommonOperatorBuilder::Branch(BranchHint hint, - IsSafetyCheck is_safety_check) { -#define CACHED_BRANCH(Hint, IsCheck) \ - if (hint == BranchHint::k##Hint && \ - is_safety_check == IsSafetyCheck::k##IsCheck) { \ - return &cache_.kBranch##Hint##IsCheck##Operator; \ +const Operator* CommonOperatorBuilder::Branch(BranchHint hint) { +#define CACHED_BRANCH(Hint) \ + if (hint == BranchHint::k##Hint) { \ + return &cache_.kBranch##Hint##Operator; \ } CACHED_BRANCH_LIST(CACHED_BRANCH) #undef CACHED_BRANCH @@ -1008,8 +934,7 @@ const Operator* CommonOperatorBuilder::Deoptimize( CACHED_DEOPTIMIZE_LIST(CACHED_DEOPTIMIZE) #undef CACHED_DEOPTIMIZE // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, - IsSafetyCheck::kNoSafetyCheck); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimize, // opcodes Operator::kFoldable | Operator::kNoThrow, // properties @@ -1020,17 +945,16 @@ const Operator* CommonOperatorBuilder::Deoptimize( const Operator* CommonOperatorBuilder::DeoptimizeIf( DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, IsSafetyCheck is_safety_check) { -#define CACHED_DEOPTIMIZE_IF(Kind, Reason, IsCheck) \ - if (kind == DeoptimizeKind::k##Kind && \ - reason == DeoptimizeReason::k##Reason && \ - is_safety_check == IsSafetyCheck::k##IsCheck && !feedback.IsValid()) { \ - return &cache_.kDeoptimizeIf##Kind##Reason##IsCheck##Operator; \ + FeedbackSource const& feedback) { +#define CACHED_DEOPTIMIZE_IF(Kind, Reason) \ + if (kind == DeoptimizeKind::k##Kind && \ + reason == DeoptimizeReason::k##Reason && !feedback.IsValid()) { \ + return &cache_.kDeoptimizeIf##Kind##Reason##Operator; \ } CACHED_DEOPTIMIZE_IF_LIST(CACHED_DEOPTIMIZE_IF) #undef CACHED_DEOPTIMIZE_IF // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, is_safety_check); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimizeIf, // opcode Operator::kFoldable | Operator::kNoThrow, // properties @@ -1041,17 +965,16 @@ const Operator* CommonOperatorBuilder::DeoptimizeIf( const Operator* CommonOperatorBuilder::DeoptimizeUnless( DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, IsSafetyCheck is_safety_check) { -#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason, IsCheck) \ - if (kind == DeoptimizeKind::k##Kind && \ - reason == DeoptimizeReason::k##Reason && \ - is_safety_check == IsSafetyCheck::k##IsCheck && !feedback.IsValid()) { \ - return &cache_.kDeoptimizeUnless##Kind##Reason##IsCheck##Operator; \ + FeedbackSource const& feedback) { +#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason) \ + if (kind == DeoptimizeKind::k##Kind && \ + reason == DeoptimizeReason::k##Reason && !feedback.IsValid()) { \ + return &cache_.kDeoptimizeUnless##Kind##Reason##Operator; \ } CACHED_DEOPTIMIZE_UNLESS_LIST(CACHED_DEOPTIMIZE_UNLESS) #undef CACHED_DEOPTIMIZE_UNLESS // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, is_safety_check); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimizeUnless, // opcode Operator::kFoldable | Operator::kNoThrow, // properties @@ -1664,17 +1587,6 @@ const FrameStateInfo& FrameStateInfoOf(const Operator* op) { return OpParameter(op); } -IsSafetyCheck CombineSafetyChecks(IsSafetyCheck a, IsSafetyCheck b) { - if (a == IsSafetyCheck::kCriticalSafetyCheck || - b == IsSafetyCheck::kCriticalSafetyCheck) { - return IsSafetyCheck::kCriticalSafetyCheck; - } - if (a == IsSafetyCheck::kSafetyCheck || b == IsSafetyCheck::kSafetyCheck) { - return IsSafetyCheck::kSafetyCheck; - } - return IsSafetyCheck::kNoSafetyCheck; -} - #undef COMMON_CACHED_OP_LIST #undef CACHED_BRANCH_LIST #undef CACHED_RETURN_LIST diff --git a/deps/v8/src/compiler/common-operator.h b/deps/v8/src/compiler/common-operator.h index fa49d3b9920157..f691c1fbf46921 100644 --- a/deps/v8/src/compiler/common-operator.h +++ b/deps/v8/src/compiler/common-operator.h @@ -51,20 +51,6 @@ inline size_t hash_value(BranchHint hint) { return static_cast(hint); } V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, BranchHint); -enum class IsSafetyCheck : uint8_t { - kCriticalSafetyCheck, - kSafetyCheck, - kNoSafetyCheck -}; - -// Get the more critical safety check of the two arguments. -IsSafetyCheck CombineSafetyChecks(IsSafetyCheck, IsSafetyCheck); - -V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, IsSafetyCheck); -inline size_t hash_value(IsSafetyCheck is_safety_check) { - return static_cast(is_safety_check); -} - enum class TrapId : uint32_t { #define DEF_ENUM(Name, ...) k##Name, FOREACH_WASM_TRAPREASON(DEF_ENUM) @@ -78,24 +64,6 @@ std::ostream& operator<<(std::ostream&, TrapId trap_id); TrapId TrapIdOf(const Operator* const op); -struct BranchOperatorInfo { - BranchHint hint; - IsSafetyCheck is_safety_check; -}; - -inline size_t hash_value(const BranchOperatorInfo& info) { - return base::hash_combine(info.hint, info.is_safety_check); -} - -V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, BranchOperatorInfo); - -inline bool operator==(const BranchOperatorInfo& a, - const BranchOperatorInfo& b) { - return a.hint == b.hint && a.is_safety_check == b.is_safety_check; -} - -V8_EXPORT_PRIVATE const BranchOperatorInfo& BranchOperatorInfoOf( - const Operator* const) V8_WARN_UNUSED_RESULT; V8_EXPORT_PRIVATE BranchHint BranchHintOf(const Operator* const) V8_WARN_UNUSED_RESULT; @@ -106,23 +74,17 @@ int ValueInputCountOfReturn(Operator const* const op); class DeoptimizeParameters final { public: DeoptimizeParameters(DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check) - : kind_(kind), - reason_(reason), - feedback_(feedback), - is_safety_check_(is_safety_check) {} + FeedbackSource const& feedback) + : kind_(kind), reason_(reason), feedback_(feedback) {} DeoptimizeKind kind() const { return kind_; } DeoptimizeReason reason() const { return reason_; } const FeedbackSource& feedback() const { return feedback_; } - IsSafetyCheck is_safety_check() const { return is_safety_check_; } private: DeoptimizeKind const kind_; DeoptimizeReason const reason_; FeedbackSource const feedback_; - IsSafetyCheck is_safety_check_; }; bool operator==(DeoptimizeParameters, DeoptimizeParameters); @@ -135,8 +97,6 @@ std::ostream& operator<<(std::ostream&, DeoptimizeParameters p); DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const) V8_WARN_UNUSED_RESULT; -IsSafetyCheck IsSafetyCheckOf(const Operator* op) V8_WARN_UNUSED_RESULT; - class SelectParameters final { public: explicit SelectParameters(MachineRepresentation representation, @@ -479,8 +439,7 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const Operator* Unreachable(); const Operator* StaticAssert(const char* source); const Operator* End(size_t control_input_count); - const Operator* Branch(BranchHint = BranchHint::kNone, - IsSafetyCheck = IsSafetyCheck::kSafetyCheck); + const Operator* Branch(BranchHint = BranchHint::kNone); const Operator* IfTrue(); const Operator* IfFalse(); const Operator* IfSuccess(); @@ -492,14 +451,10 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const Operator* Throw(); const Operator* Deoptimize(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback); - const Operator* DeoptimizeIf( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - const Operator* DeoptimizeUnless( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); + const Operator* DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback); + const Operator* DeoptimizeUnless(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback); // DynamicCheckMapsWithDeoptUnless will call the dynamic map check builtin if // the condition is false, which may then either deoptimize or resume // execution. @@ -577,9 +532,6 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const wasm::FunctionSig* signature); #endif // V8_ENABLE_WEBASSEMBLY - const Operator* MarkAsSafetyCheck(const Operator* op, - IsSafetyCheck safety_check); - const Operator* DelayedStringConstant(const StringConstantBase* str); private: diff --git a/deps/v8/src/compiler/decompression-optimizer.cc b/deps/v8/src/compiler/decompression-optimizer.cc index 79e77fcee65e73..c0068489f75fc1 100644 --- a/deps/v8/src/compiler/decompression-optimizer.cc +++ b/deps/v8/src/compiler/decompression-optimizer.cc @@ -15,8 +15,7 @@ namespace { bool IsMachineLoad(Node* const node) { const IrOpcode::Value opcode = node->opcode(); - return opcode == IrOpcode::kLoad || opcode == IrOpcode::kPoisonedLoad || - opcode == IrOpcode::kProtectedLoad || + return opcode == IrOpcode::kLoad || opcode == IrOpcode::kProtectedLoad || opcode == IrOpcode::kUnalignedLoad || opcode == IrOpcode::kLoadImmutable; } @@ -212,10 +211,6 @@ void DecompressionOptimizer::ChangeLoad(Node* const node) { NodeProperties::ChangeOp(node, machine()->LoadImmutable(compressed_load_rep)); break; - case IrOpcode::kPoisonedLoad: - NodeProperties::ChangeOp(node, - machine()->PoisonedLoad(compressed_load_rep)); - break; case IrOpcode::kProtectedLoad: NodeProperties::ChangeOp(node, machine()->ProtectedLoad(compressed_load_rep)); diff --git a/deps/v8/src/compiler/effect-control-linearizer.cc b/deps/v8/src/compiler/effect-control-linearizer.cc index d7a0ca62dd2110..a6bb7074b033f8 100644 --- a/deps/v8/src/compiler/effect-control-linearizer.cc +++ b/deps/v8/src/compiler/effect-control-linearizer.cc @@ -36,7 +36,6 @@ namespace internal { namespace compiler { enum class MaintainSchedule { kMaintain, kDiscard }; -enum class MaskArrayIndexEnable { kDoNotMaskArrayIndex, kMaskArrayIndex }; class EffectControlLinearizer { public: @@ -44,13 +43,11 @@ class EffectControlLinearizer { JSGraphAssembler* graph_assembler, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - MaskArrayIndexEnable mask_array_index, MaintainSchedule maintain_schedule, JSHeapBroker* broker) : js_graph_(js_graph), schedule_(schedule), temp_zone_(temp_zone), - mask_array_index_(mask_array_index), maintain_schedule_(maintain_schedule), source_positions_(source_positions), node_origins_(node_origins), @@ -80,7 +77,6 @@ class EffectControlLinearizer { Node* LowerChangeTaggedToUint32(Node* node); Node* LowerChangeTaggedToInt64(Node* node); Node* LowerChangeTaggedToTaggedSigned(Node* node); - Node* LowerPoisonIndex(Node* node); Node* LowerCheckInternalizedString(Node* node, Node* frame_state); void LowerCheckMaps(Node* node, Node* frame_state); void LowerDynamicCheckMaps(Node* node, Node* frame_state); @@ -338,7 +334,6 @@ class EffectControlLinearizer { JSGraph* js_graph_; Schedule* schedule_; Zone* temp_zone_; - MaskArrayIndexEnable mask_array_index_; MaintainSchedule maintain_schedule_; RegionObservability region_observability_ = RegionObservability::kObservable; SourcePositionTable* source_positions_; @@ -966,9 +961,6 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, case IrOpcode::kTruncateTaggedToFloat64: result = LowerTruncateTaggedToFloat64(node); break; - case IrOpcode::kPoisonIndex: - result = LowerPoisonIndex(node); - break; case IrOpcode::kCheckClosure: result = LowerCheckClosure(node, frame_state); break; @@ -1788,14 +1780,6 @@ Node* EffectControlLinearizer::LowerTruncateTaggedToFloat64(Node* node) { return done.PhiAt(0); } -Node* EffectControlLinearizer::LowerPoisonIndex(Node* node) { - Node* index = node->InputAt(0); - if (mask_array_index_ == MaskArrayIndexEnable::kMaskArrayIndex) { - index = __ Word32PoisonOnSpeculation(index); - } - return index; -} - Node* EffectControlLinearizer::LowerCheckClosure(Node* node, Node* frame_state) { Handle feedback_cell = FeedbackCellOf(node->op()); @@ -1831,8 +1815,7 @@ void EffectControlLinearizer::MigrateInstanceOrDeopt( __ Word32And(bitfield3, __ Int32Constant(Map::Bits3::IsDeprecatedBit::kMask)), __ Int32Constant(0)); - __ DeoptimizeIf(reason, feedback_source, is_not_deprecated, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + __ DeoptimizeIf(reason, feedback_source, is_not_deprecated, frame_state); Operator::Properties properties = Operator::kNoDeopt | Operator::kNoThrow; Runtime::FunctionId id = Runtime::kTryMigrateInstance; auto call_descriptor = Linkage::GetRuntimeCallDescriptor( @@ -1842,7 +1825,7 @@ void EffectControlLinearizer::MigrateInstanceOrDeopt( __ Int32Constant(1), __ NoContextConstant()); Node* check = ObjectIsSmi(result); __ DeoptimizeIf(DeoptimizeReason::kInstanceMigrationFailed, feedback_source, - check, frame_state, IsSafetyCheck::kCriticalSafetyCheck); + check, frame_state); } void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { @@ -1886,7 +1869,7 @@ void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { Node* check = __ TaggedEqual(value_map, map); if (i == map_count - 1) { __ DeoptimizeIfNot(DeoptimizeReason::kWrongMap, p.feedback(), check, - frame_state, IsSafetyCheck::kCriticalSafetyCheck); + frame_state); } else { auto next_map = __ MakeLabel(); __ BranchWithCriticalSafetyCheck(check, &done, &next_map); @@ -1908,7 +1891,7 @@ void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { if (i == map_count - 1) { __ DeoptimizeIfNot(DeoptimizeReason::kWrongMap, p.feedback(), check, - frame_state, IsSafetyCheck::kCriticalSafetyCheck); + frame_state); } else { auto next_map = __ MakeLabel(); __ BranchWithCriticalSafetyCheck(check, &done, &next_map); @@ -2528,8 +2511,8 @@ Node* EffectControlLinearizer::LowerCheckedUint32Bounds(Node* node, Node* check = __ Uint32LessThan(index, limit); if (!(params.flags() & CheckBoundsFlag::kAbortOnOutOfBounds)) { __ DeoptimizeIfNot(DeoptimizeReason::kOutOfBounds, - params.check_parameters().feedback(), check, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + params.check_parameters().feedback(), check, + frame_state); } else { auto if_abort = __ MakeDeferredLabel(); auto done = __ MakeLabel(); @@ -2574,8 +2557,8 @@ Node* EffectControlLinearizer::LowerCheckedUint64Bounds(Node* node, Node* check = __ Uint64LessThan(index, limit); if (!(params.flags() & CheckBoundsFlag::kAbortOnOutOfBounds)) { __ DeoptimizeIfNot(DeoptimizeReason::kOutOfBounds, - params.check_parameters().feedback(), check, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + params.check_parameters().feedback(), check, + frame_state); } else { auto if_abort = __ MakeDeferredLabel(); auto done = __ MakeLabel(); @@ -5776,8 +5759,7 @@ Node* EffectControlLinearizer::LowerLoadTypedElement(Node* node) { Node* data_ptr = BuildTypedArrayDataPointer(base, external); // Perform the actual typed element access. - return __ LoadElement(AccessBuilder::ForTypedArrayElement( - array_type, true, LoadSensitivity::kCritical), + return __ LoadElement(AccessBuilder::ForTypedArrayElement(array_type, true), data_ptr, index); } @@ -6796,26 +6778,13 @@ Node* EffectControlLinearizer::BuildIsClearedWeakReference(Node* maybe_object) { #undef __ -namespace { - -MaskArrayIndexEnable MaskArrayForPoisonLevel( - PoisoningMitigationLevel poison_level) { - return (poison_level != PoisoningMitigationLevel::kDontPoison) - ? MaskArrayIndexEnable::kMaskArrayIndex - : MaskArrayIndexEnable::kDoNotMaskArrayIndex; -} - -} // namespace - void LinearizeEffectControl(JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker) { JSGraphAssembler graph_assembler_(graph, temp_zone, base::nullopt, nullptr); EffectControlLinearizer linearizer(graph, schedule, &graph_assembler_, temp_zone, source_positions, node_origins, - MaskArrayForPoisonLevel(poison_level), MaintainSchedule::kDiscard, broker); linearizer.Run(); } @@ -6824,16 +6793,13 @@ void LowerToMachineSchedule(JSGraph* js_graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker) { JSGraphAssembler graph_assembler(js_graph, temp_zone, base::nullopt, schedule); EffectControlLinearizer linearizer(js_graph, schedule, &graph_assembler, temp_zone, source_positions, node_origins, - MaskArrayForPoisonLevel(poison_level), MaintainSchedule::kMaintain, broker); - MemoryLowering memory_lowering(js_graph, temp_zone, &graph_assembler, - poison_level); + MemoryLowering memory_lowering(js_graph, temp_zone, &graph_assembler); SelectLowering select_lowering(&graph_assembler, js_graph->graph()); graph_assembler.AddInlineReducer(&memory_lowering); graph_assembler.AddInlineReducer(&select_lowering); diff --git a/deps/v8/src/compiler/effect-control-linearizer.h b/deps/v8/src/compiler/effect-control-linearizer.h index fca4899263cd43..97467391e2af71 100644 --- a/deps/v8/src/compiler/effect-control-linearizer.h +++ b/deps/v8/src/compiler/effect-control-linearizer.h @@ -26,7 +26,7 @@ class JSHeapBroker; V8_EXPORT_PRIVATE void LinearizeEffectControl( JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker); + JSHeapBroker* broker); // Performs effect control linearization lowering in addition to machine // lowering, producing a scheduled graph that is ready for instruction @@ -34,7 +34,7 @@ V8_EXPORT_PRIVATE void LinearizeEffectControl( V8_EXPORT_PRIVATE void LowerToMachineSchedule( JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker); + JSHeapBroker* broker); } // namespace compiler } // namespace internal diff --git a/deps/v8/src/compiler/graph-assembler.cc b/deps/v8/src/compiler/graph-assembler.cc index 26ae88362d8067..6bfd6f8c22356c 100644 --- a/deps/v8/src/compiler/graph-assembler.cc +++ b/deps/v8/src/compiler/graph-assembler.cc @@ -829,46 +829,36 @@ Node* GraphAssembler::BitcastMaybeObjectToWord(Node* value) { effect(), control())); } -Node* GraphAssembler::Word32PoisonOnSpeculation(Node* value) { - return AddNode(graph()->NewNode(machine()->Word32PoisonOnSpeculation(), value, - effect(), control())); -} - Node* GraphAssembler::DeoptimizeIf(DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode( - graph()->NewNode(common()->DeoptimizeIf(DeoptimizeKind::kEager, reason, - feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode(graph()->NewNode( + common()->DeoptimizeIf(DeoptimizeKind::kEager, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode(graph()->NewNode( - common()->DeoptimizeIf(kind, reason, feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode( + graph()->NewNode(common()->DeoptimizeIf(kind, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIfNot(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode(graph()->NewNode( - common()->DeoptimizeUnless(kind, reason, feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode( + graph()->NewNode(common()->DeoptimizeUnless(kind, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIfNot(DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { + Node* condition, Node* frame_state) { return DeoptimizeIfNot(DeoptimizeKind::kEager, reason, feedback, condition, - frame_state, is_safety_check); + frame_state); } Node* GraphAssembler::DynamicCheckMapsWithDeoptUnless(Node* condition, @@ -924,8 +914,7 @@ void GraphAssembler::BranchWithCriticalSafetyCheck( hint = if_false->IsDeferred() ? BranchHint::kTrue : BranchHint::kFalse; } - BranchImpl(condition, if_true, if_false, hint, - IsSafetyCheck::kCriticalSafetyCheck); + BranchImpl(condition, if_true, if_false, hint); } void GraphAssembler::RecordBranchInBlockUpdater(Node* branch, diff --git a/deps/v8/src/compiler/graph-assembler.h b/deps/v8/src/compiler/graph-assembler.h index 5efe6dd9c3c3dd..c9ddd63e719254 100644 --- a/deps/v8/src/compiler/graph-assembler.h +++ b/deps/v8/src/compiler/graph-assembler.h @@ -330,24 +330,16 @@ class V8_EXPORT_PRIVATE GraphAssembler { Node* Retain(Node* buffer); Node* UnsafePointerAdd(Node* base, Node* external); - Node* Word32PoisonOnSpeculation(Node* value); - - Node* DeoptimizeIf( - DeoptimizeReason reason, FeedbackSource const& feedback, Node* condition, - Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIf( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIfNot( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIfNot( - DeoptimizeReason reason, FeedbackSource const& feedback, Node* condition, - Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); + Node* DeoptimizeIf(DeoptimizeReason reason, FeedbackSource const& feedback, + Node* condition, Node* frame_state); + Node* DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback, Node* condition, + Node* frame_state); + Node* DeoptimizeIfNot(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback, Node* condition, + Node* frame_state); + Node* DeoptimizeIfNot(DeoptimizeReason reason, FeedbackSource const& feedback, + Node* condition, Node* frame_state); Node* DynamicCheckMapsWithDeoptUnless(Node* condition, Node* slot_index, Node* map, Node* handler, Node* feedback_vector, @@ -557,7 +549,7 @@ class V8_EXPORT_PRIVATE GraphAssembler { void BranchImpl(Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, - BranchHint hint, IsSafetyCheck is_safety_check, Vars...); + BranchHint hint, Vars...); void RecordBranchInBlockUpdater(Node* branch, Node* if_true_control, Node* if_false_control, BasicBlock* if_true_block, @@ -742,8 +734,7 @@ void GraphAssembler::Branch(Node* condition, hint = if_false->IsDeferred() ? BranchHint::kTrue : BranchHint::kFalse; } - BranchImpl(condition, if_true, if_false, hint, IsSafetyCheck::kNoSafetyCheck, - vars...); + BranchImpl(condition, if_true, if_false, hint, vars...); } template @@ -751,20 +742,17 @@ void GraphAssembler::BranchWithHint( Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, BranchHint hint, Vars... vars) { - BranchImpl(condition, if_true, if_false, hint, IsSafetyCheck::kNoSafetyCheck, - vars...); + BranchImpl(condition, if_true, if_false, hint, vars...); } template void GraphAssembler::BranchImpl(Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, - BranchHint hint, IsSafetyCheck is_safety_check, - Vars... vars) { + BranchHint hint, Vars... vars) { DCHECK_NOT_NULL(control()); - Node* branch = graph()->NewNode(common()->Branch(hint, is_safety_check), - condition, control()); + Node* branch = graph()->NewNode(common()->Branch(hint), condition, control()); Node* if_true_control = control_ = graph()->NewNode(common()->IfTrue(), branch); diff --git a/deps/v8/src/compiler/js-call-reducer.cc b/deps/v8/src/compiler/js-call-reducer.cc index 3dcdc6a33ee2ed..32bdebad493a38 100644 --- a/deps/v8/src/compiler/js-call-reducer.cc +++ b/deps/v8/src/compiler/js-call-reducer.cc @@ -728,8 +728,7 @@ class IteratingArrayBuiltinReducerAssembler : public JSCallReducerAssembler { TNode elements = LoadField(AccessBuilder::ForJSObjectElements(), o); TNode value = LoadElement( - AccessBuilder::ForFixedArrayElement(kind, LoadSensitivity::kCritical), - elements, index); + AccessBuilder::ForFixedArrayElement(kind), elements, index); return std::make_pair(index, value); } @@ -6373,9 +6372,8 @@ Reduction JSCallReducer::ReduceStringPrototypeStringAt( index, receiver_length, effect, control); // Return the character from the {receiver} as single character string. - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); Node* value = effect = graph()->NewNode(string_access_operator, receiver, - masked_index, effect, control); + index, effect, control); ReplaceWithValue(node, value, effect, control); return Replace(value); @@ -6433,11 +6431,9 @@ Reduction JSCallReducer::ReduceStringPrototypeStartsWith(Node* node) { Node* etrue = effect; Node* vtrue; { - Node* masked_position = graph()->NewNode( - simplified()->PoisonIndex(), unsigned_position); Node* string_first = etrue = graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_position, etrue, if_true); + unsigned_position, etrue, if_true); Node* search_first = jsgraph()->Constant(str.GetFirstChar().value()); @@ -6488,10 +6484,8 @@ Reduction JSCallReducer::ReduceStringPrototypeCharAt(Node* node) { index, receiver_length, effect, control); // Return the character from the {receiver} as single character string. - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - Node* value = effect = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, masked_index, - effect, control); + Node* value = effect = graph()->NewNode(simplified()->StringCharCodeAt(), + receiver, index, effect, control); value = graph()->NewNode(simplified()->StringFromSingleCharCode(), value); ReplaceWithValue(node, value, effect, control); diff --git a/deps/v8/src/compiler/js-create-lowering.cc b/deps/v8/src/compiler/js-create-lowering.cc index 414977eb7db985..2d69b8dfca3f2d 100644 --- a/deps/v8/src/compiler/js-create-lowering.cc +++ b/deps/v8/src/compiler/js-create-lowering.cc @@ -1713,7 +1713,6 @@ base::Optional JSCreateLowering::TryAllocateFastLiteral( Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier, - LoadSensitivity::kUnsafe, const_field_info}; // Note: the use of RawInobjectPropertyAt (vs. the higher-level diff --git a/deps/v8/src/compiler/js-native-context-specialization.cc b/deps/v8/src/compiler/js-native-context-specialization.cc index e03e0d41a31437..49edcc783a221d 100644 --- a/deps/v8/src/compiler/js-native-context-specialization.cc +++ b/deps/v8/src/compiler/js-native-context-specialization.cc @@ -2449,7 +2449,6 @@ JSNativeContextSpecialization::BuildPropertyStore( field_type, MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kUnsafe, access_info.GetConstFieldInfo(), access_mode == AccessMode::kStoreInLiteral}; @@ -2483,7 +2482,6 @@ JSNativeContextSpecialization::BuildPropertyStore( Type::OtherInternal(), MachineType::TaggedPointer(), kPointerWriteBarrier, - LoadSensitivity::kUnsafe, access_info.GetConstFieldInfo(), access_mode == AccessMode::kStoreInLiteral}; storage = effect = @@ -2789,10 +2787,8 @@ JSNativeContextSpecialization::BuildElementAccess( if (situation == kHandleOOB_SmiCheckDone) { Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); - Node* branch = graph()->NewNode( - common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, control); + Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), + check, control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); Node* etrue = effect; @@ -2980,10 +2976,9 @@ JSNativeContextSpecialization::BuildElementAccess( element_type = Type::SignedSmall(); element_machine_type = MachineType::TaggedSigned(); } - ElementAccess element_access = { - kTaggedBase, FixedArray::kHeaderSize, - element_type, element_machine_type, - kFullWriteBarrier, LoadSensitivity::kCritical}; + ElementAccess element_access = {kTaggedBase, FixedArray::kHeaderSize, + element_type, element_machine_type, + kFullWriteBarrier}; // Access the actual element. if (keyed_mode.access_mode() == AccessMode::kLoad) { @@ -3003,10 +2998,8 @@ JSNativeContextSpecialization::BuildElementAccess( CanTreatHoleAsUndefined(receiver_maps)) { Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); - Node* branch = graph()->NewNode( - common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, control); + Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), + check, control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); Node* etrue = effect; @@ -3289,9 +3282,7 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); Node* branch = - graph()->NewNode(common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, *control); + graph()->NewNode(common()->Branch(BranchHint::kTrue), check, *control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); // Do a real bounds check against {length}. This is in order to protect @@ -3302,10 +3293,8 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( CheckBoundsFlag::kConvertStringAndMinusZero | CheckBoundsFlag::kAbortOnOutOfBounds), index, length, *effect, if_true); - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - Node* vtrue = etrue = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_index, etrue, if_true); + Node* vtrue = etrue = graph()->NewNode(simplified()->StringCharCodeAt(), + receiver, index, etrue, if_true); vtrue = graph()->NewNode(simplified()->StringFromSingleCharCode(), vtrue); Node* if_false = graph()->NewNode(common()->IfFalse(), branch); @@ -3323,12 +3312,9 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( CheckBoundsFlag::kConvertStringAndMinusZero), index, length, *effect, *control); - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - // Return the character from the {receiver} as single character string. - Node* value = *effect = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_index, *effect, *control); + Node* value = *effect = graph()->NewNode( + simplified()->StringCharCodeAt(), receiver, index, *effect, *control); value = graph()->NewNode(simplified()->StringFromSingleCharCode(), value); return value; } diff --git a/deps/v8/src/compiler/linkage.h b/deps/v8/src/compiler/linkage.h index 8b33444b294bf2..707c7d98ab8b04 100644 --- a/deps/v8/src/compiler/linkage.h +++ b/deps/v8/src/compiler/linkage.h @@ -214,15 +214,13 @@ class V8_EXPORT_PRIVATE CallDescriptor final kInitializeRootRegister = 1u << 3, // Does not ever try to allocate space on our heap. kNoAllocate = 1u << 4, - // Use retpoline for this call if indirect. - kRetpoline = 1u << 5, // Use the kJavaScriptCallCodeStartRegister (fixed) register for the // indirect target address when calling. - kFixedTargetRegister = 1u << 6, - kCallerSavedRegisters = 1u << 7, + kFixedTargetRegister = 1u << 5, + kCallerSavedRegisters = 1u << 6, // The kCallerSavedFPRegisters only matters (and set) when the more general // flag for kCallerSavedRegisters above is also set. - kCallerSavedFPRegisters = 1u << 8, + kCallerSavedFPRegisters = 1u << 7, // Tail calls for tier up are special (in fact they are different enough // from normal tail calls to warrant a dedicated opcode; but they also have // enough similar aspects that reusing the TailCall opcode is pragmatic). @@ -238,15 +236,15 @@ class V8_EXPORT_PRIVATE CallDescriptor final // // In other words, behavior is identical to a jmp instruction prior caller // frame construction. - kIsTailCallForTierUp = 1u << 9, + kIsTailCallForTierUp = 1u << 8, + + // AIX has a function descriptor by default but it can be disabled for a + // certain CFunction call (only used for Kind::kCallAddress). + kNoFunctionDescriptor = 1u << 9, // Flags past here are *not* encoded in InstructionCode and are thus not // accessible from the code generator. See also // kFlagsBitsEncodedInInstructionCode. - - // AIX has a function descriptor by default but it can be disabled for a - // certain CFunction call (only used for Kind::kCallAddress). - kNoFunctionDescriptor = 1u << 10, }; using Flags = base::Flags; diff --git a/deps/v8/src/compiler/machine-graph-verifier.cc b/deps/v8/src/compiler/machine-graph-verifier.cc index 88679283d94877..eb4918cfd762ea 100644 --- a/deps/v8/src/compiler/machine-graph-verifier.cc +++ b/deps/v8/src/compiler/machine-graph-verifier.cc @@ -124,7 +124,6 @@ class MachineRepresentationInferrer { case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: case IrOpcode::kProtectedLoad: - case IrOpcode::kPoisonedLoad: representation_vector_[node->id()] = PromoteRepresentation( LoadRepresentationOf(node->op()).representation()); break; @@ -206,15 +205,8 @@ class MachineRepresentationInferrer { case IrOpcode::kChangeInt32ToTagged: case IrOpcode::kChangeUint32ToTagged: case IrOpcode::kBitcastWordToTagged: - case IrOpcode::kTaggedPoisonOnSpeculation: representation_vector_[node->id()] = MachineRepresentation::kTagged; break; - case IrOpcode::kWord32PoisonOnSpeculation: - representation_vector_[node->id()] = MachineRepresentation::kWord32; - break; - case IrOpcode::kWord64PoisonOnSpeculation: - representation_vector_[node->id()] = MachineRepresentation::kWord64; - break; case IrOpcode::kCompressedHeapConstant: representation_vector_[node->id()] = MachineRepresentation::kCompressedPointer; @@ -394,14 +386,6 @@ class MachineRepresentationChecker { CheckValueInputRepresentationIs( node, 0, MachineType::PointerRepresentation()); break; - case IrOpcode::kWord32PoisonOnSpeculation: - CheckValueInputRepresentationIs(node, 0, - MachineRepresentation::kWord32); - break; - case IrOpcode::kWord64PoisonOnSpeculation: - CheckValueInputRepresentationIs(node, 0, - MachineRepresentation::kWord64); - break; case IrOpcode::kBitcastTaggedToWord: case IrOpcode::kBitcastTaggedToWordForTagAndSmiBits: if (COMPRESS_POINTERS_BOOL) { @@ -410,9 +394,6 @@ class MachineRepresentationChecker { CheckValueInputIsTagged(node, 0); } break; - case IrOpcode::kTaggedPoisonOnSpeculation: - CheckValueInputIsTagged(node, 0); - break; case IrOpcode::kTruncateFloat64ToWord32: case IrOpcode::kTruncateFloat64ToUint32: case IrOpcode::kTruncateFloat64ToFloat32: @@ -566,7 +547,6 @@ class MachineRepresentationChecker { case IrOpcode::kWord32AtomicLoad: case IrOpcode::kWord32AtomicPairLoad: case IrOpcode::kWord64AtomicLoad: - case IrOpcode::kPoisonedLoad: CheckValueInputIsTaggedOrPointer(node, 0); CheckValueInputRepresentationIs( node, 1, MachineType::PointerRepresentation()); diff --git a/deps/v8/src/compiler/machine-operator.cc b/deps/v8/src/compiler/machine-operator.cc index 411c6d4cb32d35..3dd695339015e6 100644 --- a/deps/v8/src/compiler/machine-operator.cc +++ b/deps/v8/src/compiler/machine-operator.cc @@ -124,7 +124,6 @@ LoadRepresentation LoadRepresentationOf(Operator const* op) { IrOpcode::kWord32AtomicLoad == op->opcode() || IrOpcode::kWord64AtomicLoad == op->opcode() || IrOpcode::kWord32AtomicPairLoad == op->opcode() || - IrOpcode::kPoisonedLoad == op->opcode() || IrOpcode::kUnalignedLoad == op->opcode() || IrOpcode::kLoadImmutable == op->opcode()); return OpParameter(op); @@ -831,13 +830,6 @@ struct MachineOperatorGlobalCache { Operator::kEliminatable, "Load", 2, 1, \ 1, 1, 1, 0, MachineType::Type()) {} \ }; \ - struct PoisonedLoad##Type##Operator final \ - : public Operator1 { \ - PoisonedLoad##Type##Operator() \ - : Operator1( \ - IrOpcode::kPoisonedLoad, Operator::kEliminatable, \ - "PoisonedLoad", 2, 1, 1, 1, 1, 0, MachineType::Type()) {} \ - }; \ struct UnalignedLoad##Type##Operator final \ : public Operator1 { \ UnalignedLoad##Type##Operator() \ @@ -861,7 +853,6 @@ struct MachineOperatorGlobalCache { 0, 0, 1, 0, 0, MachineType::Type()) {} \ }; \ Load##Type##Operator kLoad##Type; \ - PoisonedLoad##Type##Operator kPoisonedLoad##Type; \ UnalignedLoad##Type##Operator kUnalignedLoad##Type; \ ProtectedLoad##Type##Operator kProtectedLoad##Type; \ LoadImmutable##Type##Operator kLoadImmutable##Type; @@ -1157,30 +1148,6 @@ struct MachineOperatorGlobalCache { }; BitcastMaybeObjectToWordOperator kBitcastMaybeObjectToWord; - struct TaggedPoisonOnSpeculation : public Operator { - TaggedPoisonOnSpeculation() - : Operator(IrOpcode::kTaggedPoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "TaggedPoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - TaggedPoisonOnSpeculation kTaggedPoisonOnSpeculation; - - struct Word32PoisonOnSpeculation : public Operator { - Word32PoisonOnSpeculation() - : Operator(IrOpcode::kWord32PoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "Word32PoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - Word32PoisonOnSpeculation kWord32PoisonOnSpeculation; - - struct Word64PoisonOnSpeculation : public Operator { - Word64PoisonOnSpeculation() - : Operator(IrOpcode::kWord64PoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "Word64PoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - Word64PoisonOnSpeculation kWord64PoisonOnSpeculation; - struct AbortCSAAssertOperator : public Operator { AbortCSAAssertOperator() : Operator(IrOpcode::kAbortCSAAssert, Operator::kNoThrow, @@ -1366,16 +1333,6 @@ const Operator* MachineOperatorBuilder::LoadImmutable(LoadRepresentation rep) { UNREACHABLE(); } -const Operator* MachineOperatorBuilder::PoisonedLoad(LoadRepresentation rep) { -#define LOAD(Type) \ - if (rep == MachineType::Type()) { \ - return &cache_.kPoisonedLoad##Type; \ - } - MACHINE_TYPE_LIST(LOAD) -#undef LOAD - UNREACHABLE(); -} - const Operator* MachineOperatorBuilder::ProtectedLoad(LoadRepresentation rep) { #define LOAD(Type) \ if (rep == MachineType::Type()) { \ @@ -1813,18 +1770,6 @@ const Operator* MachineOperatorBuilder::Word32AtomicPairCompareExchange() { return &cache_.kWord32AtomicPairCompareExchange; } -const Operator* MachineOperatorBuilder::TaggedPoisonOnSpeculation() { - return &cache_.kTaggedPoisonOnSpeculation; -} - -const Operator* MachineOperatorBuilder::Word32PoisonOnSpeculation() { - return &cache_.kWord32PoisonOnSpeculation; -} - -const Operator* MachineOperatorBuilder::Word64PoisonOnSpeculation() { - return &cache_.kWord64PoisonOnSpeculation; -} - #define EXTRACT_LANE_OP(Type, Sign, lane_count) \ const Operator* MachineOperatorBuilder::Type##ExtractLane##Sign( \ int32_t lane_index) { \ diff --git a/deps/v8/src/compiler/machine-operator.h b/deps/v8/src/compiler/machine-operator.h index 0ee3649ad0cd78..80a5b991a5b838 100644 --- a/deps/v8/src/compiler/machine-operator.h +++ b/deps/v8/src/compiler/machine-operator.h @@ -852,7 +852,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final // load [base + index] const Operator* Load(LoadRepresentation rep); const Operator* LoadImmutable(LoadRepresentation rep); - const Operator* PoisonedLoad(LoadRepresentation rep); const Operator* ProtectedLoad(LoadRepresentation rep); const Operator* LoadTransform(MemoryAccessKind kind, @@ -879,11 +878,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final const Operator* StackSlot(int size, int alignment = 0); const Operator* StackSlot(MachineRepresentation rep, int alignment = 0); - // Destroy value by masking when misspeculating. - const Operator* TaggedPoisonOnSpeculation(); - const Operator* Word32PoisonOnSpeculation(); - const Operator* Word64PoisonOnSpeculation(); - // Access to the machine stack. const Operator* LoadFramePointer(); const Operator* LoadParentFramePointer(); @@ -980,7 +974,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final V(Word, Ror) \ V(Word, Clz) \ V(Word, Equal) \ - V(Word, PoisonOnSpeculation) \ V(Int, Add) \ V(Int, Sub) \ V(Int, Mul) \ diff --git a/deps/v8/src/compiler/memory-lowering.cc b/deps/v8/src/compiler/memory-lowering.cc index 9673a51844ecc1..27ad71c07a62b2 100644 --- a/deps/v8/src/compiler/memory-lowering.cc +++ b/deps/v8/src/compiler/memory-lowering.cc @@ -60,7 +60,6 @@ class MemoryLowering::AllocationGroup final : public ZoneObject { MemoryLowering::MemoryLowering(JSGraph* jsgraph, Zone* zone, JSGraphAssembler* graph_assembler, - PoisoningMitigationLevel poisoning_level, AllocationFolding allocation_folding, WriteBarrierAssertFailedCallback callback, const char* function_debug_name) @@ -71,7 +70,6 @@ MemoryLowering::MemoryLowering(JSGraph* jsgraph, Zone* zone, machine_(jsgraph->machine()), graph_assembler_(graph_assembler), allocation_folding_(allocation_folding), - poisoning_level_(poisoning_level), write_barrier_assert_failed_(callback), function_debug_name_(function_debug_name) {} @@ -401,11 +399,7 @@ Reduction MemoryLowering::ReduceLoadElement(Node* node) { node->ReplaceInput(1, ComputeIndex(access, index)); MachineType type = access.machine_type; DCHECK(!type.IsMapWord()); - if (NeedsPoisoning(access.load_sensitivity)) { - NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type)); - } else { - NodeProperties::ChangeOp(node, machine()->Load(type)); - } + NodeProperties::ChangeOp(node, machine()->Load(type)); return Changed(node); } @@ -413,8 +407,7 @@ Node* MemoryLowering::DecodeExternalPointer( Node* node, ExternalPointerTag external_pointer_tag) { #ifdef V8_HEAP_SANDBOX DCHECK(V8_HEAP_SANDBOX_BOOL); - DCHECK(node->opcode() == IrOpcode::kLoad || - node->opcode() == IrOpcode::kPoisonedLoad); + DCHECK(node->opcode() == IrOpcode::kLoad); Node* effect = NodeProperties::GetEffectInput(node); Node* control = NodeProperties::GetControlInput(node); __ InitializeEffectControl(effect, control); @@ -476,16 +469,11 @@ Reduction MemoryLowering::ReduceLoadField(Node* node) { } if (type.IsMapWord()) { - DCHECK(!NeedsPoisoning(access.load_sensitivity)); DCHECK(!access.type.Is(Type::SandboxedExternalPointer())); return ReduceLoadMap(node); } - if (NeedsPoisoning(access.load_sensitivity)) { - NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type)); - } else { - NodeProperties::ChangeOp(node, machine()->Load(type)); - } + NodeProperties::ChangeOp(node, machine()->Load(type)); if (V8_HEAP_SANDBOX_BOOL && access.type.Is(Type::SandboxedExternalPointer())) { @@ -655,21 +643,6 @@ WriteBarrierKind MemoryLowering::ComputeWriteBarrierKind( return write_barrier_kind; } -bool MemoryLowering::NeedsPoisoning(LoadSensitivity load_sensitivity) const { - // Safe loads do not need poisoning. - if (load_sensitivity == LoadSensitivity::kSafe) return false; - - switch (poisoning_level_) { - case PoisoningMitigationLevel::kDontPoison: - return false; - case PoisoningMitigationLevel::kPoisonAll: - return true; - case PoisoningMitigationLevel::kPoisonCriticalOnly: - return load_sensitivity == LoadSensitivity::kCritical; - } - UNREACHABLE(); -} - MemoryLowering::AllocationGroup::AllocationGroup(Node* node, AllocationType allocation, Zone* zone) diff --git a/deps/v8/src/compiler/memory-lowering.h b/deps/v8/src/compiler/memory-lowering.h index 1fbe18abff329f..9edb880e6fd3ff 100644 --- a/deps/v8/src/compiler/memory-lowering.h +++ b/deps/v8/src/compiler/memory-lowering.h @@ -75,7 +75,6 @@ class MemoryLowering final : public Reducer { MemoryLowering( JSGraph* jsgraph, Zone* zone, JSGraphAssembler* graph_assembler, - PoisoningMitigationLevel poisoning_level, AllocationFolding allocation_folding = AllocationFolding::kDontAllocationFolding, WriteBarrierAssertFailedCallback callback = [](Node*, Node*, const char*, @@ -112,7 +111,6 @@ class MemoryLowering final : public Reducer { Node* DecodeExternalPointer(Node* encoded_pointer, ExternalPointerTag tag); Reduction ReduceLoadMap(Node* encoded_pointer); Node* ComputeIndex(ElementAccess const& access, Node* node); - bool NeedsPoisoning(LoadSensitivity load_sensitivity) const; void EnsureAllocateOperator(); Node* GetWasmInstanceNode(); @@ -133,7 +131,6 @@ class MemoryLowering final : public Reducer { MachineOperatorBuilder* machine_; JSGraphAssembler* graph_assembler_; AllocationFolding allocation_folding_; - PoisoningMitigationLevel poisoning_level_; WriteBarrierAssertFailedCallback write_barrier_assert_failed_; const char* function_debug_name_; diff --git a/deps/v8/src/compiler/memory-optimizer.cc b/deps/v8/src/compiler/memory-optimizer.cc index 860ea1fae18ce9..ba4a5c1f675e2a 100644 --- a/deps/v8/src/compiler/memory-optimizer.cc +++ b/deps/v8/src/compiler/memory-optimizer.cc @@ -40,7 +40,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kLoadLane: case IrOpcode::kLoadTransform: case IrOpcode::kMemoryBarrier: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kProtectedStore: case IrOpcode::kRetain: @@ -54,7 +53,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kStoreField: case IrOpcode::kStoreLane: case IrOpcode::kStoreToObject: - case IrOpcode::kTaggedPoisonOnSpeculation: case IrOpcode::kUnalignedLoad: case IrOpcode::kUnalignedStore: case IrOpcode::kUnreachable: @@ -77,7 +75,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kWord32AtomicStore: case IrOpcode::kWord32AtomicSub: case IrOpcode::kWord32AtomicXor: - case IrOpcode::kWord32PoisonOnSpeculation: case IrOpcode::kWord64AtomicAdd: case IrOpcode::kWord64AtomicAnd: case IrOpcode::kWord64AtomicCompareExchange: @@ -87,7 +84,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kWord64AtomicStore: case IrOpcode::kWord64AtomicSub: case IrOpcode::kWord64AtomicXor: - case IrOpcode::kWord64PoisonOnSpeculation: return false; case IrOpcode::kCall: @@ -183,13 +179,12 @@ void WriteBarrierAssertFailed(Node* node, Node* object, const char* name, } // namespace MemoryOptimizer::MemoryOptimizer( - JSGraph* jsgraph, Zone* zone, PoisoningMitigationLevel poisoning_level, + JSGraph* jsgraph, Zone* zone, MemoryLowering::AllocationFolding allocation_folding, const char* function_debug_name, TickCounter* tick_counter) : graph_assembler_(jsgraph, zone), - memory_lowering_(jsgraph, zone, &graph_assembler_, poisoning_level, - allocation_folding, WriteBarrierAssertFailed, - function_debug_name), + memory_lowering_(jsgraph, zone, &graph_assembler_, allocation_folding, + WriteBarrierAssertFailed, function_debug_name), jsgraph_(jsgraph), empty_state_(AllocationState::Empty(zone)), pending_(zone), diff --git a/deps/v8/src/compiler/memory-optimizer.h b/deps/v8/src/compiler/memory-optimizer.h index 3845304fdd6b98..7d8bca44d455e0 100644 --- a/deps/v8/src/compiler/memory-optimizer.h +++ b/deps/v8/src/compiler/memory-optimizer.h @@ -30,7 +30,6 @@ using NodeId = uint32_t; class MemoryOptimizer final { public: MemoryOptimizer(JSGraph* jsgraph, Zone* zone, - PoisoningMitigationLevel poisoning_level, MemoryLowering::AllocationFolding allocation_folding, const char* function_debug_name, TickCounter* tick_counter); ~MemoryOptimizer() = default; diff --git a/deps/v8/src/compiler/node-matchers.h b/deps/v8/src/compiler/node-matchers.h index 1ce402342431d2..52dc476dc45328 100644 --- a/deps/v8/src/compiler/node-matchers.h +++ b/deps/v8/src/compiler/node-matchers.h @@ -743,7 +743,6 @@ struct BaseWithIndexAndDisplacementMatcher { switch (from->opcode()) { case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kInt32Add: case IrOpcode::kInt64Add: diff --git a/deps/v8/src/compiler/opcodes.h b/deps/v8/src/compiler/opcodes.h index 912bd7b5cecc71..b956f148cc0852 100644 --- a/deps/v8/src/compiler/opcodes.h +++ b/deps/v8/src/compiler/opcodes.h @@ -463,7 +463,6 @@ V(PlainPrimitiveToFloat64) \ V(PlainPrimitiveToNumber) \ V(PlainPrimitiveToWord32) \ - V(PoisonIndex) \ V(RestLength) \ V(RuntimeAbort) \ V(StoreDataViewElement) \ @@ -686,7 +685,6 @@ V(DebugBreak) \ V(Comment) \ V(Load) \ - V(PoisonedLoad) \ V(LoadImmutable) \ V(Store) \ V(StackSlot) \ @@ -746,9 +744,6 @@ V(Word64Select) \ V(Float32Select) \ V(Float64Select) \ - V(TaggedPoisonOnSpeculation) \ - V(Word32PoisonOnSpeculation) \ - V(Word64PoisonOnSpeculation) \ V(LoadStackCheckOffset) \ V(LoadFramePointer) \ V(LoadParentFramePointer) \ diff --git a/deps/v8/src/compiler/pipeline.cc b/deps/v8/src/compiler/pipeline.cc index e802cd72682345..09fb15fb17229f 100644 --- a/deps/v8/src/compiler/pipeline.cc +++ b/deps/v8/src/compiler/pipeline.cc @@ -547,8 +547,7 @@ class PipelineData { code_generator_ = new CodeGenerator( codegen_zone(), frame(), linkage, sequence(), info(), isolate(), osr_helper_, start_source_position_, jump_optimization_info_, - info()->GetPoisoningMitigationLevel(), assembler_options(), - info_->builtin(), max_unoptimized_frame_height(), + assembler_options(), info_->builtin(), max_unoptimized_frame_height(), max_pushed_argument_count(), FLAG_trace_turbo_stack_accesses ? debug_name_.get() : nullptr); } @@ -1161,18 +1160,6 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl( if (FLAG_turbo_inlining) { compilation_info()->set_inlining(); } - - // This is the bottleneck for computing and setting poisoning level in the - // optimizing compiler. - PoisoningMitigationLevel load_poisoning = - PoisoningMitigationLevel::kDontPoison; - if (FLAG_untrusted_code_mitigations) { - // For full mitigations, this can be changed to - // PoisoningMitigationLevel::kPoisonAll. - load_poisoning = PoisoningMitigationLevel::kPoisonCriticalOnly; - } - compilation_info()->SetPoisoningMitigationLevel(load_poisoning); - if (FLAG_turbo_allocation_folding) { compilation_info()->set_allocation_folding(); } @@ -1629,10 +1616,10 @@ struct SimplifiedLoweringPhase { DECL_PIPELINE_PHASE_CONSTANTS(SimplifiedLowering) void Run(PipelineData* data, Zone* temp_zone, Linkage* linkage) { - SimplifiedLowering lowering( - data->jsgraph(), data->broker(), temp_zone, data->source_positions(), - data->node_origins(), data->info()->GetPoisoningMitigationLevel(), - &data->info()->tick_counter(), linkage, data->observe_node_manager()); + SimplifiedLowering lowering(data->jsgraph(), data->broker(), temp_zone, + data->source_positions(), data->node_origins(), + &data->info()->tick_counter(), linkage, + data->observe_node_manager()); // RepresentationChanger accesses the heap. UnparkedScopeIfNeeded scope(data->broker()); @@ -1797,7 +1784,6 @@ struct EffectControlLinearizationPhase { // - introduce effect phis and rewire effects to get SSA again. LinearizeEffectControl(data->jsgraph(), schedule, temp_zone, data->source_positions(), data->node_origins(), - data->info()->GetPoisoningMitigationLevel(), data->broker()); } { @@ -1899,7 +1885,7 @@ struct MemoryOptimizationPhase { // Optimize allocations and load/store operations. MemoryOptimizer optimizer( - data->jsgraph(), temp_zone, data->info()->GetPoisoningMitigationLevel(), + data->jsgraph(), temp_zone, data->info()->allocation_folding() ? MemoryLowering::AllocationFolding::kDoAllocationFolding : MemoryLowering::AllocationFolding::kDontAllocationFolding, @@ -1989,7 +1975,6 @@ struct ScheduledEffectControlLinearizationPhase { // - lower simplified memory and select nodes to machine level nodes. LowerToMachineSchedule(data->jsgraph(), data->schedule(), temp_zone, data->source_positions(), data->node_origins(), - data->info()->GetPoisoningMitigationLevel(), data->broker()); // TODO(rmcilroy) Avoid having to rebuild rpo_order on schedule each time. @@ -2205,7 +2190,6 @@ struct InstructionSelectionPhase { data->assembler_options().enable_root_relative_access ? InstructionSelector::kEnableRootsRelativeAddressing : InstructionSelector::kDisableRootsRelativeAddressing, - data->info()->GetPoisoningMitigationLevel(), data->info()->trace_turbo_json() ? InstructionSelector::kEnableTraceTurboJson : InstructionSelector::kDisableTraceTurboJson); @@ -2969,17 +2953,12 @@ int HashGraphForPGO(Graph* graph) { MaybeHandle Pipeline::GenerateCodeForCodeStub( Isolate* isolate, CallDescriptor* call_descriptor, Graph* graph, JSGraph* jsgraph, SourcePositionTable* source_positions, CodeKind kind, - const char* debug_name, Builtin builtin, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, + const char* debug_name, Builtin builtin, const AssemblerOptions& options, const ProfileDataFromFile* profile_data) { OptimizedCompilationInfo info(base::CStrVector(debug_name), graph->zone(), kind); info.set_builtin(builtin); - if (poisoning_level != PoisoningMitigationLevel::kDontPoison) { - info.SetPoisoningMitigationLevel(poisoning_level); - } - // Construct a pipeline for scheduling and code generation. ZoneStats zone_stats(isolate->allocator()); NodeOriginTable node_origins(graph); @@ -3546,18 +3525,7 @@ bool PipelineImpl::SelectInstructions(Linkage* linkage) { config.reset(RegisterConfiguration::RestrictGeneralRegisters(registers)); AllocateRegistersForTopTier(config.get(), call_descriptor, run_verifier); } else { - const RegisterConfiguration* config; - if (data->info()->GetPoisoningMitigationLevel() != - PoisoningMitigationLevel::kDontPoison) { -#ifdef V8_TARGET_ARCH_IA32 - FATAL("Poisoning is not supported on ia32."); -#else - config = RegisterConfiguration::Poisoning(); -#endif // V8_TARGET_ARCH_IA32 - } else { - config = RegisterConfiguration::Default(); - } - + const RegisterConfiguration* config = RegisterConfiguration::Default(); if (data->info()->IsTurboprop() && FLAG_turboprop_mid_tier_reg_alloc) { AllocateRegistersForMidTier(config, call_descriptor, run_verifier); } else { @@ -3643,7 +3611,6 @@ std::ostream& operator<<(std::ostream& out, out << "\"codeStartRegisterCheck\": " << s.offsets_info->code_start_register_check << ", "; out << "\"deoptCheck\": " << s.offsets_info->deopt_check << ", "; - out << "\"initPoison\": " << s.offsets_info->init_poison << ", "; out << "\"blocksStart\": " << s.offsets_info->blocks_start << ", "; out << "\"outOfLineCode\": " << s.offsets_info->out_of_line_code << ", "; out << "\"deoptimizationExits\": " << s.offsets_info->deoptimization_exits diff --git a/deps/v8/src/compiler/pipeline.h b/deps/v8/src/compiler/pipeline.h index ea67b31e06cbf5..cd4c6b9e16c8c3 100644 --- a/deps/v8/src/compiler/pipeline.h +++ b/deps/v8/src/compiler/pipeline.h @@ -78,8 +78,7 @@ class Pipeline : public AllStatic { static MaybeHandle GenerateCodeForCodeStub( Isolate* isolate, CallDescriptor* call_descriptor, Graph* graph, JSGraph* jsgraph, SourcePositionTable* source_positions, CodeKind kind, - const char* debug_name, Builtin builtin, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, + const char* debug_name, Builtin builtin, const AssemblerOptions& options, const ProfileDataFromFile* profile_data); // --------------------------------------------------------------------------- diff --git a/deps/v8/src/compiler/property-access-builder.cc b/deps/v8/src/compiler/property-access-builder.cc index a64521d6f66dcb..9abaf45b261e12 100644 --- a/deps/v8/src/compiler/property-access-builder.cc +++ b/deps/v8/src/compiler/property-access-builder.cc @@ -235,7 +235,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField(NameRef const& name, Type::Any(), MachineType::AnyTagged(), kPointerWriteBarrier, - LoadSensitivity::kCritical, field_access.const_field_info}; storage = *effect = graph()->NewNode( simplified()->LoadField(storage_access), storage, *effect, *control); @@ -263,7 +262,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField(NameRef const& name, Type::OtherInternal(), MachineType::TaggedPointer(), kPointerWriteBarrier, - LoadSensitivity::kCritical, field_access.const_field_info}; storage = *effect = graph()->NewNode( simplified()->LoadField(storage_access), storage, *effect, *control); @@ -291,7 +289,6 @@ Node* PropertyAccessBuilder::BuildMinimorphicLoadDataField( access_info.field_type(), MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kCritical, ConstFieldInfo::None()}; return BuildLoadDataField(name, lookup_start_object, field_access, access_info.is_inobject(), effect, control); @@ -319,7 +316,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField( access_info.field_type(), MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kCritical, access_info.GetConstFieldInfo()}; if (field_representation == MachineRepresentation::kTaggedPointer || field_representation == MachineRepresentation::kCompressedPointer) { diff --git a/deps/v8/src/compiler/raw-machine-assembler.cc b/deps/v8/src/compiler/raw-machine-assembler.cc index 7ed217d4e36dd9..383d63dd69fdc5 100644 --- a/deps/v8/src/compiler/raw-machine-assembler.cc +++ b/deps/v8/src/compiler/raw-machine-assembler.cc @@ -18,8 +18,7 @@ namespace compiler { RawMachineAssembler::RawMachineAssembler( Isolate* isolate, Graph* graph, CallDescriptor* call_descriptor, MachineRepresentation word, MachineOperatorBuilder::Flags flags, - MachineOperatorBuilder::AlignmentRequirements alignment_requirements, - PoisoningMitigationLevel poisoning_level) + MachineOperatorBuilder::AlignmentRequirements alignment_requirements) : isolate_(isolate), graph_(graph), schedule_(zone()->New(zone())), @@ -30,8 +29,7 @@ RawMachineAssembler::RawMachineAssembler( call_descriptor_(call_descriptor), target_parameter_(nullptr), parameters_(parameter_count(), zone()), - current_block_(schedule()->start()), - poisoning_level_(poisoning_level) { + current_block_(schedule()->start()) { int param_count = static_cast(parameter_count()); // Add an extra input for the JSFunction parameter to the start node. graph->SetStart(graph->NewNode(common_.Start(param_count + 1))); @@ -472,7 +470,7 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { return; case IrOpcode::kIfTrue: { Node* branch = NodeProperties::GetControlInput(control_node); - BranchHint hint = BranchOperatorInfoOf(branch->op()).hint; + BranchHint hint = BranchHintOf(branch->op()); if (hint == BranchHint::kTrue) { // The other possibility is also deferred, so the responsible branch // has to be before. @@ -485,7 +483,7 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { } case IrOpcode::kIfFalse: { Node* branch = NodeProperties::GetControlInput(control_node); - BranchHint hint = BranchOperatorInfoOf(branch->op()).hint; + BranchHint hint = BranchHintOf(branch->op()); if (hint == BranchHint::kFalse) { // The other possibility is also deferred, so the responsible branch // has to be before. @@ -516,11 +514,10 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { } } - BranchOperatorInfo info = BranchOperatorInfoOf(responsible_branch->op()); - if (info.hint == new_branch_hint) return; - NodeProperties::ChangeOp( - responsible_branch, - common()->Branch(new_branch_hint, info.is_safety_check)); + BranchHint hint = BranchHintOf(responsible_branch->op()); + if (hint == new_branch_hint) return; + NodeProperties::ChangeOp(responsible_branch, + common()->Branch(new_branch_hint)); } Node* RawMachineAssembler::TargetParameter() { @@ -544,9 +541,7 @@ void RawMachineAssembler::Goto(RawMachineLabel* label) { void RawMachineAssembler::Branch(Node* condition, RawMachineLabel* true_val, RawMachineLabel* false_val) { DCHECK(current_block_ != schedule()->end()); - Node* branch = MakeNode( - common()->Branch(BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck), 1, - &condition); + Node* branch = MakeNode(common()->Branch(BranchHint::kNone), 1, &condition); BasicBlock* true_block = schedule()->NewBasicBlock(); BasicBlock* false_block = schedule()->NewBasicBlock(); schedule()->AddBranch(CurrentBlock(), branch, true_block, false_block); diff --git a/deps/v8/src/compiler/raw-machine-assembler.h b/deps/v8/src/compiler/raw-machine-assembler.h index a811fa7bf9c9bb..bff7bda0a37a87 100644 --- a/deps/v8/src/compiler/raw-machine-assembler.h +++ b/deps/v8/src/compiler/raw-machine-assembler.h @@ -52,9 +52,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { MachineOperatorBuilder::Flag::kNoFlags, MachineOperatorBuilder::AlignmentRequirements alignment_requirements = MachineOperatorBuilder::AlignmentRequirements:: - FullUnalignedAccessSupport(), - PoisoningMitigationLevel poisoning_level = - PoisoningMitigationLevel::kPoisonCriticalOnly); + FullUnalignedAccessSupport()); ~RawMachineAssembler() = default; RawMachineAssembler(const RawMachineAssembler&) = delete; @@ -67,7 +65,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { CommonOperatorBuilder* common() { return &common_; } SimplifiedOperatorBuilder* simplified() { return &simplified_; } CallDescriptor* call_descriptor() const { return call_descriptor_; } - PoisoningMitigationLevel poisoning_level() const { return poisoning_level_; } // Only used for tests: Finalizes the schedule and exports it to be used for // code generation. Note that this RawMachineAssembler becomes invalid after @@ -132,19 +129,11 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { } // Memory Operations. - Node* Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return Load(type, base, IntPtrConstant(0), needs_poisoning); + Node* Load(MachineType type, Node* base) { + return Load(type, base, IntPtrConstant(0)); } - Node* Load(MachineType type, Node* base, Node* index, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + Node* Load(MachineType type, Node* base, Node* index) { const Operator* op = machine()->Load(type); - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level_); - if (needs_poisoning == LoadSensitivity::kCritical && - poisoning_level_ == PoisoningMitigationLevel::kPoisonCriticalOnly) { - op = machine()->PoisonedLoad(type); - } - Node* load = AddNode(op, base, index); return load; } @@ -174,10 +163,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { bool IsMapOffsetConstantMinusTag(int offset) { return offset == HeapObject::kMapOffset - kHeapObjectTag; } - Node* LoadFromObject( - MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - CHECK_EQ(needs_poisoning, LoadSensitivity::kSafe); + Node* LoadFromObject(MachineType type, Node* base, Node* offset) { DCHECK_IMPLIES(V8_MAP_PACKING_BOOL && IsMapOffsetConstantMinusTag(offset), type == MachineType::MapInHeader()); ObjectAccess access = {type, WriteBarrierKind::kNoWriteBarrier}; @@ -959,20 +945,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { return HeapConstant(isolate()->factory()->InternalizeUtf8String(string)); } - Node* TaggedPoisonOnSpeculation(Node* value) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - return AddNode(machine()->TaggedPoisonOnSpeculation(), value); - } - return value; - } - - Node* WordPoisonOnSpeculation(Node* value) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - return AddNode(machine()->WordPoisonOnSpeculation(), value); - } - return value; - } - // Call a given call descriptor and the given arguments. // The call target is passed as part of the {inputs} array. Node* CallN(CallDescriptor* call_descriptor, int input_count, @@ -1136,6 +1108,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { CommonOperatorBuilder* common); Isolate* isolate_; + Graph* graph_; Schedule* schedule_; SourcePositionTable* source_positions_; @@ -1146,7 +1119,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { Node* target_parameter_; NodeVector parameters_; BasicBlock* current_block_; - PoisoningMitigationLevel poisoning_level_; }; class V8_EXPORT_PRIVATE RawMachineLabel final { diff --git a/deps/v8/src/compiler/simplified-lowering.cc b/deps/v8/src/compiler/simplified-lowering.cc index 1c07a23dded32a..0a8332b775720d 100644 --- a/deps/v8/src/compiler/simplified-lowering.cc +++ b/deps/v8/src/compiler/simplified-lowering.cc @@ -1735,11 +1735,9 @@ class RepresentationSelector { VisitBinop(node, UseInfo::TruncatingWord32(), MachineRepresentation::kWord32); if (lower()) { - if (lowering->poisoning_level_ == - PoisoningMitigationLevel::kDontPoison && - (index_type.IsNone() || length_type.IsNone() || - (index_type.Min() >= 0.0 && - index_type.Max() < length_type.Min()))) { + if (index_type.IsNone() || length_type.IsNone() || + (index_type.Min() >= 0.0 && + index_type.Max() < length_type.Min())) { // The bounds check is redundant if we already know that // the index is within the bounds of [0.0, length[. // TODO(neis): Move this into TypedOptimization? @@ -3181,11 +3179,6 @@ class RepresentationSelector { } case IrOpcode::kCheckBounds: return VisitCheckBounds(node, lowering); - case IrOpcode::kPoisonIndex: { - VisitUnop(node, UseInfo::TruncatingWord32(), - MachineRepresentation::kWord32); - return; - } case IrOpcode::kCheckHeapObject: { if (InputCannotBe(node, Type::SignedSmall())) { VisitUnop(node, UseInfo::AnyTagged(), @@ -4225,18 +4218,19 @@ void RepresentationSelector::InsertUnreachableIfNecessary(Node* node) { } } -SimplifiedLowering::SimplifiedLowering( - JSGraph* jsgraph, JSHeapBroker* broker, Zone* zone, - SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poisoning_level, TickCounter* tick_counter, - Linkage* linkage, ObserveNodeManager* observe_node_manager) +SimplifiedLowering::SimplifiedLowering(JSGraph* jsgraph, JSHeapBroker* broker, + Zone* zone, + SourcePositionTable* source_positions, + NodeOriginTable* node_origins, + TickCounter* tick_counter, + Linkage* linkage, + ObserveNodeManager* observe_node_manager) : jsgraph_(jsgraph), broker_(broker), zone_(zone), type_cache_(TypeCache::Get()), source_positions_(source_positions), node_origins_(node_origins), - poisoning_level_(poisoning_level), tick_counter_(tick_counter), linkage_(linkage), observe_node_manager_(observe_node_manager) {} diff --git a/deps/v8/src/compiler/simplified-lowering.h b/deps/v8/src/compiler/simplified-lowering.h index 54017b34f7a936..f60bc1a7e3ef89 100644 --- a/deps/v8/src/compiler/simplified-lowering.h +++ b/deps/v8/src/compiler/simplified-lowering.h @@ -31,7 +31,6 @@ class V8_EXPORT_PRIVATE SimplifiedLowering final { SimplifiedLowering(JSGraph* jsgraph, JSHeapBroker* broker, Zone* zone, SourcePositionTable* source_position, NodeOriginTable* node_origins, - PoisoningMitigationLevel poisoning_level, TickCounter* tick_counter, Linkage* linkage, ObserveNodeManager* observe_node_manager = nullptr); ~SimplifiedLowering() = default; @@ -83,8 +82,6 @@ class V8_EXPORT_PRIVATE SimplifiedLowering final { SourcePositionTable* source_positions_; NodeOriginTable* node_origins_; - PoisoningMitigationLevel poisoning_level_; - TickCounter* const tick_counter_; Linkage* const linkage_; diff --git a/deps/v8/src/compiler/simplified-operator.cc b/deps/v8/src/compiler/simplified-operator.cc index 9c4f8f083ac3a4..9461194b559480 100644 --- a/deps/v8/src/compiler/simplified-operator.cc +++ b/deps/v8/src/compiler/simplified-operator.cc @@ -73,22 +73,6 @@ size_t hash_value(FieldAccess const& access) { access.is_store_in_literal); } -size_t hash_value(LoadSensitivity load_sensitivity) { - return static_cast(load_sensitivity); -} - -std::ostream& operator<<(std::ostream& os, LoadSensitivity load_sensitivity) { - switch (load_sensitivity) { - case LoadSensitivity::kCritical: - return os << "Critical"; - case LoadSensitivity::kSafe: - return os << "Safe"; - case LoadSensitivity::kUnsafe: - return os << "Unsafe"; - } - UNREACHABLE(); -} - std::ostream& operator<<(std::ostream& os, FieldAccess const& access) { os << "[" << access.base_is_tagged << ", " << access.offset << ", "; #ifdef OBJECT_PRINT @@ -107,9 +91,6 @@ std::ostream& operator<<(std::ostream& os, FieldAccess const& access) { if (access.is_store_in_literal) { os << " (store in literal)"; } - if (FLAG_untrusted_code_mitigations) { - os << ", " << access.load_sensitivity; - } os << "]"; return os; } @@ -145,9 +126,6 @@ std::ostream& operator<<(std::ostream& os, ElementAccess const& access) { os << access.base_is_tagged << ", " << access.header_size << ", " << access.type << ", " << access.machine_type << ", " << access.write_barrier_kind; - if (FLAG_untrusted_code_mitigations) { - os << ", " << access.load_sensitivity; - } return os; } @@ -719,129 +697,128 @@ bool operator==(CheckMinusZeroParameters const& lhs, return lhs.mode() == rhs.mode() && lhs.feedback() == rhs.feedback(); } -#define PURE_OP_LIST(V) \ - V(BooleanNot, Operator::kNoProperties, 1, 0) \ - V(NumberEqual, Operator::kCommutative, 2, 0) \ - V(NumberLessThan, Operator::kNoProperties, 2, 0) \ - V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \ - V(NumberAdd, Operator::kCommutative, 2, 0) \ - V(NumberSubtract, Operator::kNoProperties, 2, 0) \ - V(NumberMultiply, Operator::kCommutative, 2, 0) \ - V(NumberDivide, Operator::kNoProperties, 2, 0) \ - V(NumberModulus, Operator::kNoProperties, 2, 0) \ - V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \ - V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \ - V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \ - V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \ - V(NumberShiftRight, Operator::kNoProperties, 2, 0) \ - V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \ - V(NumberImul, Operator::kCommutative, 2, 0) \ - V(NumberAbs, Operator::kNoProperties, 1, 0) \ - V(NumberClz32, Operator::kNoProperties, 1, 0) \ - V(NumberCeil, Operator::kNoProperties, 1, 0) \ - V(NumberFloor, Operator::kNoProperties, 1, 0) \ - V(NumberFround, Operator::kNoProperties, 1, 0) \ - V(NumberAcos, Operator::kNoProperties, 1, 0) \ - V(NumberAcosh, Operator::kNoProperties, 1, 0) \ - V(NumberAsin, Operator::kNoProperties, 1, 0) \ - V(NumberAsinh, Operator::kNoProperties, 1, 0) \ - V(NumberAtan, Operator::kNoProperties, 1, 0) \ - V(NumberAtan2, Operator::kNoProperties, 2, 0) \ - V(NumberAtanh, Operator::kNoProperties, 1, 0) \ - V(NumberCbrt, Operator::kNoProperties, 1, 0) \ - V(NumberCos, Operator::kNoProperties, 1, 0) \ - V(NumberCosh, Operator::kNoProperties, 1, 0) \ - V(NumberExp, Operator::kNoProperties, 1, 0) \ - V(NumberExpm1, Operator::kNoProperties, 1, 0) \ - V(NumberLog, Operator::kNoProperties, 1, 0) \ - V(NumberLog1p, Operator::kNoProperties, 1, 0) \ - V(NumberLog10, Operator::kNoProperties, 1, 0) \ - V(NumberLog2, Operator::kNoProperties, 1, 0) \ - V(NumberMax, Operator::kNoProperties, 2, 0) \ - V(NumberMin, Operator::kNoProperties, 2, 0) \ - V(NumberPow, Operator::kNoProperties, 2, 0) \ - V(NumberRound, Operator::kNoProperties, 1, 0) \ - V(NumberSign, Operator::kNoProperties, 1, 0) \ - V(NumberSin, Operator::kNoProperties, 1, 0) \ - V(NumberSinh, Operator::kNoProperties, 1, 0) \ - V(NumberSqrt, Operator::kNoProperties, 1, 0) \ - V(NumberTan, Operator::kNoProperties, 1, 0) \ - V(NumberTanh, Operator::kNoProperties, 1, 0) \ - V(NumberTrunc, Operator::kNoProperties, 1, 0) \ - V(NumberToBoolean, Operator::kNoProperties, 1, 0) \ - V(NumberToInt32, Operator::kNoProperties, 1, 0) \ - V(NumberToString, Operator::kNoProperties, 1, 0) \ - V(NumberToUint32, Operator::kNoProperties, 1, 0) \ - V(NumberToUint8Clamped, Operator::kNoProperties, 1, 0) \ - V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \ - V(BigIntNegate, Operator::kNoProperties, 1, 0) \ - V(StringConcat, Operator::kNoProperties, 3, 0) \ - V(StringToNumber, Operator::kNoProperties, 1, 0) \ - V(StringFromSingleCharCode, Operator::kNoProperties, 1, 0) \ - V(StringFromSingleCodePoint, Operator::kNoProperties, 1, 0) \ - V(StringIndexOf, Operator::kNoProperties, 3, 0) \ - V(StringLength, Operator::kNoProperties, 1, 0) \ - V(StringToLowerCaseIntl, Operator::kNoProperties, 1, 0) \ - V(StringToUpperCaseIntl, Operator::kNoProperties, 1, 0) \ - V(TypeOf, Operator::kNoProperties, 1, 1) \ - V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \ - V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \ - V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedSignedToInt64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToInt64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToTaggedSigned, Operator::kNoProperties, 1, 0) \ - V(ChangeFloat64ToTaggedPointer, Operator::kNoProperties, 1, 0) \ - V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \ - V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeInt64ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeUint64ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ - V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ - V(TruncateBigIntToUint64, Operator::kNoProperties, 1, 0) \ - V(ChangeUint64ToBigInt, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToBit, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedPointerToBit, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ - V(ObjectIsArrayBufferView, Operator::kNoProperties, 1, 0) \ - V(ObjectIsBigInt, Operator::kNoProperties, 1, 0) \ - V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsConstructor, Operator::kNoProperties, 1, 0) \ - V(ObjectIsDetectableCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsMinusZero, Operator::kNoProperties, 1, 0) \ - V(NumberIsMinusZero, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNaN, Operator::kNoProperties, 1, 0) \ - V(NumberIsNaN, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNonCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ - V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ - V(ObjectIsString, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSymbol, Operator::kNoProperties, 1, 0) \ - V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ - V(NumberIsFloat64Hole, Operator::kNoProperties, 1, 0) \ - V(NumberIsFinite, Operator::kNoProperties, 1, 0) \ - V(ObjectIsFiniteNumber, Operator::kNoProperties, 1, 0) \ - V(NumberIsInteger, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSafeInteger, Operator::kNoProperties, 1, 0) \ - V(NumberIsSafeInteger, Operator::kNoProperties, 1, 0) \ - V(ObjectIsInteger, Operator::kNoProperties, 1, 0) \ - V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \ - V(SameValue, Operator::kCommutative, 2, 0) \ - V(SameValueNumbersOnly, Operator::kCommutative, 2, 0) \ - V(NumberSameValue, Operator::kCommutative, 2, 0) \ - V(ReferenceEqual, Operator::kCommutative, 2, 0) \ - V(StringEqual, Operator::kCommutative, 2, 0) \ - V(StringLessThan, Operator::kNoProperties, 2, 0) \ - V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) \ - V(ToBoolean, Operator::kNoProperties, 1, 0) \ - V(NewConsString, Operator::kNoProperties, 3, 0) \ - V(PoisonIndex, Operator::kNoProperties, 1, 0) +#define PURE_OP_LIST(V) \ + V(BooleanNot, Operator::kNoProperties, 1, 0) \ + V(NumberEqual, Operator::kCommutative, 2, 0) \ + V(NumberLessThan, Operator::kNoProperties, 2, 0) \ + V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \ + V(NumberAdd, Operator::kCommutative, 2, 0) \ + V(NumberSubtract, Operator::kNoProperties, 2, 0) \ + V(NumberMultiply, Operator::kCommutative, 2, 0) \ + V(NumberDivide, Operator::kNoProperties, 2, 0) \ + V(NumberModulus, Operator::kNoProperties, 2, 0) \ + V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \ + V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \ + V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \ + V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \ + V(NumberShiftRight, Operator::kNoProperties, 2, 0) \ + V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \ + V(NumberImul, Operator::kCommutative, 2, 0) \ + V(NumberAbs, Operator::kNoProperties, 1, 0) \ + V(NumberClz32, Operator::kNoProperties, 1, 0) \ + V(NumberCeil, Operator::kNoProperties, 1, 0) \ + V(NumberFloor, Operator::kNoProperties, 1, 0) \ + V(NumberFround, Operator::kNoProperties, 1, 0) \ + V(NumberAcos, Operator::kNoProperties, 1, 0) \ + V(NumberAcosh, Operator::kNoProperties, 1, 0) \ + V(NumberAsin, Operator::kNoProperties, 1, 0) \ + V(NumberAsinh, Operator::kNoProperties, 1, 0) \ + V(NumberAtan, Operator::kNoProperties, 1, 0) \ + V(NumberAtan2, Operator::kNoProperties, 2, 0) \ + V(NumberAtanh, Operator::kNoProperties, 1, 0) \ + V(NumberCbrt, Operator::kNoProperties, 1, 0) \ + V(NumberCos, Operator::kNoProperties, 1, 0) \ + V(NumberCosh, Operator::kNoProperties, 1, 0) \ + V(NumberExp, Operator::kNoProperties, 1, 0) \ + V(NumberExpm1, Operator::kNoProperties, 1, 0) \ + V(NumberLog, Operator::kNoProperties, 1, 0) \ + V(NumberLog1p, Operator::kNoProperties, 1, 0) \ + V(NumberLog10, Operator::kNoProperties, 1, 0) \ + V(NumberLog2, Operator::kNoProperties, 1, 0) \ + V(NumberMax, Operator::kNoProperties, 2, 0) \ + V(NumberMin, Operator::kNoProperties, 2, 0) \ + V(NumberPow, Operator::kNoProperties, 2, 0) \ + V(NumberRound, Operator::kNoProperties, 1, 0) \ + V(NumberSign, Operator::kNoProperties, 1, 0) \ + V(NumberSin, Operator::kNoProperties, 1, 0) \ + V(NumberSinh, Operator::kNoProperties, 1, 0) \ + V(NumberSqrt, Operator::kNoProperties, 1, 0) \ + V(NumberTan, Operator::kNoProperties, 1, 0) \ + V(NumberTanh, Operator::kNoProperties, 1, 0) \ + V(NumberTrunc, Operator::kNoProperties, 1, 0) \ + V(NumberToBoolean, Operator::kNoProperties, 1, 0) \ + V(NumberToInt32, Operator::kNoProperties, 1, 0) \ + V(NumberToString, Operator::kNoProperties, 1, 0) \ + V(NumberToUint32, Operator::kNoProperties, 1, 0) \ + V(NumberToUint8Clamped, Operator::kNoProperties, 1, 0) \ + V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \ + V(BigIntNegate, Operator::kNoProperties, 1, 0) \ + V(StringConcat, Operator::kNoProperties, 3, 0) \ + V(StringToNumber, Operator::kNoProperties, 1, 0) \ + V(StringFromSingleCharCode, Operator::kNoProperties, 1, 0) \ + V(StringFromSingleCodePoint, Operator::kNoProperties, 1, 0) \ + V(StringIndexOf, Operator::kNoProperties, 3, 0) \ + V(StringLength, Operator::kNoProperties, 1, 0) \ + V(StringToLowerCaseIntl, Operator::kNoProperties, 1, 0) \ + V(StringToUpperCaseIntl, Operator::kNoProperties, 1, 0) \ + V(TypeOf, Operator::kNoProperties, 1, 1) \ + V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \ + V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \ + V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedSignedToInt64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToInt64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToTaggedSigned, Operator::kNoProperties, 1, 0) \ + V(ChangeFloat64ToTaggedPointer, Operator::kNoProperties, 1, 0) \ + V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \ + V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeInt64ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeUint64ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ + V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ + V(TruncateBigIntToUint64, Operator::kNoProperties, 1, 0) \ + V(ChangeUint64ToBigInt, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToBit, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedPointerToBit, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ + V(ObjectIsArrayBufferView, Operator::kNoProperties, 1, 0) \ + V(ObjectIsBigInt, Operator::kNoProperties, 1, 0) \ + V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsConstructor, Operator::kNoProperties, 1, 0) \ + V(ObjectIsDetectableCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsMinusZero, Operator::kNoProperties, 1, 0) \ + V(NumberIsMinusZero, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNaN, Operator::kNoProperties, 1, 0) \ + V(NumberIsNaN, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNonCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ + V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ + V(ObjectIsString, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSymbol, Operator::kNoProperties, 1, 0) \ + V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ + V(NumberIsFloat64Hole, Operator::kNoProperties, 1, 0) \ + V(NumberIsFinite, Operator::kNoProperties, 1, 0) \ + V(ObjectIsFiniteNumber, Operator::kNoProperties, 1, 0) \ + V(NumberIsInteger, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSafeInteger, Operator::kNoProperties, 1, 0) \ + V(NumberIsSafeInteger, Operator::kNoProperties, 1, 0) \ + V(ObjectIsInteger, Operator::kNoProperties, 1, 0) \ + V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \ + V(SameValue, Operator::kCommutative, 2, 0) \ + V(SameValueNumbersOnly, Operator::kCommutative, 2, 0) \ + V(NumberSameValue, Operator::kCommutative, 2, 0) \ + V(ReferenceEqual, Operator::kCommutative, 2, 0) \ + V(StringEqual, Operator::kCommutative, 2, 0) \ + V(StringLessThan, Operator::kNoProperties, 2, 0) \ + V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) \ + V(ToBoolean, Operator::kNoProperties, 1, 0) \ + V(NewConsString, Operator::kNoProperties, 3, 0) #define EFFECT_DEPENDENT_OP_LIST(V) \ V(BigIntAdd, Operator::kNoProperties, 2, 1) \ diff --git a/deps/v8/src/compiler/simplified-operator.h b/deps/v8/src/compiler/simplified-operator.h index d7a5901448624b..0602b795a93477 100644 --- a/deps/v8/src/compiler/simplified-operator.h +++ b/deps/v8/src/compiler/simplified-operator.h @@ -46,10 +46,6 @@ size_t hash_value(BaseTaggedness); std::ostream& operator<<(std::ostream&, BaseTaggedness); -size_t hash_value(LoadSensitivity); - -std::ostream& operator<<(std::ostream&, LoadSensitivity); - struct ConstFieldInfo { // the map that introduced the const field, if any. An access is considered // mutable iff the handle is null. @@ -82,7 +78,6 @@ struct FieldAccess { Type type; // type of the field. MachineType machine_type; // machine type of the field. WriteBarrierKind write_barrier_kind; // write barrier hint. - LoadSensitivity load_sensitivity; // load safety for poisoning. ConstFieldInfo const_field_info; // the constness of this access, and the // field owner map, if the access is const bool is_store_in_literal; // originates from a kStoreInLiteral access @@ -96,14 +91,12 @@ struct FieldAccess { type(Type::None()), machine_type(MachineType::None()), write_barrier_kind(kFullWriteBarrier), - load_sensitivity(LoadSensitivity::kUnsafe), const_field_info(ConstFieldInfo::None()), is_store_in_literal(false) {} FieldAccess(BaseTaggedness base_is_tagged, int offset, MaybeHandle name, MaybeHandle map, Type type, MachineType machine_type, WriteBarrierKind write_barrier_kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe, ConstFieldInfo const_field_info = ConstFieldInfo::None(), bool is_store_in_literal = false #ifdef V8_HEAP_SANDBOX @@ -118,7 +111,6 @@ struct FieldAccess { type(type), machine_type(machine_type), write_barrier_kind(write_barrier_kind), - load_sensitivity(load_sensitivity), const_field_info(const_field_info), is_store_in_literal(is_store_in_literal) #ifdef V8_HEAP_SANDBOX @@ -162,25 +154,21 @@ struct ElementAccess { Type type; // type of the element. MachineType machine_type; // machine type of the element. WriteBarrierKind write_barrier_kind; // write barrier hint. - LoadSensitivity load_sensitivity; // load safety for poisoning. ElementAccess() : base_is_tagged(kTaggedBase), header_size(0), type(Type::None()), machine_type(MachineType::None()), - write_barrier_kind(kFullWriteBarrier), - load_sensitivity(LoadSensitivity::kUnsafe) {} + write_barrier_kind(kFullWriteBarrier) {} ElementAccess(BaseTaggedness base_is_tagged, int header_size, Type type, - MachineType machine_type, WriteBarrierKind write_barrier_kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe) + MachineType machine_type, WriteBarrierKind write_barrier_kind) : base_is_tagged(base_is_tagged), header_size(header_size), type(type), machine_type(machine_type), - write_barrier_kind(write_barrier_kind), - load_sensitivity(load_sensitivity) {} + write_barrier_kind(write_barrier_kind) {} int tag() const { return base_is_tagged == kTaggedBase ? kHeapObjectTag : 0; } }; @@ -926,7 +914,6 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final const Operator* TruncateTaggedToBit(); const Operator* TruncateTaggedPointerToBit(); - const Operator* PoisonIndex(); const Operator* CompareMaps(ZoneHandleSet); const Operator* MapGuard(ZoneHandleSet maps); diff --git a/deps/v8/src/compiler/typer.cc b/deps/v8/src/compiler/typer.cc index 529f1cc7bba2eb..3aaf5d2c8d440b 100644 --- a/deps/v8/src/compiler/typer.cc +++ b/deps/v8/src/compiler/typer.cc @@ -2065,10 +2065,6 @@ Type Typer::Visitor::TypeStringLength(Node* node) { Type Typer::Visitor::TypeStringSubstring(Node* node) { return Type::String(); } -Type Typer::Visitor::TypePoisonIndex(Node* node) { - return Type::Union(Operand(node, 0), typer_->cache_->kSingletonZero, zone()); -} - Type Typer::Visitor::TypeCheckBounds(Node* node) { return typer_->operation_typer_.CheckBounds(Operand(node, 0), Operand(node, 1)); diff --git a/deps/v8/src/compiler/verifier.cc b/deps/v8/src/compiler/verifier.cc index f33edaa6c0d4aa..a0f2aa569dc985 100644 --- a/deps/v8/src/compiler/verifier.cc +++ b/deps/v8/src/compiler/verifier.cc @@ -1422,10 +1422,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { CheckValueInputIs(node, 1, TypeCache::Get()->kPositiveSafeInteger); CheckTypeIs(node, TypeCache::Get()->kPositiveSafeInteger); break; - case IrOpcode::kPoisonIndex: - CheckValueInputIs(node, 0, Type::Unsigned32()); - CheckTypeIs(node, Type::Unsigned32()); - break; case IrOpcode::kCheckClosure: // Any -> Function CheckValueInputIs(node, 0, Type::Any()); @@ -1641,7 +1637,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { // ----------------------- case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kProtectedStore: case IrOpcode::kStore: @@ -1817,9 +1812,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { case IrOpcode::kWord32PairShl: case IrOpcode::kWord32PairShr: case IrOpcode::kWord32PairSar: - case IrOpcode::kTaggedPoisonOnSpeculation: - case IrOpcode::kWord32PoisonOnSpeculation: - case IrOpcode::kWord64PoisonOnSpeculation: case IrOpcode::kLoadStackCheckOffset: case IrOpcode::kLoadFramePointer: case IrOpcode::kLoadParentFramePointer: diff --git a/deps/v8/src/compiler/wasm-compiler.cc b/deps/v8/src/compiler/wasm-compiler.cc index f91c21fd1d4cb0..f2fe3c5e619a64 100644 --- a/deps/v8/src/compiler/wasm-compiler.cc +++ b/deps/v8/src/compiler/wasm-compiler.cc @@ -472,7 +472,6 @@ WasmGraphBuilder::WasmGraphBuilder( mcgraph_(mcgraph), env_(env), has_simd_(ContainsSimd(sig)), - untrusted_code_mitigations_(FLAG_untrusted_code_mitigations), sig_(sig), source_position_table_(source_position_table), isolate_(isolate) { @@ -2901,13 +2900,13 @@ Node* WasmGraphBuilder::BuildCallNode(const wasm::FunctionSig* sig, return call; } -Node* WasmGraphBuilder::BuildWasmCall( - const wasm::FunctionSig* sig, base::Vector args, - base::Vector rets, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline, Node* frame_state) { - CallDescriptor* call_descriptor = - GetWasmCallDescriptor(mcgraph()->zone(), sig, use_retpoline, - kWasmFunction, frame_state != nullptr); +Node* WasmGraphBuilder::BuildWasmCall(const wasm::FunctionSig* sig, + base::Vector args, + base::Vector rets, + wasm::WasmCodePosition position, + Node* instance_node, Node* frame_state) { + CallDescriptor* call_descriptor = GetWasmCallDescriptor( + mcgraph()->zone(), sig, kWasmFunction, frame_state != nullptr); const Operator* op = mcgraph()->common()->Call(call_descriptor); Node* call = BuildCallNode(sig, args, position, instance_node, op, frame_state); @@ -2935,10 +2934,9 @@ Node* WasmGraphBuilder::BuildWasmCall( Node* WasmGraphBuilder::BuildWasmReturnCall(const wasm::FunctionSig* sig, base::Vector args, wasm::WasmCodePosition position, - Node* instance_node, - UseRetpoline use_retpoline) { + Node* instance_node) { CallDescriptor* call_descriptor = - GetWasmCallDescriptor(mcgraph()->zone(), sig, use_retpoline); + GetWasmCallDescriptor(mcgraph()->zone(), sig); const Operator* op = mcgraph()->common()->TailCall(call_descriptor); Node* call = BuildCallNode(sig, args, position, instance_node, op); @@ -2982,15 +2980,13 @@ Node* WasmGraphBuilder::BuildImportCall(const wasm::FunctionSig* sig, Node* target_node = gasm_->LoadFromObject( MachineType::Pointer(), imported_targets, func_index_times_pointersize); args[0] = target_node; - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; switch (continuation) { case kCallContinues: - return BuildWasmCall(sig, args, rets, position, ref_node, use_retpoline); + return BuildWasmCall(sig, args, rets, position, ref_node); case kReturnCall: DCHECK(rets.empty()); - return BuildWasmReturnCall(sig, args, position, ref_node, use_retpoline); + return BuildWasmReturnCall(sig, args, position, ref_node); } } @@ -3010,7 +3006,7 @@ Node* WasmGraphBuilder::CallDirect(uint32_t index, base::Vector args, Address code = static_cast
(index); args[0] = mcgraph()->RelocatableIntPtrConstant(code, RelocInfo::WASM_CALL); - return BuildWasmCall(sig, args, rets, position, nullptr, kNoRetpoline); + return BuildWasmCall(sig, args, rets, position, nullptr); } Node* WasmGraphBuilder::CallIndirect(uint32_t table_index, uint32_t sig_index, @@ -3095,16 +3091,6 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index, Node* in_bounds = gasm_->Uint32LessThan(key, ift_size); TrapIfFalse(wasm::kTrapTableOutOfBounds, in_bounds, position); - // Mask the key to prevent SSCA. - if (untrusted_code_mitigations_) { - // mask = ((key - size) & ~key) >> 31 - Node* neg_key = gasm_->Word32Xor(key, Int32Constant(-1)); - Node* masked_diff = - gasm_->Word32And(gasm_->Int32Sub(key, ift_size), neg_key); - Node* mask = gasm_->Word32Sar(masked_diff, Int32Constant(31)); - key = gasm_->Word32And(key, mask); - } - const wasm::ValueType table_type = env_->module->tables[table_index].type; // Check that the table entry is not null and that the type of the function is // **identical with** the function type declared at the call site (no @@ -3140,16 +3126,12 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index, intptr_scaled_key); args[0] = target; - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; switch (continuation) { case kCallContinues: - return BuildWasmCall(sig, args, rets, position, target_instance, - use_retpoline); + return BuildWasmCall(sig, args, rets, position, target_instance); case kReturnCall: - return BuildWasmReturnCall(sig, args, position, target_instance, - use_retpoline); + return BuildWasmReturnCall(sig, args, position, target_instance); } } @@ -3244,14 +3226,9 @@ Node* WasmGraphBuilder::BuildCallRef(uint32_t sig_index, args[0] = end_label.PhiAt(0); - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; - Node* call = continuation == kCallContinues - ? BuildWasmCall(sig, args, rets, position, instance_node, - use_retpoline) - : BuildWasmReturnCall(sig, args, position, instance_node, - use_retpoline); + ? BuildWasmCall(sig, args, rets, position, instance_node) + : BuildWasmReturnCall(sig, args, position, instance_node); return call; } @@ -3287,7 +3264,7 @@ Node* WasmGraphBuilder::ReturnCall(uint32_t index, base::Vector args, Address code = static_cast
(index); args[0] = mcgraph()->RelocatableIntPtrConstant(code, RelocInfo::WASM_CALL); - return BuildWasmReturnCall(sig, args, position, nullptr, kNoRetpoline); + return BuildWasmReturnCall(sig, args, position, nullptr); } Node* WasmGraphBuilder::ReturnCallIndirect(uint32_t table_index, @@ -3416,15 +3393,6 @@ void WasmGraphBuilder::InitInstanceCache( // Load the memory size. instance_cache->mem_size = LOAD_MUTABLE_INSTANCE_FIELD(MemorySize, MachineType::UintPtr()); - - if (untrusted_code_mitigations_) { - // Load the memory mask. - instance_cache->mem_mask = - LOAD_INSTANCE_FIELD(MemoryMask, MachineType::UintPtr()); - } else { - // Explicitly set to nullptr to ensure a SEGV when we try to use it. - instance_cache->mem_mask = nullptr; - } } void WasmGraphBuilder::PrepareInstanceCacheForLoop( @@ -3435,10 +3403,6 @@ void WasmGraphBuilder::PrepareInstanceCacheForLoop( INTRODUCE_PHI(mem_start, MachineType::PointerRepresentation()); INTRODUCE_PHI(mem_size, MachineType::PointerRepresentation()); - if (untrusted_code_mitigations_) { - INTRODUCE_PHI(mem_mask, MachineType::PointerRepresentation()); - } - #undef INTRODUCE_PHI } @@ -3453,10 +3417,6 @@ void WasmGraphBuilder::NewInstanceCacheMerge(WasmInstanceCacheNodes* to, INTRODUCE_PHI(mem_start, MachineType::PointerRepresentation()); INTRODUCE_PHI(mem_size, MachineRepresentation::kWord32); - if (untrusted_code_mitigations_) { - INTRODUCE_PHI(mem_mask, MachineRepresentation::kWord32); - } - #undef INTRODUCE_PHI } @@ -3467,10 +3427,6 @@ void WasmGraphBuilder::MergeInstanceCacheInto(WasmInstanceCacheNodes* to, merge, to->mem_size, from->mem_size); to->mem_start = CreateOrMergeIntoPhi(MachineType::PointerRepresentation(), merge, to->mem_start, from->mem_start); - if (untrusted_code_mitigations_) { - to->mem_mask = CreateOrMergeIntoPhi(MachineType::PointerRepresentation(), - merge, to->mem_mask, from->mem_mask); - } } Node* WasmGraphBuilder::CreateOrMergeIntoPhi(MachineRepresentation rep, @@ -3839,13 +3795,6 @@ WasmGraphBuilder::BoundsCheckMem(uint8_t access_size, Node* index, // Introduce the actual bounds check. Node* cond = gasm_->UintLessThan(index, effective_size); TrapIfFalse(wasm::kTrapMemOutOfBounds, cond, position); - - if (untrusted_code_mitigations_) { - // In the fallthrough case, condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->WordAnd(index, mem_mask); - } return {index, kDynamicallyChecked}; } @@ -4345,13 +4294,6 @@ Node* WasmGraphBuilder::BuildAsmjsLoadMem(MachineType type, Node* index) { gasm_->UintLessThan(index, mem_size), BranchHint::kTrue); bounds_check.Chain(control()); - if (untrusted_code_mitigations_) { - // Condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->WordAnd(index, mem_mask); - } - Node* load = graph()->NewNode(mcgraph()->machine()->Load(type), mem_start, index, effect(), bounds_check.if_true); SetEffectControl(bounds_check.EffectPhi(load, effect()), bounds_check.merge); @@ -4396,13 +4338,6 @@ Node* WasmGraphBuilder::BuildAsmjsStoreMem(MachineType type, Node* index, BranchHint::kTrue); bounds_check.Chain(control()); - if (untrusted_code_mitigations_) { - // Condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->Word32And(index, mem_mask); - } - index = BuildChangeUint32ToUintPtr(index); const Operator* store_op = mcgraph()->machine()->Store(StoreRepresentation( type.representation(), WriteBarrierKind::kNoWriteBarrier)); @@ -6659,8 +6594,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { // The (cached) call target is the jump table slot for that function. args[0] = BuildLoadCallTargetFromExportedFunctionData(function_data); BuildWasmCall(sig_, base::VectorOf(args), base::VectorOf(rets), - wasm::kNoCodePosition, nullptr, kNoRetpoline, - frame_state); + wasm::kNoCodePosition, nullptr, frame_state); } } @@ -7623,8 +7557,7 @@ wasm::WasmCompilationResult CompileWasmImportCallWrapper( // Schedule and compile to machine code. CallDescriptor* incoming = - GetWasmCallDescriptor(&zone, sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmImportWrapper); + GetWasmCallDescriptor(&zone, sig, WasmCallKind::kWasmImportWrapper); if (machine->Is32()) { incoming = GetI32WasmCallDescriptor(&zone, incoming); } @@ -7665,8 +7598,7 @@ wasm::WasmCode* CompileWasmCapiCallWrapper(wasm::NativeModule* native_module, // Run the compiler pipeline to generate machine code. CallDescriptor* call_descriptor = - GetWasmCallDescriptor(&zone, sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmCapiFunction); + GetWasmCallDescriptor(&zone, sig, WasmCallKind::kWasmCapiFunction); if (mcgraph->machine()->Is32()) { call_descriptor = GetI32WasmCallDescriptor(&zone, call_descriptor); } @@ -7716,8 +7648,7 @@ MaybeHandle CompileWasmToJSWrapper(Isolate* isolate, // Generate the call descriptor. CallDescriptor* incoming = - GetWasmCallDescriptor(zone.get(), sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmImportWrapper); + GetWasmCallDescriptor(zone.get(), sig, WasmCallKind::kWasmImportWrapper); // Run the compilation job synchronously. std::unique_ptr job( @@ -7997,10 +7928,9 @@ class LinkageLocationAllocator { } // namespace // General code uses the above configuration data. -CallDescriptor* GetWasmCallDescriptor( - Zone* zone, const wasm::FunctionSig* fsig, - WasmGraphBuilder::UseRetpoline use_retpoline, WasmCallKind call_kind, - bool need_frame_state) { +CallDescriptor* GetWasmCallDescriptor(Zone* zone, const wasm::FunctionSig* fsig, + WasmCallKind call_kind, + bool need_frame_state) { // The extra here is to accomodate the instance object as first parameter // and, when specified, the additional callable. bool extra_callable_param = @@ -8078,10 +8008,9 @@ CallDescriptor* GetWasmCallDescriptor( descriptor_kind = CallDescriptor::kCallWasmCapiFunction; } - CallDescriptor::Flags flags = - use_retpoline ? CallDescriptor::kRetpoline - : need_frame_state ? CallDescriptor::kNeedsFrameState - : CallDescriptor::kNoFlags; + CallDescriptor::Flags flags = need_frame_state + ? CallDescriptor::kNeedsFrameState + : CallDescriptor::kNoFlags; return zone->New( // -- descriptor_kind, // kind target_type, // target MachineType diff --git a/deps/v8/src/compiler/wasm-compiler.h b/deps/v8/src/compiler/wasm-compiler.h index 71e3111c8c6a4f..4cbf6baa67a23a 100644 --- a/deps/v8/src/compiler/wasm-compiler.h +++ b/deps/v8/src/compiler/wasm-compiler.h @@ -176,7 +176,6 @@ class JSWasmCallData { struct WasmInstanceCacheNodes { Node* mem_start; Node* mem_size; - Node* mem_mask; }; struct WasmLoopInfo { @@ -207,10 +206,6 @@ class WasmGraphBuilder { kNeedsBoundsCheck = true, kCanOmitBoundsCheck = false }; - enum UseRetpoline : bool { // -- - kRetpoline = true, - kNoRetpoline = false - }; enum CheckForNull : bool { // -- kWithNullCheck = true, kWithoutNullCheck = false @@ -576,12 +571,11 @@ class WasmGraphBuilder { IsReturnCall continuation); Node* BuildWasmCall(const wasm::FunctionSig* sig, base::Vector args, base::Vector rets, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline, - Node* frame_state = nullptr); + Node* instance_node, Node* frame_state = nullptr); Node* BuildWasmReturnCall(const wasm::FunctionSig* sig, base::Vector args, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline); + Node* instance_node); Node* BuildImportCall(const wasm::FunctionSig* sig, base::Vector args, base::Vector rets, wasm::WasmCodePosition position, int func_index, @@ -765,7 +759,6 @@ class WasmGraphBuilder { bool use_js_isolate_and_params() const { return isolate_ != nullptr; } bool has_simd_ = false; bool needs_stack_check_ = false; - const bool untrusted_code_mitigations_ = true; const wasm::FunctionSig* const sig_; @@ -791,8 +784,6 @@ V8_EXPORT_PRIVATE void BuildInlinedJSToWasmWrapper( V8_EXPORT_PRIVATE CallDescriptor* GetWasmCallDescriptor( Zone* zone, const wasm::FunctionSig* signature, - WasmGraphBuilder::UseRetpoline use_retpoline = - WasmGraphBuilder::kNoRetpoline, WasmCallKind kind = kWasmFunction, bool need_frame_state = false); V8_EXPORT_PRIVATE CallDescriptor* GetI32WasmCallDescriptor( diff --git a/deps/v8/src/diagnostics/objects-printer.cc b/deps/v8/src/diagnostics/objects-printer.cc index b18b9ee8ca6cfa..0d18118101d82a 100644 --- a/deps/v8/src/diagnostics/objects-printer.cc +++ b/deps/v8/src/diagnostics/objects-printer.cc @@ -1984,7 +1984,6 @@ void WasmInstanceObject::WasmInstanceObjectPrint(std::ostream& os) { } os << "\n - memory_start: " << static_cast(memory_start()); os << "\n - memory_size: " << memory_size(); - os << "\n - memory_mask: " << AsHex(memory_mask()); os << "\n - imported_function_targets: " << static_cast(imported_function_targets()); os << "\n - globals_start: " << static_cast(globals_start()); diff --git a/deps/v8/src/execution/isolate.cc b/deps/v8/src/execution/isolate.cc index 7ee5f40d3d927c..a95a485d3f379c 100644 --- a/deps/v8/src/execution/isolate.cc +++ b/deps/v8/src/execution/isolate.cc @@ -151,26 +151,6 @@ uint32_t DefaultEmbeddedBlobDataSize() { return v8_Default_embedded_blob_data_size_; } -#ifdef V8_MULTI_SNAPSHOTS -extern "C" const uint8_t* v8_Trusted_embedded_blob_code_; -extern "C" uint32_t v8_Trusted_embedded_blob_code_size_; -extern "C" const uint8_t* v8_Trusted_embedded_blob_data_; -extern "C" uint32_t v8_Trusted_embedded_blob_data_size_; - -const uint8_t* TrustedEmbeddedBlobCode() { - return v8_Trusted_embedded_blob_code_; -} -uint32_t TrustedEmbeddedBlobCodeSize() { - return v8_Trusted_embedded_blob_code_size_; -} -const uint8_t* TrustedEmbeddedBlobData() { - return v8_Trusted_embedded_blob_data_; -} -uint32_t TrustedEmbeddedBlobDataSize() { - return v8_Trusted_embedded_blob_data_size_; -} -#endif - namespace { // These variables provide access to the current embedded blob without requiring // an isolate instance. This is needed e.g. by Code::InstructionStart, which may @@ -282,9 +262,6 @@ bool Isolate::CurrentEmbeddedBlobIsBinaryEmbedded() { const uint8_t* code = current_embedded_blob_code_.load(std::memory_order::memory_order_relaxed); if (code == nullptr) return false; -#ifdef V8_MULTI_SNAPSHOTS - if (code == TrustedEmbeddedBlobCode()) return true; -#endif return code == DefaultEmbeddedBlobCode(); } @@ -3407,15 +3384,6 @@ void Isolate::InitializeDefaultEmbeddedBlob() { const uint8_t* data = DefaultEmbeddedBlobData(); uint32_t data_size = DefaultEmbeddedBlobDataSize(); -#ifdef V8_MULTI_SNAPSHOTS - if (!FLAG_untrusted_code_mitigations) { - code = TrustedEmbeddedBlobCode(); - code_size = TrustedEmbeddedBlobCodeSize(); - data = TrustedEmbeddedBlobData(); - data_size = TrustedEmbeddedBlobDataSize(); - } -#endif - if (StickyEmbeddedBlobCode() != nullptr) { base::MutexGuard guard(current_embedded_blob_refcount_mutex_.Pointer()); // Check again now that we hold the lock. diff --git a/deps/v8/src/flags/flag-definitions.h b/deps/v8/src/flags/flag-definitions.h index 5daf17566f8087..d8e1dd6b9c133a 100644 --- a/deps/v8/src/flags/flag-definitions.h +++ b/deps/v8/src/flags/flag-definitions.h @@ -882,15 +882,6 @@ DEFINE_BOOL(optimize_for_size, false, "speed") DEFINE_VALUE_IMPLICATION(optimize_for_size, max_semi_space_size, 1) -#ifdef DISABLE_UNTRUSTED_CODE_MITIGATIONS -#define V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS false -#else -#define V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS true -#endif -DEFINE_BOOL(untrusted_code_mitigations, V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS, - "Enable mitigations for executing untrusted code") -#undef V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS - // Flags for WebAssembly. #if V8_ENABLE_WEBASSEMBLY diff --git a/deps/v8/src/init/startup-data-util.cc b/deps/v8/src/init/startup-data-util.cc index d480e3dcc2b0d5..fc880631cdedcd 100644 --- a/deps/v8/src/init/startup-data-util.cc +++ b/deps/v8/src/init/startup-data-util.cc @@ -76,11 +76,6 @@ void LoadFromFile(const char* snapshot_blob) { void InitializeExternalStartupData(const char* directory_path) { #ifdef V8_USE_EXTERNAL_STARTUP_DATA const char* snapshot_name = "snapshot_blob.bin"; -#ifdef V8_MULTI_SNAPSHOTS - if (!FLAG_untrusted_code_mitigations) { - snapshot_name = "snapshot_blob_trusted.bin"; - } -#endif std::unique_ptr snapshot = base::RelativePath(directory_path, snapshot_name); LoadFromFile(snapshot.get()); diff --git a/deps/v8/src/interpreter/interpreter-assembler.cc b/deps/v8/src/interpreter/interpreter-assembler.cc index c6d6e44a2f08c9..090a77b34637a0 100644 --- a/deps/v8/src/interpreter/interpreter-assembler.cc +++ b/deps/v8/src/interpreter/interpreter-assembler.cc @@ -157,7 +157,7 @@ TNode InterpreterAssembler::GetAccumulator() { DCHECK(Bytecodes::ReadsAccumulator(bytecode_)); implicit_register_use_ = implicit_register_use_ | ImplicitRegisterUse::kReadAccumulator; - return TaggedPoisonOnSpeculation(GetAccumulatorUnchecked()); + return GetAccumulatorUnchecked(); } void InterpreterAssembler::SetAccumulator(TNode value) { @@ -204,8 +204,8 @@ TNode InterpreterAssembler::GetContextAtDepth(TNode context, TNode InterpreterAssembler::RegisterLocation( TNode reg_index) { - return Signed(WordPoisonOnSpeculation( - IntPtrAdd(GetInterpretedFramePointer(), RegisterFrameOffset(reg_index)))); + return Signed( + IntPtrAdd(GetInterpretedFramePointer(), RegisterFrameOffset(reg_index))); } TNode InterpreterAssembler::RegisterLocation(Register reg) { @@ -218,8 +218,7 @@ TNode InterpreterAssembler::RegisterFrameOffset(TNode index) { TNode InterpreterAssembler::LoadRegister(TNode reg_index) { return LoadFullTagged(GetInterpretedFramePointer(), - RegisterFrameOffset(reg_index), - LoadSensitivity::kCritical); + RegisterFrameOffset(reg_index)); } TNode InterpreterAssembler::LoadRegister(Register reg) { @@ -242,16 +241,14 @@ TNode InterpreterAssembler::LoadAndUntagRegister(Register reg) { TNode InterpreterAssembler::LoadRegisterAtOperandIndex( int operand_index) { - return LoadRegister( - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + return LoadRegister(BytecodeOperandReg(operand_index)); } std::pair, TNode> InterpreterAssembler::LoadRegisterPairAtOperandIndex(int operand_index) { DCHECK_EQ(OperandType::kRegPair, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); TNode second_reg_index = NextRegister(first_reg_index); return std::make_pair(LoadRegister(first_reg_index), LoadRegister(second_reg_index)); @@ -263,8 +260,7 @@ InterpreterAssembler::GetRegisterListAtOperandIndex(int operand_index) { Bytecodes::GetOperandType(bytecode_, operand_index))); DCHECK_EQ(OperandType::kRegCount, Bytecodes::GetOperandType(bytecode_, operand_index + 1)); - TNode base_reg = RegisterLocation( - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + TNode base_reg = RegisterLocation(BytecodeOperandReg(operand_index)); TNode reg_count = BytecodeOperandCount(operand_index + 1); return RegListNodePair(base_reg, reg_count); } @@ -272,7 +268,6 @@ InterpreterAssembler::GetRegisterListAtOperandIndex(int operand_index) { TNode InterpreterAssembler::LoadRegisterFromRegisterList( const RegListNodePair& reg_list, int index) { TNode location = RegisterLocationInRegisterList(reg_list, index); - // Location is already poisoned on speculation, so no need to poison here. return LoadFullTagged(location); } @@ -329,8 +324,7 @@ void InterpreterAssembler::StoreRegisterForShortStar(TNode value, void InterpreterAssembler::StoreRegisterAtOperandIndex(TNode value, int operand_index) { - StoreRegister(value, - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + StoreRegister(value, BytecodeOperandReg(operand_index)); } void InterpreterAssembler::StoreRegisterPairAtOperandIndex(TNode value1, @@ -338,8 +332,7 @@ void InterpreterAssembler::StoreRegisterPairAtOperandIndex(TNode value1, int operand_index) { DCHECK_EQ(OperandType::kRegOutPair, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); StoreRegister(value1, first_reg_index); TNode second_reg_index = NextRegister(first_reg_index); StoreRegister(value2, second_reg_index); @@ -350,8 +343,7 @@ void InterpreterAssembler::StoreRegisterTripleAtOperandIndex( int operand_index) { DCHECK_EQ(OperandType::kRegOutTriple, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); StoreRegister(value1, first_reg_index); TNode second_reg_index = NextRegister(first_reg_index); StoreRegister(value2, second_reg_index); @@ -370,30 +362,27 @@ TNode InterpreterAssembler::OperandOffset(int operand_index) { } TNode InterpreterAssembler::BytecodeOperandUnsignedByte( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kByte, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); TNode operand_offset = OperandOffset(operand_index); return Load(BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), operand_offset), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), operand_offset)); } TNode InterpreterAssembler::BytecodeOperandSignedByte( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kByte, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); TNode operand_offset = OperandOffset(operand_index); return Load(BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), operand_offset), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), operand_offset)); } TNode InterpreterAssembler::BytecodeOperandReadUnaligned( - int relative_offset, MachineType result_type, - LoadSensitivity needs_poisoning) { + int relative_offset, MachineType result_type) { static const int kMaxCount = 4; DCHECK(!TargetSupportsUnalignedAccess()); @@ -430,9 +419,8 @@ TNode InterpreterAssembler::BytecodeOperandReadUnaligned( TNode offset = IntPtrConstant(relative_offset + msb_offset + i * kStep); TNode array_offset = IntPtrAdd(BytecodeOffset(), offset); - bytes[i] = - UncheckedCast(Load(machine_type, BytecodeArrayTaggedPointer(), - array_offset, needs_poisoning)); + bytes[i] = UncheckedCast( + Load(machine_type, BytecodeArrayTaggedPointer(), array_offset)); } // Pack LSB to MSB. @@ -446,7 +434,7 @@ TNode InterpreterAssembler::BytecodeOperandReadUnaligned( } TNode InterpreterAssembler::BytecodeOperandUnsignedShort( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ( OperandSize::kShort, @@ -456,16 +444,15 @@ TNode InterpreterAssembler::BytecodeOperandUnsignedShort( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Uint16(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Uint16())); } } TNode InterpreterAssembler::BytecodeOperandSignedShort( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ( OperandSize::kShort, @@ -475,16 +462,15 @@ TNode InterpreterAssembler::BytecodeOperandSignedShort( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Int16(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Int16())); } } TNode InterpreterAssembler::BytecodeOperandUnsignedQuad( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kQuad, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); @@ -493,16 +479,15 @@ TNode InterpreterAssembler::BytecodeOperandUnsignedQuad( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Uint32(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Uint32())); } } TNode InterpreterAssembler::BytecodeOperandSignedQuad( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kQuad, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); @@ -511,43 +496,40 @@ TNode InterpreterAssembler::BytecodeOperandSignedQuad( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Int32(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Int32())); } } TNode InterpreterAssembler::BytecodeSignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning) { + int operand_index, OperandSize operand_size) { DCHECK(!Bytecodes::IsUnsignedOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); switch (operand_size) { case OperandSize::kByte: - return BytecodeOperandSignedByte(operand_index, needs_poisoning); + return BytecodeOperandSignedByte(operand_index); case OperandSize::kShort: - return BytecodeOperandSignedShort(operand_index, needs_poisoning); + return BytecodeOperandSignedShort(operand_index); case OperandSize::kQuad: - return BytecodeOperandSignedQuad(operand_index, needs_poisoning); + return BytecodeOperandSignedQuad(operand_index); case OperandSize::kNone: UNREACHABLE(); } } TNode InterpreterAssembler::BytecodeUnsignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning) { + int operand_index, OperandSize operand_size) { DCHECK(Bytecodes::IsUnsignedOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); switch (operand_size) { case OperandSize::kByte: - return BytecodeOperandUnsignedByte(operand_index, needs_poisoning); + return BytecodeOperandUnsignedByte(operand_index); case OperandSize::kShort: - return BytecodeOperandUnsignedShort(operand_index, needs_poisoning); + return BytecodeOperandUnsignedShort(operand_index); case OperandSize::kQuad: - return BytecodeOperandUnsignedQuad(operand_index, needs_poisoning); + return BytecodeOperandUnsignedQuad(operand_index); case OperandSize::kNone: UNREACHABLE(); } @@ -629,23 +611,22 @@ TNode InterpreterAssembler::BytecodeOperandIdxTaggedIndex( } TNode InterpreterAssembler::BytecodeOperandConstantPoolIdx( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_EQ(OperandType::kIdx, Bytecodes::GetOperandType(bytecode_, operand_index)); OperandSize operand_size = Bytecodes::GetOperandSize(bytecode_, operand_index, operand_scale()); return ChangeUint32ToWord( - BytecodeUnsignedOperand(operand_index, operand_size, needs_poisoning)); + BytecodeUnsignedOperand(operand_index, operand_size)); } -TNode InterpreterAssembler::BytecodeOperandReg( - int operand_index, LoadSensitivity needs_poisoning) { +TNode InterpreterAssembler::BytecodeOperandReg(int operand_index) { DCHECK(Bytecodes::IsRegisterOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); OperandSize operand_size = Bytecodes::GetOperandSize(bytecode_, operand_index, operand_scale()); return ChangeInt32ToIntPtr( - BytecodeSignedOperand(operand_index, operand_size, needs_poisoning)); + BytecodeSignedOperand(operand_index, operand_size)); } TNode InterpreterAssembler::BytecodeOperandRuntimeId( @@ -682,8 +663,7 @@ TNode InterpreterAssembler::LoadConstantPoolEntry(TNode index) { TNode constant_pool = CAST(LoadObjectField( BytecodeArrayTaggedPointer(), BytecodeArray::kConstantPoolOffset)); return UnsafeLoadFixedArrayElement(constant_pool, - UncheckedCast(index), 0, - LoadSensitivity::kCritical); + UncheckedCast(index), 0); } TNode InterpreterAssembler::LoadAndUntagConstantPoolEntry( @@ -693,8 +673,7 @@ TNode InterpreterAssembler::LoadAndUntagConstantPoolEntry( TNode InterpreterAssembler::LoadConstantPoolEntryAtOperandIndex( int operand_index) { - TNode index = - BytecodeOperandConstantPoolIdx(operand_index, LoadSensitivity::kSafe); + TNode index = BytecodeOperandConstantPoolIdx(operand_index); return LoadConstantPoolEntry(index); } @@ -1224,13 +1203,9 @@ void InterpreterAssembler::DispatchToBytecode( void InterpreterAssembler::DispatchToBytecodeHandlerEntry( TNode handler_entry, TNode bytecode_offset) { - // Propagate speculation poisoning. - TNode poisoned_handler_entry = - UncheckedCast(WordPoisonOnSpeculation(handler_entry)); - TailCallBytecodeDispatch(InterpreterDispatchDescriptor{}, - poisoned_handler_entry, GetAccumulatorUnchecked(), - bytecode_offset, BytecodeArrayTaggedPointer(), - DispatchTablePointer()); + TailCallBytecodeDispatch( + InterpreterDispatchDescriptor{}, handler_entry, GetAccumulatorUnchecked(), + bytecode_offset, BytecodeArrayTaggedPointer(), DispatchTablePointer()); } void InterpreterAssembler::DispatchWide(OperandScale operand_scale) { diff --git a/deps/v8/src/interpreter/interpreter-assembler.h b/deps/v8/src/interpreter/interpreter-assembler.h index bf4641200bbd12..d89c05e2d389a4 100644 --- a/deps/v8/src/interpreter/interpreter-assembler.h +++ b/deps/v8/src/interpreter/interpreter-assembler.h @@ -308,51 +308,32 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler { // The |result_type| determines the size and signedness. of the // value read. This method should only be used on architectures that // do not support unaligned memory accesses. - TNode BytecodeOperandReadUnaligned( - int relative_offset, MachineType result_type, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeOperandReadUnaligned(int relative_offset, + MachineType result_type); // Returns zero- or sign-extended to word32 value of the operand. - TNode BytecodeOperandUnsignedByte( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedByte( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandUnsignedShort( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedShort( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandUnsignedQuad( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedQuad( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeOperandUnsignedByte(int operand_index); + TNode BytecodeOperandSignedByte(int operand_index); + TNode BytecodeOperandUnsignedShort(int operand_index); + TNode BytecodeOperandSignedShort(int operand_index); + TNode BytecodeOperandUnsignedQuad(int operand_index); + TNode BytecodeOperandSignedQuad(int operand_index); // Returns zero- or sign-extended to word32 value of the operand of // given size. - TNode BytecodeSignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeUnsignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeSignedOperand(int operand_index, + OperandSize operand_size); + TNode BytecodeUnsignedOperand(int operand_index, + OperandSize operand_size); // Returns the word-size sign-extended register index for bytecode operand - // |operand_index| in the current bytecode. Value is not poisoned on - // speculation since the value loaded from the register is poisoned instead. - TNode BytecodeOperandReg( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + // |operand_index| in the current bytecode. + TNode BytecodeOperandReg(int operand_index); // Returns the word zero-extended index immediate for bytecode operand - // |operand_index| in the current bytecode for use when loading a . - TNode BytecodeOperandConstantPoolIdx( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + // |operand_index| in the current bytecode for use when loading a constant + // pool element. + TNode BytecodeOperandConstantPoolIdx(int operand_index); // Jump relative to the current bytecode by the |jump_offset|. If |backward|, // then jump backward (subtract the offset), otherwise jump forward (add the diff --git a/deps/v8/src/interpreter/interpreter-generator.cc b/deps/v8/src/interpreter/interpreter-generator.cc index e010ab2f640607..5508c07e3f4708 100644 --- a/deps/v8/src/interpreter/interpreter-generator.cc +++ b/deps/v8/src/interpreter/interpreter-generator.cc @@ -3074,9 +3074,6 @@ Handle GenerateBytecodeHandler(Isolate* isolate, const char* debug_name, compiler::CodeAssemblerState state( isolate, &zone, InterpreterDispatchDescriptor{}, CodeKind::BYTECODE_HANDLER, debug_name, - FLAG_untrusted_code_mitigations - ? PoisoningMitigationLevel::kPoisonCriticalOnly - : PoisoningMitigationLevel::kDontPoison, builtin); switch (bytecode) { diff --git a/deps/v8/src/snapshot/embedded/embedded-empty.cc b/deps/v8/src/snapshot/embedded/embedded-empty.cc index c32b459d9d7bfa..e5355215f252cc 100644 --- a/deps/v8/src/snapshot/embedded/embedded-empty.cc +++ b/deps/v8/src/snapshot/embedded/embedded-empty.cc @@ -17,15 +17,3 @@ const uint8_t* v8_Default_embedded_blob_code_ = nullptr; uint32_t v8_Default_embedded_blob_code_size_ = 0; const uint8_t* v8_Default_embedded_blob_data_ = nullptr; uint32_t v8_Default_embedded_blob_data_size_ = 0; - -#ifdef V8_MULTI_SNAPSHOTS -extern "C" const uint8_t* v8_Trusted_embedded_blob_code_; -extern "C" uint32_t v8_Trusted_embedded_blob_code_size_; -extern "C" const uint8_t* v8_Trusted_embedded_blob_data_; -extern "C" uint32_t v8_Trusted_embedded_blob_data_size_; - -const uint8_t* v8_Trusted_embedded_blob_code_ = nullptr; -uint32_t v8_Trusted_embedded_blob_code_size_ = 0; -const uint8_t* v8_Trusted_embedded_blob_data_ = nullptr; -uint32_t v8_Trusted_embedded_blob_data_size_ = 0; -#endif diff --git a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h index bb2fed83c6566f..4a0d4a72552200 100644 --- a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h +++ b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h @@ -4787,22 +4787,14 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig, // Since we have more cache registers than parameter registers, the // {LiftoffCompiler} should always be able to place {target} in a register. DCHECK(target.is_valid()); - if (FLAG_untrusted_code_mitigations) { - RetpolineCall(target); - } else { - call(target); - } + call(target); } void LiftoffAssembler::TailCallIndirect(Register target) { // Since we have more cache registers than parameter registers, the // {LiftoffCompiler} should always be able to place {target} in a register. DCHECK(target.is_valid()); - if (FLAG_untrusted_code_mitigations) { - RetpolineJump(target); - } else { - jmp(target); - } + jmp(target); } void LiftoffAssembler::CallRuntimeStub(WasmCode::RuntimeStubId sid) { diff --git a/deps/v8/src/wasm/baseline/liftoff-compiler.cc b/deps/v8/src/wasm/baseline/liftoff-compiler.cc index 92ee9efd67ae3a..c19a351b3c92a3 100644 --- a/deps/v8/src/wasm/baseline/liftoff-compiler.cc +++ b/deps/v8/src/wasm/baseline/liftoff-compiler.cc @@ -2815,30 +2815,6 @@ class LiftoffCompiler { __ DeallocateStackSlot(sizeof(MemoryTracingInfo)); } - Register AddMemoryMasking(Register index, uintptr_t* offset, - LiftoffRegList* pinned) { - if (!FLAG_untrusted_code_mitigations || - env_->bounds_checks == kTrapHandler) { - return index; - } - CODE_COMMENT("mask memory index"); - // Make sure that we can overwrite {index}. - if (__ cache_state()->is_used(LiftoffRegister(index))) { - Register old_index = index; - pinned->clear(LiftoffRegister{old_index}); - index = pinned->set(__ GetUnusedRegister(kGpReg, *pinned)).gp(); - if (index != old_index) { - __ Move(index, old_index, kPointerKind); - } - } - Register tmp = __ GetUnusedRegister(kGpReg, *pinned).gp(); - LOAD_INSTANCE_FIELD(tmp, MemoryMask, kSystemPointerSize, *pinned); - if (*offset) __ emit_ptrsize_addi(index, index, *offset); - __ emit_ptrsize_and(index, index, tmp); - *offset = 0; - return index; - } - bool IndexStaticallyInBounds(const LiftoffAssembler::VarState& index_slot, int access_size, uintptr_t* offset) { if (!index_slot.is_const()) return false; @@ -2899,7 +2875,6 @@ class LiftoffCompiler { CODE_COMMENT("load from memory"); LiftoffRegList pinned = LiftoffRegList::ForRegs(index); - index = AddMemoryMasking(index, &offset, &pinned); // Load the memory start address only now to reduce register pressure // (important on ia32). @@ -2944,7 +2919,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; LiftoffRegList pinned = LiftoffRegList::ForRegs(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("load with transformation"); Register addr = GetMemoryStart(pinned); LiftoffRegister value = __ GetUnusedRegister(reg_class_for(kS128), {}); @@ -2984,7 +2958,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("load lane"); Register addr = GetMemoryStart(pinned); LiftoffRegister result = __ GetUnusedRegister(reg_class_for(kS128), {}); @@ -3030,7 +3003,6 @@ class LiftoffCompiler { if (index == no_reg) return; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("store to memory"); uint32_t protected_store_pc = 0; // Load the memory start address only now to reduce register pressure @@ -3065,7 +3037,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("store lane to memory"); Register addr = pinned.set(GetMemoryStart(pinned)); uint32_t protected_store_pc = 0; @@ -4347,7 +4318,6 @@ class LiftoffCompiler { pinned.set(index); AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("atomic store to memory"); Register addr = pinned.set(GetMemoryStart(pinned)); LiftoffRegList outer_pinned; @@ -4370,7 +4340,6 @@ class LiftoffCompiler { LiftoffRegList pinned = LiftoffRegList::ForRegs(index); AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("atomic load from memory"); Register addr = pinned.set(GetMemoryStart(pinned)); RegClass rc = reg_class_for(kind); @@ -4418,7 +4387,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(GetMemoryStart(pinned)); (asm_.*emit_fn)(addr, index, offset, value, result, type); @@ -4441,7 +4409,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp(); LOAD_INSTANCE_FIELD(addr, MemoryStart, kSystemPointerSize, pinned); __ emit_i32_add(addr, addr, index); @@ -4474,7 +4441,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(GetMemoryStart(pinned)); LiftoffRegister result = pinned.set(__ GetUnusedRegister(reg_class_for(result_kind), pinned)); @@ -4521,7 +4487,6 @@ class LiftoffCompiler { pinned); uintptr_t offset = imm.offset; - index_reg = AddMemoryMasking(index_reg, &offset, &pinned); Register index_plus_offset = __ cache_state()->is_used(LiftoffRegister(index_reg)) ? pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp() @@ -4538,8 +4503,7 @@ class LiftoffCompiler { __ cache_state()->stack_state.end()[-2]; LiftoffAssembler::VarState index = __ cache_state()->stack_state.end()[-3]; - // We have to set the correct register for the index. It may have changed - // above in {AddMemoryMasking}. + // We have to set the correct register for the index. index.MakeRegister(LiftoffRegister(index_plus_offset)); static constexpr WasmCode::RuntimeStubId kTargets[2][2]{ @@ -4569,7 +4533,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, kInt32Size, imm.offset, index_reg, pinned); uintptr_t offset = imm.offset; - index_reg = AddMemoryMasking(index_reg, &offset, &pinned); Register index_plus_offset = __ cache_state()->is_used(LiftoffRegister(index_reg)) ? pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp() @@ -5785,28 +5748,6 @@ class LiftoffCompiler { __ emit_cond_jump(kUnsignedGreaterEqual, invalid_func_label, kI32, index, tmp_const); - // Mask the index to prevent SSCA. - if (FLAG_untrusted_code_mitigations) { - CODE_COMMENT("Mask indirect call index"); - // mask = ((index - size) & ~index) >> 31 - // Reuse allocated registers; note: size is still stored in {tmp_const}. - Register diff = table; - Register neg_index = tmp_const; - Register mask = scratch; - // 1) diff = index - size - __ emit_i32_sub(diff, index, tmp_const); - // 2) neg_index = ~index - __ LoadConstant(LiftoffRegister(neg_index), WasmValue(int32_t{-1})); - __ emit_i32_xor(neg_index, neg_index, index); - // 3) mask = diff & neg_index - __ emit_i32_and(mask, diff, neg_index); - // 4) mask = mask >> 31 - __ emit_i32_sari(mask, mask, 31); - - // Apply mask. - __ emit_i32_and(index, index, mask); - } - CODE_COMMENT("Check indirect call signature"); // Load the signature from {instance->ift_sig_ids[key]} if (imm.table_imm.index == 0) { diff --git a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h index d5cda7b3c482a7..daee2964c51eef 100644 --- a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h +++ b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h @@ -4322,11 +4322,7 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig, popq(kScratchRegister); target = kScratchRegister; } - if (FLAG_untrusted_code_mitigations) { - RetpolineCall(target); - } else { - call(target); - } + call(target); } void LiftoffAssembler::TailCallIndirect(Register target) { @@ -4334,11 +4330,7 @@ void LiftoffAssembler::TailCallIndirect(Register target) { popq(kScratchRegister); target = kScratchRegister; } - if (FLAG_untrusted_code_mitigations) { - RetpolineJump(target); - } else { - jmp(target); - } + jmp(target); } void LiftoffAssembler::CallRuntimeStub(WasmCode::RuntimeStubId sid) { diff --git a/deps/v8/src/wasm/graph-builder-interface.cc b/deps/v8/src/wasm/graph-builder-interface.cc index 84f34cc0ed8d30..5e85cb0d27f0bc 100644 --- a/deps/v8/src/wasm/graph-builder-interface.cc +++ b/deps/v8/src/wasm/graph-builder-interface.cc @@ -1547,7 +1547,6 @@ class WasmGraphBuildingInterface { WRAP_CACHE_FIELD(mem_start); WRAP_CACHE_FIELD(mem_size); - WRAP_CACHE_FIELD(mem_mask); #undef WRAP_CACHE_FIELD } } diff --git a/deps/v8/src/wasm/wasm-external-refs.cc b/deps/v8/src/wasm/wasm-external-refs.cc index 101d5638765538..a95a0d40cc8441 100644 --- a/deps/v8/src/wasm/wasm-external-refs.cc +++ b/deps/v8/src/wasm/wasm-external-refs.cc @@ -451,7 +451,6 @@ class V8_NODISCARD ThreadNotInWasmScope { #endif }; -#ifdef DISABLE_UNTRUSTED_CODE_MITIGATIONS inline byte* EffectiveAddress(WasmInstanceObject instance, uint32_t index) { return instance.memory_start() + index; } @@ -460,19 +459,6 @@ inline byte* EffectiveAddress(byte* base, size_t size, uint32_t index) { return base + index; } -#else -inline byte* EffectiveAddress(WasmInstanceObject instance, uint32_t index) { - // Compute the effective address of the access, making sure to condition - // the index even in the in-bounds case. - return instance.memory_start() + (index & instance.memory_mask()); -} - -inline byte* EffectiveAddress(byte* base, size_t size, uint32_t index) { - size_t mem_mask = base::bits::RoundUpToPowerOfTwo(size) - 1; - return base + (index & mem_mask); -} -#endif - template V ReadAndIncrementOffset(Address data, size_t* offset) { V result = ReadUnalignedValue(data + *offset); diff --git a/deps/v8/src/wasm/wasm-objects-inl.h b/deps/v8/src/wasm/wasm-objects-inl.h index a75d83df027b25..00d075b83e1dd2 100644 --- a/deps/v8/src/wasm/wasm-objects-inl.h +++ b/deps/v8/src/wasm/wasm-objects-inl.h @@ -186,7 +186,6 @@ bool WasmGlobalObject::SetFuncRef(Isolate* isolate, Handle value) { // WasmInstanceObject PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_start, byte*, kMemoryStartOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_size, size_t, kMemorySizeOffset) -PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_mask, size_t, kMemoryMaskOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, isolate_root, Address, kIsolateRootOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, stack_limit_address, Address, diff --git a/deps/v8/src/wasm/wasm-objects.cc b/deps/v8/src/wasm/wasm-objects.cc index a6ff80f624231e..fa15ab24c21a50 100644 --- a/deps/v8/src/wasm/wasm-objects.cc +++ b/deps/v8/src/wasm/wasm-objects.cc @@ -1242,21 +1242,13 @@ bool WasmInstanceObject::EnsureIndirectFunctionTableWithMinimumSize( void WasmInstanceObject::SetRawMemory(byte* mem_start, size_t mem_size) { CHECK_LE(mem_size, wasm::max_mem_bytes()); #if V8_HOST_ARCH_64_BIT - uint64_t mem_mask64 = base::bits::RoundUpToPowerOfTwo64(mem_size) - 1; set_memory_start(mem_start); set_memory_size(mem_size); - set_memory_mask(mem_mask64); #else // Must handle memory > 2GiB specially. CHECK_LE(mem_size, size_t{kMaxUInt32}); - uint32_t mem_mask32 = - (mem_size > 2 * size_t{GB}) - ? 0xFFFFFFFFu - : base::bits::RoundUpToPowerOfTwo32(static_cast(mem_size)) - - 1; set_memory_start(mem_start); set_memory_size(mem_size); - set_memory_mask(mem_mask32); #endif } diff --git a/deps/v8/src/wasm/wasm-objects.h b/deps/v8/src/wasm/wasm-objects.h index 11d5c265ed5feb..f0795322bba03e 100644 --- a/deps/v8/src/wasm/wasm-objects.h +++ b/deps/v8/src/wasm/wasm-objects.h @@ -356,7 +356,6 @@ class V8_EXPORT_PRIVATE WasmInstanceObject : public JSObject { DECL_ACCESSORS(managed_object_maps, FixedArray) DECL_PRIMITIVE_ACCESSORS(memory_start, byte*) DECL_PRIMITIVE_ACCESSORS(memory_size, size_t) - DECL_PRIMITIVE_ACCESSORS(memory_mask, size_t) DECL_PRIMITIVE_ACCESSORS(isolate_root, Address) DECL_PRIMITIVE_ACCESSORS(stack_limit_address, Address) DECL_PRIMITIVE_ACCESSORS(real_stack_limit_address, Address) @@ -397,7 +396,6 @@ class V8_EXPORT_PRIVATE WasmInstanceObject : public JSObject { V(kOptionalPaddingOffset, POINTER_SIZE_PADDING(kOptionalPaddingOffset)) \ V(kMemoryStartOffset, kSystemPointerSize) \ V(kMemorySizeOffset, kSizetSize) \ - V(kMemoryMaskOffset, kSizetSize) \ V(kStackLimitAddressOffset, kSystemPointerSize) \ V(kImportedFunctionTargetsOffset, kSystemPointerSize) \ V(kIndirectFunctionTableTargetsOffset, kSystemPointerSize) \ diff --git a/deps/v8/test/cctest/BUILD.gn b/deps/v8/test/cctest/BUILD.gn index e7f011df74dcdf..2c84d21258f119 100644 --- a/deps/v8/test/cctest/BUILD.gn +++ b/deps/v8/test/cctest/BUILD.gn @@ -119,7 +119,6 @@ v8_source_set("cctest_sources") { "compiler/test-run-jsops.cc", "compiler/test-run-load-store.cc", "compiler/test-run-machops.cc", - "compiler/test-run-retpoline.cc", "compiler/test-run-stackcheck.cc", "compiler/test-run-tail-calls.cc", "compiler/test-run-unwinding-info.cc", @@ -307,7 +306,6 @@ v8_source_set("cctest_sources") { "test-assembler-arm.cc", "test-disasm-arm.cc", "test-macro-assembler-arm.cc", - "test-poison-disasm-arm.cc", "test-sync-primitives-arm.cc", ] } else if (v8_current_cpu == "arm64") { @@ -319,7 +317,6 @@ v8_source_set("cctest_sources") { "test-js-arm64-variables.cc", "test-macro-assembler-arm64.cc", "test-pointer-auth-arm64.cc", - "test-poison-disasm-arm64.cc", "test-sync-primitives-arm64.cc", "test-utils-arm64.cc", "test-utils-arm64.h", diff --git a/deps/v8/test/cctest/cctest.status b/deps/v8/test/cctest/cctest.status index 9b369044754443..1401395f2ebadf 100644 --- a/deps/v8/test/cctest/cctest.status +++ b/deps/v8/test/cctest/cctest.status @@ -649,7 +649,6 @@ 'test-run-load-store/*': [SKIP], 'test-run-machops/*': [SKIP], 'test-run-native-calls/*': [SKIP], - 'test-run-retpoline/*': [SKIP], 'test-run-stackcheck/*': [SKIP], 'test-run-tail-calls/*': [SKIP], 'test-run-unwinding-info/*': [SKIP], diff --git a/deps/v8/test/cctest/compiler/code-assembler-tester.h b/deps/v8/test/cctest/compiler/code-assembler-tester.h index 6dc343fa08de93..d1e904a6a86b2b 100644 --- a/deps/v8/test/cctest/compiler/code-assembler-tester.h +++ b/deps/v8/test/cctest/compiler/code-assembler-tester.h @@ -24,7 +24,7 @@ class CodeAssemblerTester { : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), state_(isolate, &zone_, descriptor, CodeKind::FOR_TESTING, name, - PoisoningMitigationLevel::kDontPoison, Builtin::kNoBuiltinId) {} + Builtin::kNoBuiltinId) {} // Test generating code for a stub. Assumes VoidDescriptor call interface. explicit CodeAssemblerTester(Isolate* isolate, const char* name = "test") @@ -36,8 +36,7 @@ class CodeAssemblerTester { const char* name = "test") : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), - state_(isolate, &zone_, parameter_count, kind, name, - PoisoningMitigationLevel::kDontPoison) {} + state_(isolate, &zone_, parameter_count, kind, name) {} CodeAssemblerTester(Isolate* isolate, CodeKind kind, const char* name = "test") @@ -48,7 +47,7 @@ class CodeAssemblerTester { : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), state_(isolate, &zone_, call_descriptor, CodeKind::FOR_TESTING, name, - PoisoningMitigationLevel::kDontPoison, Builtin::kNoBuiltinId) {} + Builtin::kNoBuiltinId) {} CodeAssemblerState* state() { return &state_; } diff --git a/deps/v8/test/cctest/compiler/test-code-generator.cc b/deps/v8/test/cctest/compiler/test-code-generator.cc index 997d7ade73fece..6df1820b3a50cd 100644 --- a/deps/v8/test/cctest/compiler/test-code-generator.cc +++ b/deps/v8/test/cctest/compiler/test-code-generator.cc @@ -1002,7 +1002,6 @@ class CodeGeneratorTester { environment->main_zone(), &frame_, &linkage_, environment->instructions(), &info_, environment->main_isolate(), base::Optional(), kNoSourcePosition, nullptr, - PoisoningMitigationLevel::kDontPoison, AssemblerOptions::Default(environment->main_isolate()), Builtin::kNoBuiltinId, kMaxUnoptimizedFrameHeight, kMaxPushedArgumentCount); @@ -1056,7 +1055,6 @@ class CodeGeneratorTester { AllocatedOperand(LocationOperand::REGISTER, MachineRepresentation::kTagged, kReturnRegister0.code()), - ImmediateOperand(ImmediateOperand::INLINE_INT32, -1), // poison index. ImmediateOperand(ImmediateOperand::INLINE_INT32, optional_padding_slot), ImmediateOperand(ImmediateOperand::INLINE_INT32, stack_slot_delta)}; Instruction* tail_call = @@ -1145,7 +1143,6 @@ class CodeGeneratorTester { AllocatedOperand(LocationOperand::REGISTER, MachineRepresentation::kTagged, kReturnRegister0.code()), - ImmediateOperand(ImmediateOperand::INLINE_INT32, -1), // poison index. ImmediateOperand(ImmediateOperand::INLINE_INT32, optional_padding_slot), ImmediateOperand(ImmediateOperand::INLINE_INT32, first_unused_stack_slot)}; diff --git a/deps/v8/test/common/wasm/wasm-interpreter.cc b/deps/v8/test/common/wasm/wasm-interpreter.cc index 84871cccb6319b..0d3364169f1c2f 100644 --- a/deps/v8/test/common/wasm/wasm-interpreter.cc +++ b/deps/v8/test/common/wasm/wasm-interpreter.cc @@ -1621,8 +1621,7 @@ class WasmInterpreterInternals { DCHECK_GE(instance_object_->memory_size(), index); // Compute the effective address of the access, making sure to condition // the index even in the in-bounds case. - return reinterpret_cast
(instance_object_->memory_start()) + - (index & instance_object_->memory_mask()); + return reinterpret_cast
(instance_object_->memory_start()) + index; } template diff --git a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc index 121190bdb8ca53..b53461b8b01289 100644 --- a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc +++ b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc @@ -21,10 +21,9 @@ namespace internal { CodeStubAssemblerTestState::CodeStubAssemblerTestState( CodeStubAssemblerTest* test) - : compiler::CodeAssemblerState( - test->isolate(), test->zone(), VoidDescriptor{}, - CodeKind::FOR_TESTING, "test", - PoisoningMitigationLevel::kPoisonCriticalOnly) {} + : compiler::CodeAssemblerState(test->isolate(), test->zone(), + VoidDescriptor{}, CodeKind::FOR_TESTING, + "test") {} TARGET_TEST_F(CodeStubAssemblerTest, SmiTag) { CodeStubAssemblerTestState state(this); diff --git a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc index f4e3ea07b1c28f..e52661fae260ef 100644 --- a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc +++ b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc @@ -50,8 +50,7 @@ InstructionSelectorTest::Stream InstructionSelectorTest::StreamBuilder::Build( InstructionSelector::kEnableSwitchJumpTable, &tick_counter, nullptr, &max_unoptimized_frame_height, &max_pushed_argument_count, source_position_mode, features, InstructionSelector::kDisableScheduling, - InstructionSelector::kEnableRootsRelativeAddressing, - PoisoningMitigationLevel::kPoisonAll); + InstructionSelector::kEnableRootsRelativeAddressing); selector.SelectInstructions(); if (FLAG_trace_turbo) { StdoutStream{} << "=== Code sequence after instruction selection ===" @@ -452,7 +451,6 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeopt) { EXPECT_EQ(kArchCallCodeObject, call_instr->arch_opcode()); size_t num_operands = 1 + // Code object. - 1 + // Poison index 6 + // Frame state deopt id + one input for each value in frame state. 1 + // Function. 1; // Context. @@ -462,23 +460,23 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeopt) { EXPECT_TRUE(call_instr->InputAt(0)->IsImmediate()); // Deoptimization id. - int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(2)); + int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); FrameStateDescriptor* desc_before = s.GetFrameStateDescriptor(deopt_id_before); EXPECT_EQ(bailout_id_before, desc_before->bailout_id()); EXPECT_EQ(1u, desc_before->parameters_count()); EXPECT_EQ(1u, desc_before->locals_count()); EXPECT_EQ(1u, desc_before->stack_count()); - EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(4))); - EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(5))); // This should be a context. + EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(3))); + EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(4))); // This should be a context. // We inserted 0 here. - EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(6))); - EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(7))->IsUndefined(isolate())); + EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(5))); + EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(6))->IsUndefined(isolate())); // Function. - EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(8))); + EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(7))); // Context. - EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(9))); + EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(8))); EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); @@ -559,7 +557,6 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_EQ(kArchCallCodeObject, call_instr->arch_opcode()); size_t num_operands = 1 + // Code object. - 1 + // Poison index. 1 + // Frame state deopt id 5 + // One input for each value in frame state + context. 5 + // One input for each value in the parent frame state + context. @@ -570,7 +567,7 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_TRUE(call_instr->InputAt(0)->IsImmediate()); // Deoptimization id. - int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(2)); + int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); FrameStateDescriptor* desc_before = s.GetFrameStateDescriptor(deopt_id_before); FrameStateDescriptor* desc_before_outer = desc_before->outer_state(); @@ -579,24 +576,24 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_EQ(1u, desc_before_outer->locals_count()); EXPECT_EQ(1u, desc_before_outer->stack_count()); // Values from parent environment. - EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(4))); + EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(3))); // Context: - EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(5))); - EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(6))); - EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(7))); + EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(4))); + EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(5))); + EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(6))); // Values from the nested frame. EXPECT_EQ(1u, desc_before->parameters_count()); EXPECT_EQ(1u, desc_before->locals_count()); EXPECT_EQ(1u, desc_before->stack_count()); - EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(9))); - EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(10))); - EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(11))); - EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(12))); + EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(8))); + EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(9))); + EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(10))); + EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(11))); // Function. - EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(13))); + EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(12))); // Context. - EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(14))); + EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(13))); // Continuation. EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); diff --git a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc index 2b76e5289f227b..03960705e1a571 100644 --- a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc +++ b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc @@ -86,8 +86,7 @@ TEST_F(EffectControlLinearizerTest, SimpleLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); EXPECT_THAT(load, IsLoadField(AccessBuilder::ForHeapNumberValue(), heap_number, @@ -148,8 +147,7 @@ TEST_F(EffectControlLinearizerTest, DiamondLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); // The effect input to the return should be an effect phi with the // newly introduced effectful change operators. @@ -215,8 +213,7 @@ TEST_F(EffectControlLinearizerTest, LoopLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(ret, IsReturn(load, load, if_true)); EXPECT_THAT(load, IsLoadField(AccessBuilder::ForHeapNumberValue(), @@ -278,8 +275,7 @@ TEST_F(EffectControlLinearizerTest, CloneBranch) { schedule.AddNode(mblock, graph()->end()); LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); Capture branch1_capture, branch2_capture; EXPECT_THAT( @@ -337,8 +333,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenBranch) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -390,8 +385,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenDiamond) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -448,8 +442,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenLoop) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -502,8 +495,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableInChangedBlockThenBranch) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } diff --git a/deps/v8/test/unittests/compiler/node-test-utils.cc b/deps/v8/test/unittests/compiler/node-test-utils.cc index 5305fef5741be3..b449faee8db871 100644 --- a/deps/v8/test/unittests/compiler/node-test-utils.cc +++ b/deps/v8/test/unittests/compiler/node-test-utils.cc @@ -1150,7 +1150,6 @@ class IsStoreElementMatcher final : public TestNodeMatcher { LOAD_MATCHER(Load) LOAD_MATCHER(UnalignedLoad) -LOAD_MATCHER(PoisonedLoad) LOAD_MATCHER(LoadFromObject) class IsLoadImmutableMatcher final : public TestNodeMatcher { @@ -2103,16 +2102,6 @@ Matcher IsLoad(const Matcher& rep_matcher, effect_matcher, control_matcher)); } -Matcher IsPoisonedLoad(const Matcher& rep_matcher, - const Matcher& base_matcher, - const Matcher& index_matcher, - const Matcher& effect_matcher, - const Matcher& control_matcher) { - return MakeMatcher(new IsPoisonedLoadMatcher(rep_matcher, base_matcher, - index_matcher, effect_matcher, - control_matcher)); -} - Matcher IsUnalignedLoad(const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher, @@ -2366,7 +2355,6 @@ IS_UNOP_MATCHER(Word32Ctz) IS_UNOP_MATCHER(Word32Popcnt) IS_UNOP_MATCHER(Word32ReverseBytes) IS_UNOP_MATCHER(SpeculativeToNumber) -IS_UNOP_MATCHER(TaggedPoisonOnSpeculation) #undef IS_UNOP_MATCHER // Special-case Bitcast operators which are disabled when ENABLE_VERIFY_CSA is diff --git a/deps/v8/test/unittests/compiler/node-test-utils.h b/deps/v8/test/unittests/compiler/node-test-utils.h index 0e5e99679c9a70..f727a14c34d350 100644 --- a/deps/v8/test/unittests/compiler/node-test-utils.h +++ b/deps/v8/test/unittests/compiler/node-test-utils.h @@ -328,11 +328,6 @@ Matcher IsLoad(const Matcher& rep_matcher, const Matcher& index_matcher, const Matcher& effect_matcher, const Matcher& control_matcher); -Matcher IsPoisonedLoad(const Matcher& rep_matcher, - const Matcher& base_matcher, - const Matcher& index_matcher, - const Matcher& effect_matcher, - const Matcher& control_matcher); Matcher IsUnalignedLoad(const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher, @@ -486,7 +481,6 @@ Matcher IsNumberToBoolean(const Matcher& input_matcher); Matcher IsNumberToInt32(const Matcher& input_matcher); Matcher IsNumberToUint32(const Matcher& input_matcher); Matcher IsParameter(const Matcher index_matcher); -Matcher IsSpeculationPoison(); Matcher IsLoadFramePointer(); Matcher IsLoadParentFramePointer(); Matcher IsPlainPrimitiveToNumber(const Matcher& input_matcher); diff --git a/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc b/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc index 6387f814e1b19f..6eddb961cad0fc 100644 --- a/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc +++ b/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc @@ -49,9 +49,8 @@ class SimplifiedLoweringTest : public GraphTest { Linkage* linkage = zone()->New(Linkage::GetJSCallDescriptor( zone(), false, num_parameters_ + 1, CallDescriptor::kCanUseRoots)); - SimplifiedLowering lowering( - jsgraph(), broker(), zone(), source_positions(), node_origins(), - PoisoningMitigationLevel::kDontPoison, tick_counter(), linkage); + SimplifiedLowering lowering(jsgraph(), broker(), zone(), source_positions(), + node_origins(), tick_counter(), linkage); lowering.LowerAllNodes(); } diff --git a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc index 63ccfc5b76affb..3eddc5c99c7ec9 100644 --- a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc +++ b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc @@ -27,8 +27,7 @@ InterpreterAssemblerTestState::InterpreterAssemblerTestState( InterpreterAssemblerTest* test, Bytecode bytecode) : compiler::CodeAssemblerState( test->isolate(), test->zone(), InterpreterDispatchDescriptor{}, - CodeKind::BYTECODE_HANDLER, Bytecodes::ToString(bytecode), - PoisoningMitigationLevel::kPoisonCriticalOnly) {} + CodeKind::BYTECODE_HANDLER, Bytecodes::ToString(bytecode)) {} const interpreter::Bytecode kBytecodes[] = { #define DEFINE_BYTECODE(Name, ...) interpreter::Bytecode::k##Name, @@ -55,14 +54,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest:: Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoad( const Matcher& rep_matcher, const Matcher& base_matcher, - const Matcher& index_matcher, LoadSensitivity needs_poisoning) { - CHECK_NE(LoadSensitivity::kUnsafe, needs_poisoning); - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level()); - if (poisoning_level() == PoisoningMitigationLevel::kPoisonCriticalOnly && - needs_poisoning == LoadSensitivity::kCritical) { - return ::i::compiler::IsPoisonedLoad(rep_matcher, base_matcher, - index_matcher, _, _); - } + const Matcher& index_matcher) { return ::i::compiler::IsLoad(rep_matcher, base_matcher, index_matcher, _, _); } @@ -71,7 +63,6 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoadFromObject( const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher) { - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level()); return ::i::compiler::IsLoadFromObject(rep_matcher, base_matcher, index_matcher, _, _); } @@ -96,39 +87,36 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsWordNot( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedByteOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { return IsLoad( MachineType::Uint8(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedByteOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { return IsLoad( MachineType::Int8(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Uint16(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -146,8 +134,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(kBitsPerByte)), bytes[1]); @@ -156,15 +143,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Int16(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -182,8 +168,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(kBitsPerByte)), bytes[1]); @@ -192,15 +177,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Uint32(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -218,8 +202,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(3 * kBitsPerByte)), @@ -233,15 +216,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Int32(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -259,8 +241,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(3 * kBitsPerByte)), @@ -274,14 +255,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning) { + int offset, OperandSize operand_size) { switch (operand_size) { case OperandSize::kByte: - return IsSignedByteOperand(offset, needs_poisoning); + return IsSignedByteOperand(offset); case OperandSize::kShort: - return IsSignedShortOperand(offset, needs_poisoning); + return IsSignedShortOperand(offset); case OperandSize::kQuad: - return IsSignedQuadOperand(offset, needs_poisoning); + return IsSignedQuadOperand(offset); case OperandSize::kNone: UNREACHABLE(); } @@ -290,14 +271,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning) { + int offset, OperandSize operand_size) { switch (operand_size) { case OperandSize::kByte: - return IsUnsignedByteOperand(offset, needs_poisoning); + return IsUnsignedByteOperand(offset); case OperandSize::kShort: - return IsUnsignedShortOperand(offset, needs_poisoning); + return IsUnsignedShortOperand(offset); case OperandSize::kQuad: - return IsUnsignedQuadOperand(offset, needs_poisoning); + return IsUnsignedQuadOperand(offset); case OperandSize::kNone: UNREACHABLE(); } @@ -307,12 +288,11 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoadRegisterOperand( int offset, OperandSize operand_size) { - Matcher reg_operand = IsChangeInt32ToIntPtr( - IsSignedOperand(offset, operand_size, LoadSensitivity::kSafe)); + Matcher reg_operand = + IsChangeInt32ToIntPtr(IsSignedOperand(offset, operand_size)); return IsBitcastWordToTagged(IsLoad( MachineType::Pointer(), c::IsLoadParentFramePointer(), - c::IsWordShl(reg_operand, c::IsIntPtrConstant(kSystemPointerSizeLog2)), - LoadSensitivity::kCritical)); + c::IsWordShl(reg_operand, c::IsIntPtrConstant(kSystemPointerSizeLog2)))); } TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { @@ -334,44 +314,38 @@ TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { switch (interpreter::Bytecodes::GetOperandType(bytecode, i)) { case interpreter::OperandType::kRegCount: EXPECT_THAT(m.BytecodeOperandCount(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kFlag8: EXPECT_THAT(m.BytecodeOperandFlag(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kIdx: EXPECT_THAT(m.BytecodeOperandIdx(i), - c::IsChangeUint32ToWord(m.IsUnsignedOperand( - offset, operand_size, LoadSensitivity::kCritical))); + c::IsChangeUint32ToWord( + m.IsUnsignedOperand(offset, operand_size))); break; case interpreter::OperandType::kNativeContextIndex: EXPECT_THAT(m.BytecodeOperandNativeContextIndex(i), - c::IsChangeUint32ToWord(m.IsUnsignedOperand( - offset, operand_size, LoadSensitivity::kCritical))); + c::IsChangeUint32ToWord( + m.IsUnsignedOperand(offset, operand_size))); break; case interpreter::OperandType::kUImm: EXPECT_THAT(m.BytecodeOperandUImm(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kImm: { EXPECT_THAT(m.BytecodeOperandImm(i), - m.IsSignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsSignedOperand(offset, operand_size)); break; } case interpreter::OperandType::kRuntimeId: EXPECT_THAT(m.BytecodeOperandRuntimeId(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kIntrinsicId: EXPECT_THAT(m.BytecodeOperandIntrinsicId(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kRegList: case interpreter::OperandType::kReg: @@ -416,12 +390,11 @@ TARGET_TEST_F(InterpreterAssemblerTest, LoadConstantPoolEntry) { c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrConstant(BytecodeArray::kConstantPoolOffset - kHeapObjectTag)); - EXPECT_THAT( - load_constant, - m.IsLoad(MachineType::AnyTagged(), constant_pool_matcher, - c::IsIntPtrConstant(FixedArray::OffsetOfElementAt(2) - - kHeapObjectTag), - LoadSensitivity::kCritical)); + EXPECT_THAT(load_constant, + m.IsLoadFromObject( + MachineType::AnyTagged(), constant_pool_matcher, + c::IsIntPtrConstant(FixedArray::OffsetOfElementAt(2) - + kHeapObjectTag))); } { c::Node* index = m.UntypedParameter(2); @@ -434,12 +407,11 @@ TARGET_TEST_F(InterpreterAssemblerTest, LoadConstantPoolEntry) { kHeapObjectTag)); EXPECT_THAT( load_constant, - m.IsLoad( + m.IsLoadFromObject( MachineType::AnyTagged(), constant_pool_matcher, c::IsIntPtrAdd( c::IsIntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag), - c::IsWordShl(index, c::IsIntPtrConstant(kTaggedSizeLog2))), - LoadSensitivity::kCritical)); + c::IsWordShl(index, c::IsIntPtrConstant(kTaggedSizeLog2))))); } } } diff --git a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h index c2539d8a2819fd..d02b80698a8886 100644 --- a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h +++ b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h @@ -45,8 +45,7 @@ class InterpreterAssemblerTest : public TestWithIsolateAndZone { Matcher IsLoad( const Matcher& rep_matcher, const Matcher& base_matcher, - const Matcher& index_matcher, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + const Matcher& index_matcher); Matcher IsLoadFromObject( const Matcher& rep_matcher, const Matcher& base_matcher, @@ -60,30 +59,17 @@ class InterpreterAssemblerTest : public TestWithIsolateAndZone { Matcher IsWordNot( const Matcher& value_matcher); - Matcher IsUnsignedByteOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedByteOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsUnsignedShortOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedShortOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsUnsignedQuadOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedQuadOperand( - int offset, LoadSensitivity needs_poisoning); - - Matcher IsUnpoisonedSignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning); - Matcher IsUnpoisonedUnsignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning); + Matcher IsUnsignedByteOperand(int offset); + Matcher IsSignedByteOperand(int offset); + Matcher IsUnsignedShortOperand(int offset); + Matcher IsSignedShortOperand(int offset); + Matcher IsUnsignedQuadOperand(int offset); + Matcher IsSignedQuadOperand(int offset); Matcher IsSignedOperand(int offset, - OperandSize operand_size, - LoadSensitivity needs_poisoning); + OperandSize operand_size); Matcher IsUnsignedOperand(int offset, - OperandSize operand_size, - LoadSensitivity needs_poisoning); + OperandSize operand_size); Matcher IsLoadRegisterOperand(int offset, OperandSize operand_size); diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie.py b/deps/v8/tools/clusterfuzz/v8_foozzie.py index 52b7954093919c..d9009bfb7c8a3a 100755 --- a/deps/v8/tools/clusterfuzz/v8_foozzie.py +++ b/deps/v8/tools/clusterfuzz/v8_foozzie.py @@ -78,13 +78,6 @@ '--always-opt', '--force-slow-path', ], - trusted=[ - '--no-untrusted-code-mitigations', - ], - trusted_opt=[ - '--always-opt', - '--no-untrusted-code-mitigations', - ], ) BASELINE_CONFIG = 'ignition' diff --git a/deps/v8/tools/testrunner/local/android.py b/deps/v8/tools/testrunner/local/android.py index ebf04afad61de0..cfc4e537f57fef 100644 --- a/deps/v8/tools/testrunner/local/android.py +++ b/deps/v8/tools/testrunner/local/android.py @@ -126,12 +126,6 @@ def push_executable(self, shell_dir, target_dir, binary): target_dir, skip_if_missing=True, ) - self.push_file( - shell_dir, - 'snapshot_blob_trusted.bin', - target_dir, - skip_if_missing=True, - ) self.push_file( shell_dir, 'icudtl.dat', diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py index ba4eff451adeaa..c34b957cb27990 100644 --- a/deps/v8/tools/testrunner/local/variants.py +++ b/deps/v8/tools/testrunner/local/variants.py @@ -38,7 +38,8 @@ "stress_snapshot": [["--stress-snapshot"]], # Trigger stress sampling allocation profiler with sample interval = 2^14 "stress_sampling": [["--stress-sampling-allocation-profiler=16384"]], - "trusted": [["--no-untrusted-code-mitigations"]], + # TODO(rmcilroy): Remove trusted variant once bots don't use it. + "trusted": [[]], "no_wasm_traps": [["--no-wasm-trap-handler"]], "turboprop": [["--turboprop"]], "turboprop_as_toptier": [["--turboprop-as-toptier", "--turboprop"]], diff --git a/test/parallel/test-v8-untrusted-code-mitigations.js b/test/parallel/test-v8-untrusted-code-mitigations.js deleted file mode 100644 index cb6360beb74bb0..00000000000000 --- a/test/parallel/test-v8-untrusted-code-mitigations.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -require('../common'); -const assert = require('assert'); -const { execFileSync } = require('child_process'); - -// This test checks that untrusted code mitigations in V8 are disabled -// by default. - -const v8Options = execFileSync(process.execPath, ['--v8-options']).toString(); - -const untrustedFlag = v8Options.indexOf('--untrusted-code-mitigations'); -assert.notStrictEqual(untrustedFlag, -1); - -const nextFlag = v8Options.indexOf('--', untrustedFlag + 2); -const slice = v8Options.substring(untrustedFlag, nextFlag); - -// eslint-disable-next-line no-regex-spaces -assert(slice.match(/type: bool default: false/)); From b61f9d632226061ef86a7a9814e62c102da8aa06 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Wed, 22 Jun 2022 11:24:29 -0300 Subject: [PATCH 3/5] deps: upgrade openssl sources to OpenSSL_1_1_1p+quic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates all sources in deps/openssl/openssl by: $ git clone https://github.com/quictls/openssl $ cd openssl $ git checkout OpenSSL_1_1_1p+quic $ cd ../node/deps/openssl $ rm -rf openssl $ cp -R ../openssl openssl $ rm -rf openssl/.git* openssl/.travis* $ git add --all openssl $ git commit openssl PR-URL: https://github.com/nodejs/node/pull/43535 Refs: https://mta.openssl.org/pipermail/openssl-announce/2022-June/000228.html Reviewed-By: Richard Lau Reviewed-By: Tobias Nießen Reviewed-By: Danielle Adams --- deps/openssl/openssl/CHANGES | 44 +++- .../openssl/Configurations/10-main.conf | 7 + deps/openssl/openssl/NEWS | 6 + deps/openssl/openssl/README-OpenSSL.md | 2 +- deps/openssl/openssl/README.md | 2 +- deps/openssl/openssl/apps/s_server.c | 49 +++- deps/openssl/openssl/config | 3 +- .../openssl/crypto/bn/asm/x86_64-mont5.pl | 198 +--------------- deps/openssl/openssl/crypto/bn/bn_exp.c | 44 ++-- deps/openssl/openssl/crypto/bn/rsaz_exp.c | 10 +- deps/openssl/openssl/crypto/bn/rsaz_exp.h | 25 +- deps/openssl/openssl/crypto/ec/ec_asn1.c | 12 +- deps/openssl/openssl/crypto/ec/ec_key.c | 5 +- deps/openssl/openssl/crypto/x509/x509_cmp.c | 6 +- deps/openssl/openssl/crypto/x509/x_crl.c | 14 +- deps/openssl/openssl/crypto/x509v3/v3_asid.c | 33 ++- deps/openssl/openssl/crypto/x509v3/v3_sxnet.c | 20 +- .../openssl/openssl/doc/man3/BIO_f_base64.pod | 5 +- .../man3/SSL_CTX_set1_verify_cert_store.pod | 15 +- deps/openssl/openssl/include/crypto/bn_conf.h | 1 - .../openssl/openssl/include/crypto/dso_conf.h | 1 - .../openssl/include/openssl/opensslconf.h | 1 - .../openssl/include/openssl/opensslv.h | 5 +- deps/openssl/openssl/include/openssl/ssl.h | 12 +- deps/openssl/openssl/ssl/record/ssl3_record.c | 16 +- deps/openssl/openssl/ssl/s3_lib.c | 12 + deps/openssl/openssl/ssl/ssl_cert.c | 6 + deps/openssl/openssl/ssl/ssl_local.h | 3 +- .../openssl/ssl/statem/extensions_clnt.c | 18 +- deps/openssl/openssl/ssl/t1_lib.c | 18 +- .../openssl/test/certs/embeddedSCTs1-key.pem | 38 +-- .../openssl/test/certs/embeddedSCTs1.pem | 35 +-- .../openssl/test/certs/embeddedSCTs1.sct | 12 +- .../test/certs/embeddedSCTs1_issuer-key.pem | 15 ++ .../test/certs/embeddedSCTs1_issuer.pem | 30 +-- deps/openssl/openssl/test/ct_test.c | 4 +- .../test/recipes/10-test_bn_data/bnmod.txt | 65 ++++++ .../openssl/test/recipes/80-test_ssl_new.t | 6 +- .../openssl/test/smime-certs/mksmime-certs.sh | 24 +- .../openssl/openssl/test/smime-certs/smdh.pem | 72 +++--- .../openssl/test/smime-certs/smdsa1.pem | 86 +++---- .../openssl/test/smime-certs/smdsa2.pem | 86 +++---- .../openssl/test/smime-certs/smdsa3.pem | 86 +++---- .../openssl/test/smime-certs/smec1.pem | 36 +-- .../openssl/test/smime-certs/smec2.pem | 38 +-- .../openssl/test/smime-certs/smroot.pem | 90 ++++---- .../openssl/test/smime-certs/smrsa1.pem | 90 ++++---- .../openssl/test/smime-certs/smrsa2.pem | 90 ++++---- .../openssl/test/smime-certs/smrsa3.pem | 90 ++++---- .../openssl/test/ssl-tests/16-certstatus.conf | 0 .../test/ssl-tests/30-supported-groups.conf | 54 +++++ .../ssl-tests/30-supported-groups.conf.in | 45 ++++ deps/openssl/openssl/test/sslapitest.c | 167 ++++++++++++++ deps/openssl/openssl/test/v3ext.c | 80 ++++++- deps/openssl/openssl/tools/c_rehash.in | 216 +++++++++--------- deps/openssl/openssl/util/private.num | 4 + 56 files changed, 1312 insertions(+), 840 deletions(-) delete mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h delete mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h delete mode 100644 deps/openssl/openssl/include/openssl/opensslconf.h create mode 100644 deps/openssl/openssl/test/certs/embeddedSCTs1_issuer-key.pem delete mode 100644 deps/openssl/openssl/test/ssl-tests/16-certstatus.conf create mode 100644 deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf create mode 100644 deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf.in diff --git a/deps/openssl/openssl/CHANGES b/deps/openssl/openssl/CHANGES index 74595df17d0c3f..4115a10e8939f5 100644 --- a/deps/openssl/openssl/CHANGES +++ b/deps/openssl/openssl/CHANGES @@ -7,18 +7,44 @@ https://github.com/openssl/openssl/commits/ and pick the appropriate release branch. + Changes between 1.1.1o and 1.1.1p [21 Jun 2022] + + *) In addition to the c_rehash shell command injection identified in + CVE-2022-1292, further bugs where the c_rehash script does not + properly sanitise shell metacharacters to prevent command injection have been + fixed. + + When the CVE-2022-1292 was fixed it was not discovered that there + are other places in the script where the file names of certificates + being hashed were possibly passed to a command executed through the shell. + + This script is distributed by some operating systems in a manner where + it is automatically executed. On such operating systems, an attacker + could execute arbitrary commands with the privileges of the script. + + Use of the c_rehash script is considered obsolete and should be replaced + by the OpenSSL rehash command line tool. + (CVE-2022-2068) + [Daniel Fiala, Tomáš Mráz] + + *) When OpenSSL TLS client is connecting without any supported elliptic + curves and TLS-1.3 protocol is disabled the connection will no longer fail + if a ciphersuite that does not use a key exchange based on elliptic + curves can be negotiated. + [Tomáš Mráz] + Changes between 1.1.1n and 1.1.1o [3 May 2022] *) Fixed a bug in the c_rehash script which was not properly sanitising shell - metacharacters to prevent command injection. This script is distributed by - some operating systems in a manner where it is automatically executed. On - such operating systems, an attacker could execute arbitrary commands with the - privileges of the script. - - Use of the c_rehash script is considered obsolete and should be replaced - by the OpenSSL rehash command line tool. - (CVE-2022-1292) - [Tomáš Mráz] + metacharacters to prevent command injection. This script is distributed + by some operating systems in a manner where it is automatically executed. + On such operating systems, an attacker could execute arbitrary commands + with the privileges of the script. + + Use of the c_rehash script is considered obsolete and should be replaced + by the OpenSSL rehash command line tool. + (CVE-2022-1292) + [Tomáš Mráz] Changes between 1.1.1m and 1.1.1n [15 Mar 2022] diff --git a/deps/openssl/openssl/Configurations/10-main.conf b/deps/openssl/openssl/Configurations/10-main.conf index 8ca8235ed56673..2fcb96a0470108 100644 --- a/deps/openssl/openssl/Configurations/10-main.conf +++ b/deps/openssl/openssl/Configurations/10-main.conf @@ -995,6 +995,13 @@ my %targets = ( perlasm_scheme => "linux64", }, + "BSD-aarch64" => { + inherit_from => [ "BSD-generic64", asm("aarch64_asm") ], + lib_cppflags => add("-DL_ENDIAN"), + bn_ops => "SIXTY_FOUR_BIT_LONG", + perlasm_scheme => "linux64", + }, + "bsdi-elf-gcc" => { inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], CC => "gcc", diff --git a/deps/openssl/openssl/NEWS b/deps/openssl/openssl/NEWS index d32cf5bb48dd0f..f5f5759c0ff243 100644 --- a/deps/openssl/openssl/NEWS +++ b/deps/openssl/openssl/NEWS @@ -5,6 +5,12 @@ This file gives a brief overview of the major changes between each OpenSSL release. For more details please read the CHANGES file. + Major changes between OpenSSL 1.1.1o and OpenSSL 1.1.1p [21 Jun 2022] + + o Fixed additional bugs in the c_rehash script which was not properly + sanitising shell metacharacters to prevent command injection + (CVE-2022-2068) + Major changes between OpenSSL 1.1.1n and OpenSSL 1.1.1o [3 May 2022] o Fixed a bug in the c_rehash script which was not properly sanitising diff --git a/deps/openssl/openssl/README-OpenSSL.md b/deps/openssl/openssl/README-OpenSSL.md index a56311a4d1867a..97a0042b86511f 100644 --- a/deps/openssl/openssl/README-OpenSSL.md +++ b/deps/openssl/openssl/README-OpenSSL.md @@ -1,5 +1,5 @@ - OpenSSL 1.1.1o 3 May 2022 + OpenSSL 1.1.1p 21 Jun 2022 Copyright (c) 1998-2022 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson diff --git a/deps/openssl/openssl/README.md b/deps/openssl/openssl/README.md index 63b2406f4e58da..e0710e0646b6bf 100644 --- a/deps/openssl/openssl/README.md +++ b/deps/openssl/openssl/README.md @@ -4,7 +4,7 @@ What This Is This is a fork of [OpenSSL](https://www.openssl.org) to enable QUIC. In addition to the website, the official source distribution is at . The OpenSSL `README` can be found at -[README-OpenSSL.md](https://github.com/quictls/openssl/blob/OpenSSL_1_1_1o%2Bquic/README-OpenSSL.md). +[README-OpenSSL.md](https://github.com/quictls/openssl/blob/OpenSSL_1_1_1p%2Bquic/README-OpenSSL.md). This fork adds APIs that can be used by QUIC implementations for connection handshakes. Quoting the IETF Working group diff --git a/deps/openssl/openssl/apps/s_server.c b/deps/openssl/openssl/apps/s_server.c index 64d53e68d0eeff..1a42bf89c7a03e 100644 --- a/deps/openssl/openssl/apps/s_server.c +++ b/deps/openssl/openssl/apps/s_server.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -2236,6 +2236,30 @@ static void print_stats(BIO *bio, SSL_CTX *ssl_ctx) SSL_CTX_sess_get_cache_size(ssl_ctx)); } +static long int count_reads_callback(BIO *bio, int cmd, const char *argp, + int argi, long int argl, long int ret) +{ + unsigned int *p_counter = (unsigned int *)BIO_get_callback_arg(bio); + + switch (cmd) { + case BIO_CB_READ: /* No break here */ + case BIO_CB_GETS: + if (p_counter != NULL) + ++*p_counter; + break; + default: + break; + } + + if (s_debug) { + BIO_set_callback_arg(bio, (char *)bio_s_out); + ret = bio_dump_callback(bio, cmd, argp, argi, argl, ret); + BIO_set_callback_arg(bio, (char *)p_counter); + } + + return ret; +} + static int sv_body(int s, int stype, int prot, unsigned char *context) { char *buf = NULL; @@ -2353,10 +2377,7 @@ static int sv_body(int s, int stype, int prot, unsigned char *context) SSL_set_accept_state(con); /* SSL_set_fd(con,s); */ - if (s_debug) { - BIO_set_callback(SSL_get_rbio(con), bio_dump_callback); - BIO_set_callback_arg(SSL_get_rbio(con), (char *)bio_s_out); - } + BIO_set_callback(SSL_get_rbio(con), count_reads_callback); if (s_msg) { #ifndef OPENSSL_NO_SSL_TRACE if (s_msg == 2) @@ -2648,7 +2669,25 @@ static int sv_body(int s, int stype, int prot, unsigned char *context) */ if ((!async || !SSL_waiting_for_async(con)) && !SSL_is_init_finished(con)) { + /* + * Count number of reads during init_ssl_connection. + * It helps us to distinguish configuration errors from errors + * caused by a client. + */ + unsigned int read_counter = 0; + + BIO_set_callback_arg(SSL_get_rbio(con), (char *)&read_counter); i = init_ssl_connection(con); + BIO_set_callback_arg(SSL_get_rbio(con), NULL); + + /* + * If initialization fails without reads, then + * there was a fatal error in configuration. + */ + if (i <= 0 && read_counter == 0) { + ret = -1; + goto err; + } if (i < 0) { ret = 0; diff --git a/deps/openssl/openssl/config b/deps/openssl/openssl/config index 49422981ae84e0..c7b035a0c57caa 100755 --- a/deps/openssl/openssl/config +++ b/deps/openssl/openssl/config @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1998-2022 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -709,6 +709,7 @@ case "$GUESSOS" in ia64-*-*bsd*) OUT="BSD-ia64" ;; x86_64-*-dragonfly*) OUT="BSD-x86_64" ;; amd64-*-*bsd*) OUT="BSD-x86_64" ;; + arm64-*-*bsd*) OUT="BSD-aarch64" ;; *86*-*-*bsd*) # mimic ld behaviour when it's looking for libc... if [ -L /usr/lib/libc.so ]; then # [Free|Net]BSD libc=/usr/lib/libc.so diff --git a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl index 8c37d132e47670..33cb769c36d545 100755 --- a/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl +++ b/deps/openssl/openssl/crypto/bn/asm/x86_64-mont5.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2101,193 +2101,6 @@ .size __bn_post4x_internal,.-__bn_post4x_internal ___ } -{ -$code.=<<___; -.globl bn_from_montgomery -.type bn_from_montgomery,\@abi-omnipotent -.align 32 -bn_from_montgomery: -.cfi_startproc - testl \$7,`($win64?"48(%rsp)":"%r9d")` - jz bn_from_mont8x - xor %eax,%eax - ret -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,\@function,6 -.align 32 -bn_from_mont8x: -.cfi_startproc - .byte 0x67 - mov %rsp,%rax -.cfi_def_cfa_register %rax - push %rbx -.cfi_push %rbx - push %rbp -.cfi_push %rbp - push %r12 -.cfi_push %r12 - push %r13 -.cfi_push %r13 - push %r14 -.cfi_push %r14 - push %r15 -.cfi_push %r15 -.Lfrom_prologue: - - shl \$3,${num}d # convert $num to bytes - lea ($num,$num,2),%r10 # 3*$num in bytes - neg $num - mov ($n0),$n0 # *n0 - - ############################################################## - # Ensure that stack frame doesn't alias with $rptr+3*$num - # modulo 4096, which covers ret[num], am[num] and n[num] - # (see bn_exp.c). The stack is allocated to aligned with - # bn_power5's frame, and as bn_from_montgomery happens to be - # last operation, we use the opportunity to cleanse it. - # - lea -320(%rsp,$num,2),%r11 - mov %rsp,%rbp - sub $rptr,%r11 - and \$4095,%r11 - cmp %r11,%r10 - jb .Lfrom_sp_alt - sub %r11,%rbp # align with $aptr - lea -320(%rbp,$num,2),%rbp # future alloca(frame+2*$num*8+256) - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - lea 4096-320(,$num,2),%r10 - lea -320(%rbp,$num,2),%rbp # future alloca(frame+2*$num*8+256) - sub %r10,%r11 - mov \$0,%r10 - cmovc %r10,%r11 - sub %r11,%rbp -.Lfrom_sp_done: - and \$-64,%rbp - mov %rsp,%r11 - sub %rbp,%r11 - and \$-4096,%r11 - lea (%rbp,%r11),%rsp - mov (%rsp),%r10 - cmp %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - lea -4096(%rsp),%rsp - mov (%rsp),%r10 - cmp %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - mov $num,%r10 - neg $num - - ############################################################## - # Stack layout - # - # +0 saved $num, used in reduction section - # +8 &t[2*$num], used in reduction section - # +32 saved *n0 - # +40 saved %rsp - # +48 t[2*$num] - # - mov $n0, 32(%rsp) - mov %rax, 40(%rsp) # save original %rsp -.cfi_cfa_expression %rsp+40,deref,+8 -.Lfrom_body: - mov $num,%r11 - lea 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu ($aptr),%xmm1 - movdqu 16($aptr),%xmm2 - movdqu 32($aptr),%xmm3 - movdqa %xmm0,(%rax,$num) - movdqu 48($aptr),%xmm4 - movdqa %xmm0,16(%rax,$num) - .byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 # lea 64($aptr),$aptr - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,$num) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,$num) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - lea 64(%rax),%rax - sub \$64,%r11 - jnz .Lmul_by_1 - - movq $rptr,%xmm1 - movq $nptr,%xmm2 - .byte 0x67 - mov $nptr,%rbp - movq %r10, %xmm3 # -num -___ -$code.=<<___ if ($addx); - mov OPENSSL_ia32cap_P+8(%rip),%r11d - and \$0x80108,%r11d - cmp \$0x80108,%r11d # check for AD*X+BMI2+BMI1 - jne .Lfrom_mont_nox - - lea (%rax,$num),$rptr - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - lea 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: -___ -$code.=<<___; - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - lea 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - mov 40(%rsp),%rsi # restore %rsp -.cfi_def_cfa %rsi,8 - movdqa %xmm0,16*0(%rax) - movdqa %xmm0,16*1(%rax) - movdqa %xmm0,16*2(%rax) - movdqa %xmm0,16*3(%rax) - lea 16*4(%rax),%rax - sub \$32,$num - jnz .Lfrom_mont_zero - - mov \$1,%rax - mov -48(%rsi),%r15 -.cfi_restore %r15 - mov -40(%rsi),%r14 -.cfi_restore %r14 - mov -32(%rsi),%r13 -.cfi_restore %r13 - mov -24(%rsi),%r12 -.cfi_restore %r12 - mov -16(%rsi),%rbp -.cfi_restore %rbp - mov -8(%rsi),%rbx -.cfi_restore %rbx - lea (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - ret -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x -___ -} }}} if ($addx) {{{ @@ -3894,10 +3707,6 @@ .rva .LSEH_begin_bn_power5 .rva .LSEH_end_bn_power5 .rva .LSEH_info_bn_power5 - - .rva .LSEH_begin_bn_from_mont8x - .rva .LSEH_end_bn_from_mont8x - .rva .LSEH_info_bn_from_mont8x ___ $code.=<<___ if ($addx); .rva .LSEH_begin_bn_mulx4x_mont_gather5 @@ -3929,11 +3738,6 @@ .byte 9,0,0,0 .rva mul_handler .rva .Lpower5_prologue,.Lpower5_body,.Lpower5_epilogue # HandlerData[] -.align 8 -.LSEH_info_bn_from_mont8x: - .byte 9,0,0,0 - .rva mul_handler - .rva .Lfrom_prologue,.Lfrom_body,.Lfrom_epilogue # HandlerData[] ___ $code.=<<___ if ($addx); .align 8 diff --git a/deps/openssl/openssl/crypto/bn/bn_exp.c b/deps/openssl/openssl/crypto/bn/bn_exp.c index 8c54ab005ca681..e21dcff027c5d3 100644 --- a/deps/openssl/openssl/crypto/bn/bn_exp.c +++ b/deps/openssl/openssl/crypto/bn/bn_exp.c @@ -900,14 +900,21 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, #if defined(OPENSSL_BN_ASM_MONT5) if (window == 5 && top > 1) { /* - * This optimization uses ideas from http://eprint.iacr.org/2011/239, - * specifically optimization of cache-timing attack countermeasures - * and pre-computation optimization. - */ - - /* - * Dedicated window==4 case improves 512-bit RSA sign by ~15%, but as - * 512-bit RSA is hardly relevant, we omit it to spare size... + * This optimization uses ideas from https://eprint.iacr.org/2011/239, + * specifically optimization of cache-timing attack countermeasures, + * pre-computation optimization, and Almost Montgomery Multiplication. + * + * The paper discusses a 4-bit window to optimize 512-bit modular + * exponentiation, used in RSA-1024 with CRT, but RSA-1024 is no longer + * important. + * + * |bn_mul_mont_gather5| and |bn_power5| implement the "almost" + * reduction variant, so the values here may not be fully reduced. + * They are bounded by R (i.e. they fit in |top| words), not |m|. + * Additionally, we pass these "almost" reduced inputs into + * |bn_mul_mont|, which implements the normal reduction variant. + * Given those inputs, |bn_mul_mont| may not give reduced + * output, but it will still produce "almost" reduced output. */ void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap, const void *table, const BN_ULONG *np, @@ -919,9 +926,6 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, const void *table, const BN_ULONG *np, const BN_ULONG *n0, int num, int power); int bn_get_bits5(const BN_ULONG *ap, int off); - int bn_from_montgomery(BN_ULONG *rp, const BN_ULONG *ap, - const BN_ULONG *not_used, const BN_ULONG *np, - const BN_ULONG *n0, int num); BN_ULONG *n0 = mont->n0, *np; @@ -1010,14 +1014,18 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, } } - ret = bn_from_montgomery(tmp.d, tmp.d, NULL, np, n0, top); tmp.top = top; - bn_correct_top(&tmp); - if (ret) { - if (!BN_copy(rr, &tmp)) - ret = 0; - goto err; /* non-zero ret means it's not error */ - } + /* + * The result is now in |tmp| in Montgomery form, but it may not be + * fully reduced. This is within bounds for |BN_from_montgomery| + * (tmp < R <= m*R) so it will, when converting from Montgomery form, + * produce a fully reduced result. + * + * This differs from Figure 2 of the paper, which uses AMM(h, 1) to + * convert from Montgomery form with unreduced output, followed by an + * extra reduction step. In the paper's terminology, we replace + * steps 9 and 10 with MM(h, 1). + */ } else #endif { diff --git a/deps/openssl/openssl/crypto/bn/rsaz_exp.c b/deps/openssl/openssl/crypto/bn/rsaz_exp.c index 22455b8a637459..a2ab58bbeb4cb6 100644 --- a/deps/openssl/openssl/crypto/bn/rsaz_exp.c +++ b/deps/openssl/openssl/crypto/bn/rsaz_exp.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2012, Intel Corporation. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use @@ -66,6 +66,7 @@ void RSAZ_1024_mod_exp_avx2(BN_ULONG result_norm[16], unsigned char *R2 = table_s; /* borrow */ int index; int wvalue; + BN_ULONG tmp[16]; if ((((size_t)p_str & 4095) + 320) >> 12) { result = p_str; @@ -237,7 +238,10 @@ void RSAZ_1024_mod_exp_avx2(BN_ULONG result_norm[16], rsaz_1024_red2norm_avx2(result_norm, result); + bn_reduce_once_in_place(result_norm, /*carry=*/0, m_norm, tmp, 16); + OPENSSL_cleanse(storage, sizeof(storage)); + OPENSSL_cleanse(tmp, sizeof(tmp)); } /* @@ -266,6 +270,7 @@ void RSAZ_512_mod_exp(BN_ULONG result[8], unsigned char *p_str = (unsigned char *)exponent; int index; unsigned int wvalue; + BN_ULONG tmp[8]; /* table[0] = 1_inv */ temp[0] = 0 - m[0]; @@ -309,7 +314,10 @@ void RSAZ_512_mod_exp(BN_ULONG result[8], /* from Montgomery */ rsaz_512_mul_by_one(result, temp, m, k0); + bn_reduce_once_in_place(result, /*carry=*/0, m, tmp, 8); + OPENSSL_cleanse(storage, sizeof(storage)); + OPENSSL_cleanse(tmp, sizeof(tmp)); } #endif diff --git a/deps/openssl/openssl/crypto/bn/rsaz_exp.h b/deps/openssl/openssl/crypto/bn/rsaz_exp.h index 88f65a4bae4612..1532a7e07179be 100644 --- a/deps/openssl/openssl/crypto/bn/rsaz_exp.h +++ b/deps/openssl/openssl/crypto/bn/rsaz_exp.h @@ -1,5 +1,5 @@ /* - * Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2012, Intel Corporation. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use @@ -22,6 +22,8 @@ # define RSAZ_ENABLED # include +# include "internal/constant_time.h" +# include "bn_local.h" void RSAZ_1024_mod_exp_avx2(BN_ULONG result[16], const BN_ULONG base_norm[16], @@ -35,6 +37,27 @@ void RSAZ_512_mod_exp(BN_ULONG result[8], const BN_ULONG m_norm[8], BN_ULONG k0, const BN_ULONG RR[8]); +static ossl_inline void bn_select_words(BN_ULONG *r, BN_ULONG mask, + const BN_ULONG *a, + const BN_ULONG *b, size_t num) +{ + size_t i; + + for (i = 0; i < num; i++) { + r[i] = constant_time_select_64(mask, a[i], b[i]); + } +} + +static ossl_inline BN_ULONG bn_reduce_once_in_place(BN_ULONG *r, + BN_ULONG carry, + const BN_ULONG *m, + BN_ULONG *tmp, size_t num) +{ + carry -= bn_sub_words(tmp, r, m, num); + bn_select_words(r, carry, r /* tmp < 0 */, tmp /* tmp >= 0 */, num); + return carry; +} + # endif #endif diff --git a/deps/openssl/openssl/crypto/ec/ec_asn1.c b/deps/openssl/openssl/crypto/ec/ec_asn1.c index 4335b3da1a54f0..34de7b2aabf704 100644 --- a/deps/openssl/openssl/crypto/ec/ec_asn1.c +++ b/deps/openssl/openssl/crypto/ec/ec_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -751,6 +751,16 @@ EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params) /* extract seed (optional) */ if (params->curve->seed != NULL) { + /* + * This happens for instance with + * fuzz/corpora/asn1/65cf44e85614c62f10cf3b7a7184c26293a19e4a + * and causes the OPENSSL_malloc below to choke on the + * zero length allocation request. + */ + if (params->curve->seed->length == 0) { + ECerr(EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS, EC_R_ASN1_ERROR); + goto err; + } OPENSSL_free(ret->seed); if ((ret->seed = OPENSSL_malloc(params->curve->seed->length)) == NULL) { ECerr(EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS, ERR_R_MALLOC_FAILURE); diff --git a/deps/openssl/openssl/crypto/ec/ec_key.c b/deps/openssl/openssl/crypto/ec/ec_key.c index 23efbd015ca475..3017f0936c0d78 100644 --- a/deps/openssl/openssl/crypto/ec/ec_key.c +++ b/deps/openssl/openssl/crypto/ec/ec_key.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -657,8 +657,7 @@ int ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len) ECerr(EC_F_EC_KEY_SIMPLE_OCT2PRIV, ERR_R_MALLOC_FAILURE); return 0; } - eckey->priv_key = BN_bin2bn(buf, len, eckey->priv_key); - if (eckey->priv_key == NULL) { + if (BN_bin2bn(buf, len, eckey->priv_key) == NULL) { ECerr(EC_F_EC_KEY_SIMPLE_OCT2PRIV, ERR_R_BN_LIB); return 0; } diff --git a/deps/openssl/openssl/crypto/x509/x509_cmp.c b/deps/openssl/openssl/crypto/x509/x509_cmp.c index 1d8d2d7b28e9ff..3724a118f3436a 100644 --- a/deps/openssl/openssl/crypto/x509/x509_cmp.c +++ b/deps/openssl/openssl/crypto/x509/x509_cmp.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -34,7 +34,7 @@ unsigned long X509_issuer_and_serial_hash(X509 *a) unsigned long ret = 0; EVP_MD_CTX *ctx = EVP_MD_CTX_new(); unsigned char md[16]; - char *f; + char *f = NULL; if (ctx == NULL) goto err; @@ -45,7 +45,6 @@ unsigned long X509_issuer_and_serial_hash(X509 *a) goto err; if (!EVP_DigestUpdate(ctx, (unsigned char *)f, strlen(f))) goto err; - OPENSSL_free(f); if (!EVP_DigestUpdate (ctx, (unsigned char *)a->cert_info.serialNumber.data, (unsigned long)a->cert_info.serialNumber.length)) @@ -56,6 +55,7 @@ unsigned long X509_issuer_and_serial_hash(X509 *a) ((unsigned long)md[2] << 16L) | ((unsigned long)md[3] << 24L) ) & 0xffffffffL; err: + OPENSSL_free(f); EVP_MD_CTX_free(ctx); return ret; } diff --git a/deps/openssl/openssl/crypto/x509/x_crl.c b/deps/openssl/openssl/crypto/x509/x_crl.c index c9762f9e2394af..df0041c0108ca6 100644 --- a/deps/openssl/openssl/crypto/x509/x_crl.c +++ b/deps/openssl/openssl/crypto/x509/x_crl.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -103,13 +103,17 @@ static int crl_set_issuers(X509_CRL *crl) if (gtmp) { gens = gtmp; - if (!crl->issuers) { + if (crl->issuers == NULL) { crl->issuers = sk_GENERAL_NAMES_new_null(); - if (!crl->issuers) + if (crl->issuers == NULL) { + GENERAL_NAMES_free(gtmp); return 0; + } } - if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp)) + if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp)) { + GENERAL_NAMES_free(gtmp); return 0; + } } rev->issuer = gens; @@ -255,7 +259,7 @@ static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, break; case ASN1_OP_FREE_POST: - if (crl->meth->crl_free) { + if (crl->meth != NULL && crl->meth->crl_free != NULL) { if (!crl->meth->crl_free(crl)) return 0; } diff --git a/deps/openssl/openssl/crypto/x509v3/v3_asid.c b/deps/openssl/openssl/crypto/x509v3/v3_asid.c index ac6857267291fb..8e9e919804d02e 100644 --- a/deps/openssl/openssl/crypto/x509v3/v3_asid.c +++ b/deps/openssl/openssl/crypto/x509v3/v3_asid.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -700,15 +700,28 @@ static int asid_contains(ASIdOrRanges *parent, ASIdOrRanges *child) */ int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b) { - return (a == NULL || - a == b || - (b != NULL && - !X509v3_asid_inherits(a) && - !X509v3_asid_inherits(b) && - asid_contains(b->asnum->u.asIdsOrRanges, - a->asnum->u.asIdsOrRanges) && - asid_contains(b->rdi->u.asIdsOrRanges, - a->rdi->u.asIdsOrRanges))); + int subset; + + if (a == NULL || a == b) + return 1; + + if (b == NULL) + return 0; + + if (X509v3_asid_inherits(a) || X509v3_asid_inherits(b)) + return 0; + + subset = a->asnum == NULL + || (b->asnum != NULL + && asid_contains(b->asnum->u.asIdsOrRanges, + a->asnum->u.asIdsOrRanges)); + if (!subset) + return 0; + + return a->rdi == NULL + || (b->rdi != NULL + && asid_contains(b->rdi->u.asIdsOrRanges, + a->rdi->u.asIdsOrRanges)); } /* diff --git a/deps/openssl/openssl/crypto/x509v3/v3_sxnet.c b/deps/openssl/openssl/crypto/x509v3/v3_sxnet.c index 89cda01be2a530..144e8bee84adcf 100644 --- a/deps/openssl/openssl/crypto/x509v3/v3_sxnet.c +++ b/deps/openssl/openssl/crypto/x509v3/v3_sxnet.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -57,12 +57,24 @@ IMPLEMENT_ASN1_FUNCTIONS(SXNET) static int sxnet_i2r(X509V3_EXT_METHOD *method, SXNET *sx, BIO *out, int indent) { - long v; + int64_t v; char *tmp; SXNETID *id; int i; - v = ASN1_INTEGER_get(sx->version); - BIO_printf(out, "%*sVersion: %ld (0x%lX)", indent, "", v + 1, v); + + /* + * Since we add 1 to the version number to display it, we don't support + * LONG_MAX since that would cause on overflow. + */ + if (!ASN1_INTEGER_get_int64(&v, sx->version) + || v >= LONG_MAX + || v < LONG_MIN) { + BIO_printf(out, "%*sVersion: ", indent, ""); + } else { + long vl = (long)v; + + BIO_printf(out, "%*sVersion: %ld (0x%lX)", indent, "", vl + 1, vl); + } for (i = 0; i < sk_SXNETID_num(sx->ids); i++) { id = sk_SXNETID_value(sx->ids, i); tmp = i2s_ASN1_INTEGER(NULL, id->zone); diff --git a/deps/openssl/openssl/doc/man3/BIO_f_base64.pod b/deps/openssl/openssl/doc/man3/BIO_f_base64.pod index c2c5309a6017f9..55ca5d4de30f6a 100644 --- a/deps/openssl/openssl/doc/man3/BIO_f_base64.pod +++ b/deps/openssl/openssl/doc/man3/BIO_f_base64.pod @@ -38,9 +38,8 @@ to flush the final block through the BIO. The flag BIO_FLAGS_BASE64_NO_NL can be set with BIO_set_flags(). For writing, it causes all data to be written on one line without newline at the end. -For reading, it forces the decoder to process the data regardless -of newlines. All newlines are ignored and the input does not need -to contain any newline at all. +For reading, it expects the data to be all on one line (with or +without a trailing newline). =head1 NOTES diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod index b42f2a499f138b..a7f2a53a80af76 100644 --- a/deps/openssl/openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod +++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod @@ -5,7 +5,9 @@ SSL_CTX_set0_verify_cert_store, SSL_CTX_set1_verify_cert_store, SSL_CTX_set0_chain_cert_store, SSL_CTX_set1_chain_cert_store, SSL_set0_verify_cert_store, SSL_set1_verify_cert_store, -SSL_set0_chain_cert_store, SSL_set1_chain_cert_store - set certificate +SSL_set0_chain_cert_store, SSL_set1_chain_cert_store, +SSL_CTX_get0_verify_cert_store, SSL_CTX_get0_chain_cert_store, +SSL_get0_verify_cert_store, SSL_get0_chain_cert_store - set certificate verification or chain store =head1 SYNOPSIS @@ -16,11 +18,15 @@ verification or chain store int SSL_CTX_set1_verify_cert_store(SSL_CTX *ctx, X509_STORE *st); int SSL_CTX_set0_chain_cert_store(SSL_CTX *ctx, X509_STORE *st); int SSL_CTX_set1_chain_cert_store(SSL_CTX *ctx, X509_STORE *st); + int SSL_CTX_get0_verify_cert_store(SSL_CTX *ctx, X509_STORE **st); + int SSL_CTX_get0_chain_cert_store(SSL_CTX *ctx, X509_STORE **st); int SSL_set0_verify_cert_store(SSL *ctx, X509_STORE *st); int SSL_set1_verify_cert_store(SSL *ctx, X509_STORE *st); int SSL_set0_chain_cert_store(SSL *ctx, X509_STORE *st); int SSL_set1_chain_cert_store(SSL *ctx, X509_STORE *st); + int SSL_get0_verify_cert_store(SSL *ctx, X509_STORE **st); + int SSL_get0_chain_cert_store(SSL *ctx, X509_STORE **st); =head1 DESCRIPTION @@ -34,6 +40,11 @@ SSL_set0_verify_cert_store(), SSL_set1_verify_cert_store(), SSL_set0_chain_cert_store() and SSL_set1_chain_cert_store() are similar except they apply to SSL structure B. +SSL_CTX_get0_verify_chain_store(), SSL_get0_verify_chain_store(), +SSL_CTX_get0_chain_cert_store() and SSL_get0_chain_cert_store() retrieve the +objects previously set via the above calls. A pointer to the object (or NULL if +no such object has been set) is written to B<*st>. + All these functions are implemented as macros. Those containing a B<1> increment the reference count of the supplied store so it must be freed at some point after the operation. Those containing a B<0> do @@ -90,7 +101,7 @@ These functions were added in OpenSSL 1.0.2. =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h deleted file mode 100644 index 79400c6472a49c..00000000000000 --- a/deps/openssl/openssl/include/crypto/bn_conf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/bn_conf.h" diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h deleted file mode 100644 index e7f2afa9872320..00000000000000 --- a/deps/openssl/openssl/include/crypto/dso_conf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/dso_conf.h" diff --git a/deps/openssl/openssl/include/openssl/opensslconf.h b/deps/openssl/openssl/include/openssl/opensslconf.h deleted file mode 100644 index 76c99d433ab886..00000000000000 --- a/deps/openssl/openssl/include/openssl/opensslconf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../config/opensslconf.h" diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h index 9c5cabb19d22b6..d54a49cafc3f08 100644 --- a/deps/openssl/openssl/include/openssl/opensslv.h +++ b/deps/openssl/openssl/include/openssl/opensslv.h @@ -39,9 +39,8 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ - -# define OPENSSL_VERSION_NUMBER 0x101010ffL -# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1o+quic 3 May 2022" +# define OPENSSL_VERSION_NUMBER 0x1010110fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1p+quic 21 Jun 2022" /*- * The macros below are to be used for shared library (.so, .dll, ...) diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h index 17bd0bc2c9c9ce..63ee3baae74261 100644 --- a/deps/openssl/openssl/include/openssl/ssl.h +++ b/deps/openssl/openssl/include/openssl/ssl.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -1305,6 +1305,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_MAX_PROTO_VERSION 131 # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 # define SSL_CERT_SET_FIRST 1 # define SSL_CERT_SET_NEXT 2 # define SSL_CERT_SET_SERVER 3 @@ -1360,10 +1362,14 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) # define SSL_CTX_set1_verify_cert_store(ctx,st) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) # define SSL_CTX_set0_chain_cert_store(ctx,st) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) # define SSL_CTX_set1_chain_cert_store(ctx,st) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) # define SSL_set0_chain(s,sk) \ SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) # define SSL_set1_chain(s,sk) \ @@ -1386,10 +1392,14 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) # define SSL_set1_verify_cert_store(s,st) \ SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +#define SSL_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) # define SSL_set0_chain_cert_store(s,st) \ SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) # define SSL_set1_chain_cert_store(s,st) \ SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +#define SSL_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ diff --git a/deps/openssl/openssl/ssl/record/ssl3_record.c b/deps/openssl/openssl/ssl/record/ssl3_record.c index f158544789bb56..47c7369ed54993 100644 --- a/deps/openssl/openssl/ssl/record/ssl3_record.c +++ b/deps/openssl/openssl/ssl/record/ssl3_record.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1532,6 +1532,7 @@ int ssl3_cbc_copy_mac(unsigned char *out, #if defined(CBC_MAC_ROTATE_IN_PLACE) unsigned char rotated_mac_buf[64 + EVP_MAX_MD_SIZE]; unsigned char *rotated_mac; + char aux1, aux2, aux3, mask; #else unsigned char rotated_mac[EVP_MAX_MD_SIZE]; #endif @@ -1581,9 +1582,16 @@ int ssl3_cbc_copy_mac(unsigned char *out, #if defined(CBC_MAC_ROTATE_IN_PLACE) j = 0; for (i = 0; i < md_size; i++) { - /* in case cache-line is 32 bytes, touch second line */ - ((volatile unsigned char *)rotated_mac)[rotate_offset ^ 32]; - out[j++] = rotated_mac[rotate_offset++]; + /* + * in case cache-line is 32 bytes, + * load from both lines and select appropriately + */ + aux1 = rotated_mac[rotate_offset & ~32]; + aux2 = rotated_mac[rotate_offset | 32]; + mask = constant_time_eq_8(rotate_offset & ~32, rotate_offset); + aux3 = constant_time_select_8(mask, aux1, aux2); + out[j++] = aux3; + rotate_offset++; rotate_offset &= constant_time_lt_s(rotate_offset, md_size); } #else diff --git a/deps/openssl/openssl/ssl/s3_lib.c b/deps/openssl/openssl/ssl/s3_lib.c index e4cf007f82a597..32f9b257106b2c 100644 --- a/deps/openssl/openssl/ssl/s3_lib.c +++ b/deps/openssl/openssl/ssl/s3_lib.c @@ -3676,6 +3676,12 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) case SSL_CTRL_SET_CHAIN_CERT_STORE: return ssl_cert_set_cert_store(s->cert, parg, 1, larg); + case SSL_CTRL_GET_VERIFY_CERT_STORE: + return ssl_cert_get_cert_store(s->cert, parg, 0); + + case SSL_CTRL_GET_CHAIN_CERT_STORE: + return ssl_cert_get_cert_store(s->cert, parg, 1); + case SSL_CTRL_GET_PEER_SIGNATURE_NID: if (s->s3->tmp.peer_sigalg == NULL) return 0; @@ -3949,6 +3955,12 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) case SSL_CTRL_SET_CHAIN_CERT_STORE: return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg); + case SSL_CTRL_GET_VERIFY_CERT_STORE: + return ssl_cert_get_cert_store(ctx->cert, parg, 0); + + case SSL_CTRL_GET_CHAIN_CERT_STORE: + return ssl_cert_get_cert_store(ctx->cert, parg, 1); + /* A Thawte special :-) */ case SSL_CTRL_EXTRA_CHAIN_CERT: if (ctx->extra_certs == NULL) { diff --git a/deps/openssl/openssl/ssl/ssl_cert.c b/deps/openssl/openssl/ssl/ssl_cert.c index eba96b207eee3a..b615e7048da4f5 100644 --- a/deps/openssl/openssl/ssl/ssl_cert.c +++ b/deps/openssl/openssl/ssl/ssl_cert.c @@ -876,6 +876,12 @@ int ssl_cert_set_cert_store(CERT *c, X509_STORE *store, int chain, int ref) return 1; } +int ssl_cert_get_cert_store(CERT *c, X509_STORE **pstore, int chain) +{ + *pstore = (chain ? c->chain_store : c->verify_store); + return 1; +} + int ssl_get_security_level_bits(const SSL *s, const SSL_CTX *ctx, int *levelp) { int level; diff --git a/deps/openssl/openssl/ssl/ssl_local.h b/deps/openssl/openssl/ssl/ssl_local.h index 5fb569b66ba07d..91e0fd78c50819 100644 --- a/deps/openssl/openssl/ssl/ssl_local.h +++ b/deps/openssl/openssl/ssl/ssl_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -2359,6 +2359,7 @@ __owur int ssl_verify_cert_chain(SSL *s, STACK_OF(X509) *sk); __owur int ssl_build_cert_chain(SSL *s, SSL_CTX *ctx, int flags); __owur int ssl_cert_set_cert_store(CERT *c, X509_STORE *store, int chain, int ref); +__owur int ssl_cert_get_cert_store(CERT *c, X509_STORE **pstore, int chain); __owur int ssl_security(const SSL *s, int op, int bits, int nid, void *other); __owur int ssl_ctx_security(const SSL_CTX *ctx, int op, int bits, int nid, diff --git a/deps/openssl/openssl/ssl/statem/extensions_clnt.c b/deps/openssl/openssl/ssl/statem/extensions_clnt.c index ae0d074b474093..a5b81eef805949 100644 --- a/deps/openssl/openssl/ssl/statem/extensions_clnt.c +++ b/deps/openssl/openssl/ssl/statem/extensions_clnt.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -118,6 +118,8 @@ static int use_ecc(SSL *s) int i, end, ret = 0; unsigned long alg_k, alg_a; STACK_OF(SSL_CIPHER) *cipher_stack = NULL; + const uint16_t *pgroups = NULL; + size_t num_groups, j; /* See if we support any ECC ciphersuites */ if (s->version == SSL3_VERSION) @@ -139,7 +141,19 @@ static int use_ecc(SSL *s) } sk_SSL_CIPHER_free(cipher_stack); - return ret; + if (!ret) + return 0; + + /* Check we have at least one EC supported group */ + tls1_get_supported_groups(s, &pgroups, &num_groups); + for (j = 0; j < num_groups; j++) { + uint16_t ctmp = pgroups[j]; + + if (tls_curve_allowed(s, ctmp, SSL_SECOP_CURVE_SUPPORTED)) + return 1; + } + + return 0; } EXT_RETURN tls_construct_ctos_ec_pt_formats(SSL *s, WPACKET *pkt, diff --git a/deps/openssl/openssl/ssl/t1_lib.c b/deps/openssl/openssl/ssl/t1_lib.c index b1d3add1874301..5f657f888e0db0 100644 --- a/deps/openssl/openssl/ssl/t1_lib.c +++ b/deps/openssl/openssl/ssl/t1_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -2369,22 +2369,20 @@ int tls1_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain, ca_dn = s->s3->tmp.peer_ca_names; - if (!sk_X509_NAME_num(ca_dn)) + if (ca_dn == NULL + || sk_X509_NAME_num(ca_dn) == 0 + || ssl_check_ca_name(ca_dn, x)) rv |= CERT_PKEY_ISSUER_NAME; - - if (!(rv & CERT_PKEY_ISSUER_NAME)) { - if (ssl_check_ca_name(ca_dn, x)) - rv |= CERT_PKEY_ISSUER_NAME; - } - if (!(rv & CERT_PKEY_ISSUER_NAME)) { + else for (i = 0; i < sk_X509_num(chain); i++) { X509 *xtmp = sk_X509_value(chain, i); + if (ssl_check_ca_name(ca_dn, xtmp)) { rv |= CERT_PKEY_ISSUER_NAME; break; } } - } + if (!check_flags && !(rv & CERT_PKEY_ISSUER_NAME)) goto end; } else @@ -2555,6 +2553,8 @@ int ssl_security_cert_chain(SSL *s, STACK_OF(X509) *sk, X509 *x, int vfy) int rv, start_idx, i; if (x == NULL) { x = sk_X509_value(sk, 0); + if (x == NULL) + return ERR_R_INTERNAL_ERROR; start_idx = 1; } else start_idx = 0; diff --git a/deps/openssl/openssl/test/certs/embeddedSCTs1-key.pem b/deps/openssl/openssl/test/certs/embeddedSCTs1-key.pem index e3e66d55c51060..28dd206dbe8dd5 100644 --- a/deps/openssl/openssl/test/certs/embeddedSCTs1-key.pem +++ b/deps/openssl/openssl/test/certs/embeddedSCTs1-key.pem @@ -1,15 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC+75jnwmh3rjhfdTJaDB0ym+3xj6r015a/BH634c4VyVui+A7k -WL19uG+KSyUhkaeb1wDDjpwDibRc1NyaEgqyHgy0HNDnKAWkEM2cW9tdSSdyba8X -EPYBhzd+olsaHjnu0LiBGdwVTcaPfajjDK8VijPmyVCfSgWwFAn/Xdh+tQIDAQAB -AoGAK/daG0vt6Fkqy/hdrtSJSKUVRoGRmS2nnba4Qzlwzh1+x2kdbMFuaOu2a37g -PvmeQclheKZ3EG1+Jb4yShwLcBCV6pkRJhOKuhvqGnjngr6uBH4gMCjpZVj7GDMf -flYHhdJCs3Cz/TY0wKN3o1Fldil2DHR/AEOc1nImeSp5/EUCQQDjKS3W957kYtTU -X5BeRjvg03Ug8tJq6IFuhTFvUJ+XQ5bAc0DmxAbQVKqRS7Wje59zTknVvS+MFdeQ -pz4dGuV7AkEA1y0X2yarIls+0A/S1uwkvwRTIkfS+QwFJ1zVya8sApRdKAcidIzA -b70hkKLilU9+LrXg5iZdFp8l752qJiw9jwJAXjItN/7mfH4fExGto+or2kbVQxxt -9LcFNPc2UJp2ExuL37HrL8YJrUnukOF8KJaSwBWuuFsC5GwKP4maUCdfEQJAUwBR -83c3DEmmMRvpeH4erpA8gTyzZN3+HvDwhpvLnjMcvBQEdnDUykVqbSBnxrCjO+Fs -n1qtDczWFVf8Cj2GgQJAQ14Awx32Cn9sF+3M+sEVtlAf6CqiEbkYeYdSCbsplMmZ -1UoaxiwXY3z+B7epsRnnPR3KaceAlAxw2/zQJMFNOQ== +MIIEpQIBAAKCAQEAuIjpA4/iCpDA2mjywI5zG6IBX6bNcRQYDsB7Cv0VonNXtJBw +XxMENP4jVpvEmWpJ5iMBknGHV+XWBkngYapczIsY4LGn6aMU6ySABBVQpNOQSRfT +48xGGPR9mzOBG/yplmpFOVq1j+b65lskvAXKYaLFpFn3oY/pBSdcCNBP8LypVXAJ +b3IqEXsBL/ErgHG9bgIRP8VxBAaryCz77kLzAXkfHL2LfSGIfNONyEKB3xI94S4L +eouOSoWL1VkEfJs87vG4G5xoXw3KOHyiueQUUlMnu8p+Bx0xPVKPEsLje3R9k0rG +a5ca7dXAn9UypKKp25x4NXpnjGX5txVEYfNvqQIDAQABAoIBAE0zqhh9Z5n3+Vbm +tTht4CZdXqm/xQ9b0rzJNjDgtN5j1vuJuhlsgUQSVoJzZIqydvw7BPtZV8AkPagf +3Cm/9lb0kpHegVsziRrfCFes+zIZ+LE7sMAKxADIuIvnvkoRKHnvN8rI8lCj16/r +zbCD06mJSZp6sSj8ZgZr8wsU63zRGt1TeGM67uVW4agphfzuKGlXstPLsSMwknpF +nxFS2TYbitxa9oH76oCpEk5fywYsYgUP4TdzOzfVAgMzNSu0FobvWl0CECB+G3RQ +XQ5VWbYkFoj5XbE5kYz6sYHMQWL1NQpglUp+tAQ1T8Nca0CvbSpD77doRGm7UqYw +ziVQKokCgYEA6BtHwzyD1PHdAYtOcy7djrpnIMaiisSxEtMhctoxg8Vr2ePEvMpZ +S1ka8A1Pa9GzjaUk+VWKWsTf+VkmMHGtpB1sv8S7HjujlEmeQe7p8EltjstvLDmi +BhAA7ixvZpXXjQV4GCVdUVu0na6gFGGueZb2FHEXB8j1amVwleJj2lcCgYEAy4f3 +2wXqJfz15+YdJPpG9BbH9d/plKJm5ID3p2ojAGo5qvVuIJMNJA4elcfHDwzCWVmn +MtR/WwtxYVVmy1BAnmk6HPSYc3CStvv1800vqN3fyJWtZ1P+8WBVZWZzIQdjdiaU +JSRevPnjQGc+SAZQQIk1yVclbz5790yuXsdIxf8CgYEApqlABC5lsvfga4Vt1UMn +j57FAkHe4KmPRCcZ83A88ZNGd/QWhkD9kR7wOsIz7wVqWiDkxavoZnjLIi4jP9HA +jwEZ3zER8wl70bRy0IEOtZzj8A6fSzAu6Q+Au4RokU6yse3lZ+EcepjQvhBvnXLu +ZxxAojj6AnsHzVf9WYJvlI0CgYEAoATIw/TEgRV/KNHs/BOiEWqP0Co5dVix2Nnk +3EVAO6VIrbbE3OuAm2ZWeaBWSujXLHSmVfpoHubCP6prZVI1W9aTkAxmh+xsDV3P +o3h+DiBTP1seuGx7tr7spQqFXeR3OH9gXktYCO/W0d3aQ7pjAjpehWv0zJ+ty2MI +fQ/lkXUCgYEAgbP+P5UmY7Fqm/mi6TprEJ/eYktji4Ne11GDKGFQCfjF5RdKhdw1 +5+elGhZes+cpzu5Ak6zBDu4bviT+tRTWJu5lVLEzlHHv4nAU7Ks5Aj67ApH21AnP +RtlATdhWOt5Dkdq1WSpDfz5bvWgvyBx9D66dSmQdbKKe2dH327eQll4= -----END RSA PRIVATE KEY----- diff --git a/deps/openssl/openssl/test/certs/embeddedSCTs1.pem b/deps/openssl/openssl/test/certs/embeddedSCTs1.pem index d1e85120a04389..d2a111fb823583 100644 --- a/deps/openssl/openssl/test/certs/embeddedSCTs1.pem +++ b/deps/openssl/openssl/test/certs/embeddedSCTs1.pem @@ -1,20 +1,21 @@ -----BEGIN CERTIFICATE----- -MIIDWTCCAsKgAwIBAgIBBzANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk +MIIDeDCCAuGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBVMQswCQYDVQQGEwJHQjEk MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX -YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw -MDAwMDBaMFIxCzAJBgNVBAYTAkdCMSEwHwYDVQQKExhDZXJ0aWZpY2F0ZSBUcmFu -c3BhcmVuY3kxDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGfMA0G -CSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+75jnwmh3rjhfdTJaDB0ym+3xj6r015a/ -BH634c4VyVui+A7kWL19uG+KSyUhkaeb1wDDjpwDibRc1NyaEgqyHgy0HNDnKAWk -EM2cW9tdSSdyba8XEPYBhzd+olsaHjnu0LiBGdwVTcaPfajjDK8VijPmyVCfSgWw -FAn/Xdh+tQIDAQABo4IBOjCCATYwHQYDVR0OBBYEFCAxVBryXAX/2GWLaEN5T16Q -Nve0MH0GA1UdIwR2MHSAFF+diA3Ic+ZU1PgN2OawwSS0R8NVoVmkVzBVMQswCQYD -VQQGEwJHQjEkMCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4w -DAYDVQQIEwVXYWxlczEQMA4GA1UEBxMHRXJ3IFdlboIBADAJBgNVHRMEAjAAMIGK -BgorBgEEAdZ5AgQCBHwEegB4AHYA3xwuwRUAlFJHqWFoMl3cXHlZ6PfG04j8AC4L -vT9012QAAAE92yffkwAABAMARzBFAiBIL2dRrzXbplQ2vh/WZA89v5pBQpSVkkUw -KI+j5eI+BgIhAOTtwNs6xXKx4vXoq2poBlOYfc9BAn3+/6EFUZ2J7b8IMA0GCSqG -SIb3DQEBBQUAA4GBAIoMS+8JnUeSea+goo5on5HhxEIb4tJpoupspOghXd7dyhUE -oR58h8S3foDw6XkDUmjyfKIOFmgErlVvMWmB+Wo5Srer/T4lWsAERRP+dlcMZ5Wr -5HAxM9MD+J86+mu8/FFzGd/ZW5NCQSEfY0A1w9B4MHpoxgdaLiDInza4kQyg +YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAgFw0yMDAxMjUxMTUwMTNaGA8yMTIwMDEy +NjExNTAxM1owGTEXMBUGA1UEAwwOc2VydmVyLmV4YW1wbGUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC4iOkDj+IKkMDaaPLAjnMbogFfps1xFBgOwHsK +/RWic1e0kHBfEwQ0/iNWm8SZaknmIwGScYdX5dYGSeBhqlzMixjgsafpoxTrJIAE +FVCk05BJF9PjzEYY9H2bM4Eb/KmWakU5WrWP5vrmWyS8BcphosWkWfehj+kFJ1wI +0E/wvKlVcAlvcioRewEv8SuAcb1uAhE/xXEEBqvILPvuQvMBeR8cvYt9IYh8043I +QoHfEj3hLgt6i45KhYvVWQR8mzzu8bgbnGhfDco4fKK55BRSUye7yn4HHTE9Uo8S +wuN7dH2TSsZrlxrt1cCf1TKkoqnbnHg1emeMZfm3FURh82+pAgMBAAGjggEMMIIB +CDAdBgNVHQ4EFgQUtMa8XD5ylrF9AqCdnPEhXa63H2owHwYDVR0jBBgwFoAUX52I +Dchz5lTU+A3Y5rDBJLRHw1UwCQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcD +ATCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN8cLsEVAJRSR6lhaDJd3Fx5Wej3xtOI +/AAuC70/dNdkAAABb15m6AAAAAQDAEcwRQIgfDPo8RArm/vcSEZ608Q1u+XQ55QB +u67SZEuZxLpbUM0CIQDRsgcTud4PDy8Cgg+lHeAS7UxgSKBbWAznYOuorwNewzAZ +BgNVHREEEjAQgg5zZXJ2ZXIuZXhhbXBsZTANBgkqhkiG9w0BAQsFAAOBgQCWFKKR +RNkDRzB25NK07OLkbzebhnpKtbP4i3blRx1HAvTSamf/3uuHI7kfiPJorJymJpT1 +IuJvSVKyMu1qONWBimiBfiyGL7+le1izHEJIP5lVTbddfzSIBIvrlHHcWIOL3H+W +YT6yTEIzJuO07Xp61qnB1CE2TrinUWlyC46Zkw== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/certs/embeddedSCTs1.sct b/deps/openssl/openssl/test/certs/embeddedSCTs1.sct index 59362dcee1f46b..35c9eb9e3bedaf 100644 --- a/deps/openssl/openssl/test/certs/embeddedSCTs1.sct +++ b/deps/openssl/openssl/test/certs/embeddedSCTs1.sct @@ -2,11 +2,11 @@ Signed Certificate Timestamp: Version : v1 (0x0) Log ID : DF:1C:2E:C1:15:00:94:52:47:A9:61:68:32:5D:DC:5C: 79:59:E8:F7:C6:D3:88:FC:00:2E:0B:BD:3F:74:D7:64 - Timestamp : Apr 5 17:04:16.275 2013 GMT + Timestamp : Jan 1 00:00:00.000 2020 GMT Extensions: none Signature : ecdsa-with-SHA256 - 30:45:02:20:48:2F:67:51:AF:35:DB:A6:54:36:BE:1F: - D6:64:0F:3D:BF:9A:41:42:94:95:92:45:30:28:8F:A3: - E5:E2:3E:06:02:21:00:E4:ED:C0:DB:3A:C5:72:B1:E2: - F5:E8:AB:6A:68:06:53:98:7D:CF:41:02:7D:FE:FF:A1: - 05:51:9D:89:ED:BF:08 \ No newline at end of file + 30:45:02:20:7C:33:E8:F1:10:2B:9B:FB:DC:48:46:7A: + D3:C4:35:BB:E5:D0:E7:94:01:BB:AE:D2:64:4B:99:C4: + BA:5B:50:CD:02:21:00:D1:B2:07:13:B9:DE:0F:0F:2F: + 02:82:0F:A5:1D:E0:12:ED:4C:60:48:A0:5B:58:0C:E7: + 60:EB:A8:AF:03:5E:C3 \ No newline at end of file diff --git a/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer-key.pem b/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer-key.pem new file mode 100644 index 00000000000000..9326e38b1eb7b6 --- /dev/null +++ b/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7jHbrkVfT0PtLO1FuzsvR +yY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjPKDHM5nugSlojgZ88ujfm +JNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnLsvfP34b7arnRsQIDAQAB +AoGAJLR6xEJp+5IXRFlLn7WTkFvO0ddtxJ7bXhiIkTctyruyfqp7LF9Jv1G2m3PK +QPUtBc73w/GYkfnwIwdfJbOmPHL7XyEGHZYmEXgIgEtw6LXvAv0G5JpUnNwsSBfL +GfSQqI5Z5ytyzlJXkMcTGA2kTgNAYc73h4EnU+pwUnDPdAECQQD2aj+4LtYk1XPq +r3gjgI6MoGvgYJfPmAtZhxxVbhXQKciFUCAcBiwlQdHIdLWE9j65ctmZRWidKifr +4O4nz+TBAkEA3djNW/rTQq5fKZy+mCF1WYnIU/3yhJaptzRqLm7AHqe7+hdrGXJw ++mCtU8T3L/Ms8bH1yFBZhmkp1PbR8gl48QJAQo70YyWThiN5yfxXcQ96cZWrTdIJ +b3NcLXSHPLQdhDqlBQ1dfvRT3ERpC8IqfZ2d162kBPhwh3MpkVcSPQK0gQJAC/dY +xGBYKt2a9nSk9zG+0bCT5Kvq++ngh6hFHfINXNnxUsEWns3EeEzkrIMQTj7QqszN +lBt5aL2dawZRNrv6EQJBAOo4STF9KEwQG0HLC/ryh1FeB0OBA5yIepXze+eJVKei +T0cCECOQJKfWHEzYJYDJhyEFF/sYp9TXwKSDjOifrsU= +-----END RSA PRIVATE KEY----- diff --git a/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer.pem b/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer.pem index 1fa449d5a09816..6aa9455f09ed7e 100644 --- a/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer.pem +++ b/deps/openssl/openssl/test/certs/embeddedSCTs1_issuer.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC0DCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJHQjEk +MIIC0jCCAjugAwIBAgIBADANBgkqhkiG9w0BAQsFADBVMQswCQYDVQQGEwJHQjEk MCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENBMQ4wDAYDVQQIEwVX -YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAeFw0xMjA2MDEwMDAwMDBaFw0yMjA2MDEw -MDAwMDBaMFUxCzAJBgNVBAYTAkdCMSQwIgYDVQQKExtDZXJ0aWZpY2F0ZSBUcmFu -c3BhcmVuY3kgQ0ExDjAMBgNVBAgTBVdhbGVzMRAwDgYDVQQHEwdFcncgV2VuMIGf -MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVimhTYhCicRmTbneDIRgcKkATxtB7 -jHbrkVfT0PtLO1FuzsvRyY2RxS90P6tjXVUJnNE6uvMa5UFEJFGnTHgW8iQ8+EjP -KDHM5nugSlojgZ88ujfmJNnDvbKZuDnd/iYx0ss6hPx7srXFL8/BT/9Ab1zURmnL -svfP34b7arnRsQIDAQABo4GvMIGsMB0GA1UdDgQWBBRfnYgNyHPmVNT4DdjmsMEk -tEfDVTB9BgNVHSMEdjB0gBRfnYgNyHPmVNT4DdjmsMEktEfDVaFZpFcwVTELMAkG -A1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRyYW5zcGFyZW5jeSBDQTEO -MAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW6CAQAwDAYDVR0TBAUwAwEB -/zANBgkqhkiG9w0BAQUFAAOBgQAGCMxKbWTyIF4UbASydvkrDvqUpdryOvw4BmBt -OZDQoeojPUApV2lGOwRmYef6HReZFSCa6i4Kd1F2QRIn18ADB8dHDmFYT9czQiRy -f1HWkLxHqd81TbD26yWVXeGJPE3VICskovPkQNJ0tU4b03YmnKliibduyqQQkOFP -OwqULg== +YWxlczEQMA4GA1UEBxMHRXJ3IFdlbjAgFw0yMjA2MDExMDM4MDJaGA8yMTIyMDUw +ODEwMzgwMlowVTELMAkGA1UEBhMCR0IxJDAiBgNVBAoTG0NlcnRpZmljYXRlIFRy +YW5zcGFyZW5jeSBDQTEOMAwGA1UECBMFV2FsZXMxEDAOBgNVBAcTB0VydyBXZW4w +gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANWKaFNiEKJxGZNud4MhGBwqQBPG +0HuMduuRV9PQ+0s7UW7Oy9HJjZHFL3Q/q2NdVQmc0Tq68xrlQUQkUadMeBbyJDz4 +SM8oMczme6BKWiOBnzy6N+Yk2cO9spm4Od3+JjHSyzqE/HuytcUvz8FP/0BvXNRG +acuy98/fhvtqudGxAgMBAAGjga8wgawwHQYDVR0OBBYEFF+diA3Ic+ZU1PgN2Oaw +wSS0R8NVMH0GA1UdIwR2MHSAFF+diA3Ic+ZU1PgN2OawwSS0R8NVoVmkVzBVMQsw +CQYDVQQGEwJHQjEkMCIGA1UEChMbQ2VydGlmaWNhdGUgVHJhbnNwYXJlbmN5IENB +MQ4wDAYDVQQIEwVXYWxlczEQMA4GA1UEBxMHRXJ3IFdlboIBADAMBgNVHRMEBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4GBAD0aYh9OkFYfXV7kBfhrtD0PJG2U47OV/1qq ++uFpqB0S1WO06eJT0pzYf1ebUcxjBkajbJZm/FHT85VthZ1lFHsky87aFD8XlJCo +2IOhKOkvvWKPUdFLoO/ZVXqEVKkcsS1eXK1glFvb07eJZya3JVG0KdMhV2YoDg6c +Doud4XrO -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/ct_test.c b/deps/openssl/openssl/test/ct_test.c index 78d11ca98cf7ef..84f6bedddc836a 100644 --- a/deps/openssl/openssl/test/ct_test.c +++ b/deps/openssl/openssl/test/ct_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -63,7 +63,7 @@ static CT_TEST_FIXTURE *set_up(const char *const test_case_name) if (!TEST_ptr(fixture = OPENSSL_zalloc(sizeof(*fixture)))) goto end; fixture->test_case_name = test_case_name; - fixture->epoch_time_in_ms = 1473269626000ULL; /* Sep 7 17:33:46 2016 GMT */ + fixture->epoch_time_in_ms = 1580335307000ULL; /* Wed 29 Jan 2020 10:01:47 PM UTC */ if (!TEST_ptr(fixture->ctlog_store = CTLOG_STORE_new()) || !TEST_int_eq( CTLOG_STORE_load_default_file(fixture->ctlog_store), 1)) diff --git a/deps/openssl/openssl/test/recipes/10-test_bn_data/bnmod.txt b/deps/openssl/openssl/test/recipes/10-test_bn_data/bnmod.txt index 6c94a0f02524d0..edde03bd6294d6 100644 --- a/deps/openssl/openssl/test/recipes/10-test_bn_data/bnmod.txt +++ b/deps/openssl/openssl/test/recipes/10-test_bn_data/bnmod.txt @@ -2474,6 +2474,71 @@ A = 9025e6183706105e948b1b0edf922f9011b9e11887d70adb00b26f272b9e76a38f3099084d9c E = d7e6df5d755284929b986cd9b61c9c2c8843f24c711fbdbae1a468edcae159400943725570726cdc92b3ea94f9f206729516fdda83e31d815b0c7720e7598a91d992273e3bd8ac413b441d8f1dfe5aa7c3bf3ef573adc38292676217467731e6cf440a59611b8110af88d3e62f60209b513b01fbb69a097458ad02096b5e38f0 M = e4e784aa1fa88625a43ba0185a153a929663920be7fe674a4d33c943d3b898cff051482e7050a070cede53be5e89f31515772c7aea637576f99f82708f89d9e244f6ad3a24a02cbe5c0ff7bcf2dad5491f53db7c3f2698a7c41b44f086652f17bb05fe4c5c0a92433c34086b49d7e1825b28bab6c5a9bd0bc95b53d659afa0d7 +# The following inputs trigger an edge case between Montgomery reduction and the +# "almost" reduction variant from https://eprint.iacr.org/2011/239 +ModExp = 00 +A = 19c7bc9b97c6083cd7b8d1cd001452c9b67983247169c6532047eb7fc8933014dbf69fee7a358769f1429802c8ea89d4f9ca6ba6f368fbdb1fa5717b4a00 +E = bbc7e09147408571050e8d0c634682c5863b7e8a573626648902cff12e590c74f5a23ecce39732266bc15b8afbd6c48a48c83fbdc33947515cc0b6e4fb98ae2cd730e58f951fec8be7e2e3c74f4506c7fd7e29bdb28675fe8a59789ab1148e931a2ebd2d36f78bc241682a3d8083d8ff538858cd240c5a693936e5a391dc9d77118062a3f868c058440a4192267faaaba91112f45eee5842060febbf9353a6d3e7f7996573209136a5506062ea23d74067f08c613f3ff74bade25f8c3368e6dba84eae672eac11be1137fc514924fcab8c82e46d092bd047dcbadaa48c67a096ec1a04f392a8511e6acbad9954949b703e71ff837337b594055ae6f3c0fc154447a687c9ac8a2cdfd64a2e680c6ff21254735af7f5eb6b43f0bce86bda55a04143a991711081435ed4f4a89b23fc3a588022b7a8543db4bf5c8ac93603367c750ff2191f59a716340fab49bb7544759c8d846465eec1438e76395f73e7b5e945f31f1b87fefa854a0d208846eaab5fa27144fd039911608bab0eaee80f1d3553dfa2d9ba95268479b97a059613660df5ad79796e0b272244aca90ccc13449ec15c206eeed7b60405a4c5cfdf5da5d136c27fa9385d810ad198dfe794ffce9955e10520efea1e2eb794e379401b9affd863b9566ce941c4726755574a1b1946acf0090bfb93f37dd55f524485bbba7fa84b53addfde01ae1de9c57fe50d4b708dd0fa45d02af398b3d05c6d17f84c11e9aacdbe0b146cad6ddbd877731e26a17f3ebed459560d12ed7a6abc2ea6fe922e69d2622ef11b6b245b9ba8f0940faaa671a4beb727be5393a94dafaeff7221b29183e7418f4c5bb95a6a586c93dbc8ce0236d9dbe26c40513611b4141fed66599adbfb20fc30e09a4815e4159f65a6708f34584a7a77b3843941cd61a6917dcc3d07a3dfb5a2cb108bacea7e782f2111b4d22ecaaeff469ecd0da371df1ac5e9bf6df6ccba2d3a9f393d597499eaca2c206bfb81c3426c5fe45bcf16e38aecd246a319a1f37041c638b75a4839517e43a6d01bee7d85eaeedbce13cd15699d3ee42c7414cfed576590e4fb6ddb6edd3e1957efaf039bfe8b9dc75869b1f93abff15cae8b234161070fa3542303c2ed35ca66083d0ac299b81182317a2a3985269602b1fa1e822fcbda48e686d80b273f06b0a702ca7f42cbbbd2fc2b3601422c8bff6302eda3c61b293049636002649b16f3c1f0be2b6599d66493a4497cd795b10a2ab8220fafad24fa90e1bfcf39ecce337e705695c7a224bf9f445a287d6aab221341659ca4be7861f6ac4c9d33dac811e6 +M = 519b6e57781d40d897ec0c1b648d195526726b295438c9a70928ac25979563d72db91c8c42298a33b572edecdf40904c68a23337aa5341b56e92b0da5041 + +# To fully exercise BN_mod_exp_mont_consttime codepaths, we generate inputs at +# different bitwidths. rsaz-avx2.pl only runs at 1024-bit moduli, and +# x86_64-mont5.pl unrolls 8 64-bit words at a time, so we want to capture both +# multiples of 512- and non-multiples. Also include moduli that are not quite a +# full word. +# 512-bit +ModExp = 00 +A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 8f42c9e9e351ba9b32ab0cf69da43f4acf7028d19cff6e5059ea0e3fcc97c97f36a31470044737d4c0c933ac441ecb29e32c81401523afdac7de9c3fd8493c97 + +# 1024-bit +ModExp = 00 +A = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 9da8dc26fdf4d2e49833b240ee552beb7a6e251caa91bfb5d6cafaf8ed9461877fda8f6ac299036d35806bc1ae7872e54eaac1ec6bee6d02c6621a9cf8883b3abc33c49b3e601203e0e86ef8f0562412cc689ee2670704583909ca6d7774c9f9f9f4d77d37fedef9cb51d207cb629ec02fa03b526fd6594bfa8f2da71238a0b7 + +# 1025-bit +ModExp = 00 +A = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011 +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 010223abfdda02e84e11cec8ee7fc784fa135733935f7b9054bb70f1f06d234d76dcf3beed55c7f39e955dc1fef2b65009240fd02f7a1b27a78fc2867144bf666efb929856db9f671c356c4c67a068a70fe83c52eebda03668872fd270d0794f0771d217fb6b93b12529a944f7f0496a9158757c55b8ee14f803f1d2d887e2f561 + +# 1088-bit +ModExp = 00 +A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = e91f6d748773cb212a23aa348125615123b1800c9ea222c9374c757702ae4140fa333790ed8f6bf60a1d7dda65c2767cc5f33e32e333d19fbfb5a2b85795757c9ca070268763a618e9d33873d28a89bf88acd209efbb15b80cd33b92a6b3a682e1c91782fc24fb86ddff4f809219c977b54b99359094bbcc51dfe17b992ab24b74a17950ad754281 + +# 1472-bit +ModExp = 00 +A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = a8770362f4bfe4fc1ab0e52705c11a9b6ba235d5a5f22197c2d68e27ed18426ede3316af706aa79bcf943dbd51459eb15ae1f9386216b3f3a847f94440a65b97659bc5ba2adb67173714ecaa886c0b926d7a64ea45576f9d2171784ce7e801724d5b0abfd93357d538ea7ad3ad89a74f4660bdb66dfb5f684dcf00402e3cdf0ab58afd867c943c8f47b80268a789456aa7c50a619dd2f9f5e3f74b5d810f0f8dadbf4ad5b917cdcb156c4c132611c8b3b035118a9e03551f + +# 1536-bit +ModExp = 00 +A = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 878cd000778f927b2f1a4b8bac86efd282079a7ac0d25e09ffd2f72fbc282e65e233929d2457c7b1d63c56fb706cdfa04fb87e654c578c98d7cf59c2293dc5641086b68db4867105981daaf147a0ee91f6932ef064deae4142c19e58d50c0686f0eaf778be72450f89a98b4680bbc5ffab942195e44dd20616150fd1deca058068ca31ab2f861e99082588f17a2025bf5e536150142fca3187a259c791fc721430f24d7e338f8dc02e693a7e694d42775e80f7f7c03600b6ae86b4aba2b0e991 + +# 2048-bit +ModExp = 00 +A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 9f40a7535c561208ecb38e17c9336d9bc8484d335901b2cd42759cf03689227f6992f10cb6b586d767fbcdf30e9d82a0eda60d2694ccd0194fa96b50b56e0cdeec1951ea9e58b07e334a7f108841a0ab28256917fecea561388807ed124a17386a7a7b501f9cbf3404247a76948d0561e48137d3f9669e36f175731796aeaf78851f7d866917f661422186a4814aa35c066b5a90b9cfc918af769a9f0bb30c12581027df64ac328a0f07dbd20adb704479f6d0f233a131828c71bab19c3c34795ea4fb68aa632c6f688e5b3b84413c9031d8dc251003a590dec0dd09bfa6109ed4570701439b6f265b84ac2170c317357b5fbe5535e2bbdd93c1aacfdaa28c85 + +# 3072-bit +ModExp = 00 +A = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = c23dfd244a58a668d514498a705c8f8f548311b24f0f98b023d2d33632534c2ae948d6641d41fd7a29fbbd594bfc7fdd6e8162cbb3056af3075347b6fc8876458d33a9d0ffdbcdf482de0c73d1310fd8fa8f9f92dd0dbb0e2034e98a30f6c11b482f7476c5b593f673a322b1130daa4314e9074270dce1076436f0d56cf196afcbb235a9a7b3ac85b9062e85fc0e63a12c468c787019f6805f9faab64fc6a0babc80785d88740243f11366bffb40ccbe8b2bb7a99a2c8238a6f656bb0117d7b2602aa400f4d77de5f93c673f13264ca70de949454e3e3f261993c1aa427e8ef4f507af744f71f3b4aaf3c981d44cc1bfb1eb1151168762b242b740573df698e500d99612e17dc760f7b3bf7c235e39e81ad7edbe6c07dbb8b139745bb394d61cb799bcafec5de074932b0b2d74797e779ac8d81f63a2b2e9baa229dfaa7f90f34ffade1d2ad022a3407d35eb2d7477c6ae8ad100f6e95c05b4f947c1fabfb11a17add384e6b4cd3a02fd9b43f46805c6c74e366b74aa3b766be7a5fbbd67fa81 + +# 4096-bit +ModExp = 00 +A = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +E = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +M = 8030411ecbddcb0fe4e76fd6b5bf542e8b015d1610cf96130ded12ba2cda0641bd9692080f218ea8b0d751845b519d95b843542ec8d2a07f1f93afe3189b69a4f35c983011c7f7928c3df458cc3eae85c36e6934a4b1bc0a67c8a521de336642c49e10a7ffa8d0af911aacc19e3900449161940f139220e099a150dcaf0ff96ffff6e726c1ac139969103cf6a828ac3adf0301506aa02787b4f570d5dde53a34acab8fec6fa94760abf16ee99954371ad65a6e899daab87b95811d069404991de9abe064ebbddf886e970f10d260c899dda940191a82d4c8bd36651363aff5493f4f59e700007dcadf37ebea7fcfd7600d16617ffea0d9ae659446d851d93c564e50e558f734c894d735fa273770703dab62844d9f01badf632f3d14a00f739c022c9be95f54e9cea46ec6da7cb11f4602e06962951c48204726b7f120ddbd0eb3566dc8d1e6f195a9196e96db33322d088b43aecffe9b4df182dd016aca0bd14f1c56cd1a18b89165c027029862b09ffd78e92ab614349c4fd67f49cb12cd33d0728930d0538bda57acef1365a73cc8fbac7d463b9e3c3bae0bb6224b080cdb8b5cd47d546d53111fdc22b7ff679bcfe27192920ee163b2be337d8cccc93b4de7d2d31934b9c0e97af291dcc1135b4a473bd37114eec3ba75c411887b57799d3188e7353f33a4d31735ebfc9fcfc044985148dd96da3876a5ab7ea7a404b411 # These test vectors satisfy (ModSqrt * ModSqrt) mod P = A mod P with P a prime. # ModSqrt is in [0, (P-1)/2]. diff --git a/deps/openssl/openssl/test/recipes/80-test_ssl_new.t b/deps/openssl/openssl/test/recipes/80-test_ssl_new.t index 81d8f59a70b4a1..3d281091d15e20 100644 --- a/deps/openssl/openssl/test/recipes/80-test_ssl_new.t +++ b/deps/openssl/openssl/test/recipes/80-test_ssl_new.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -28,7 +28,7 @@ map { s/\^// } @conf_files if $^O eq "VMS"; # We hard-code the number of tests to double-check that the globbing above # finds all files as expected. -plan tests => 29; # = scalar @conf_srcs +plan tests => 30; # = scalar @conf_srcs # Some test results depend on the configuration of enabled protocols. We only # verify generated sources in the default configuration. @@ -70,6 +70,8 @@ my %conf_dependent_tests = ( "25-cipher.conf" => disabled("poly1305") || disabled("chacha"), "27-ticket-appdata.conf" => !$is_default_tls, "28-seclevel.conf" => disabled("tls1_2") || $no_ec, + "30-supported-groups.conf" => disabled("tls1_2") || disabled("tls1_3") + || $no_ec || $no_ec2m ); # Add your test here if it should be skipped for some compile-time diff --git a/deps/openssl/openssl/test/smime-certs/mksmime-certs.sh b/deps/openssl/openssl/test/smime-certs/mksmime-certs.sh index c98e164b18712d..e33fac97bc3974 100644 --- a/deps/openssl/openssl/test/smime-certs/mksmime-certs.sh +++ b/deps/openssl/openssl/test/smime-certs/mksmime-certs.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -15,23 +15,23 @@ export OPENSSL_CONF # Root CA: create certificate directly CN="Test S/MIME RSA Root" $OPENSSL req -config ca.cnf -x509 -nodes \ - -keyout smroot.pem -out smroot.pem -newkey rsa:2048 -days 3650 + -keyout smroot.pem -out smroot.pem -newkey rsa:2048 -days 36501 # EE RSA certificates: create request first CN="Test S/MIME EE RSA #1" $OPENSSL req -config ca.cnf -nodes \ -keyout smrsa1.pem -out req.pem -newkey rsa:2048 # Sign request: end entity extensions -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smrsa1.pem CN="Test S/MIME EE RSA #2" $OPENSSL req -config ca.cnf -nodes \ -keyout smrsa2.pem -out req.pem -newkey rsa:2048 -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smrsa2.pem CN="Test S/MIME EE RSA #3" $OPENSSL req -config ca.cnf -nodes \ -keyout smrsa3.pem -out req.pem -newkey rsa:2048 -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smrsa3.pem # Create DSA parameters @@ -40,15 +40,15 @@ $OPENSSL dsaparam -out dsap.pem 2048 CN="Test S/MIME EE DSA #1" $OPENSSL req -config ca.cnf -nodes \ -keyout smdsa1.pem -out req.pem -newkey dsa:dsap.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smdsa1.pem CN="Test S/MIME EE DSA #2" $OPENSSL req -config ca.cnf -nodes \ -keyout smdsa2.pem -out req.pem -newkey dsa:dsap.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smdsa2.pem CN="Test S/MIME EE DSA #3" $OPENSSL req -config ca.cnf -nodes \ -keyout smdsa3.pem -out req.pem -newkey dsa:dsap.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smdsa3.pem # Create EC parameters @@ -58,15 +58,15 @@ $OPENSSL ecparam -out ecp2.pem -name K-283 CN="Test S/MIME EE EC #1" $OPENSSL req -config ca.cnf -nodes \ -keyout smec1.pem -out req.pem -newkey ec:ecp.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smec1.pem CN="Test S/MIME EE EC #2" $OPENSSL req -config ca.cnf -nodes \ -keyout smec2.pem -out req.pem -newkey ec:ecp2.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smec2.pem CN="Test S/MIME EE EC #3" $OPENSSL req -config ca.cnf -nodes \ -keyout smec3.pem -out req.pem -newkey ec:ecp.pem -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smec3.pem # Create X9.42 DH parameters. $OPENSSL genpkey -genparam -algorithm DH -pkeyopt dh_paramgen_type:2 \ @@ -78,7 +78,7 @@ $OPENSSL pkey -pubout -in smdh.pem -out dhpub.pem CN="Test S/MIME EE DH #1" $OPENSSL req -config ca.cnf -nodes \ -keyout smtmp.pem -out req.pem -newkey rsa:2048 # Sign request but force public key to DH -$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 3600 \ +$OPENSSL x509 -req -in req.pem -CA smroot.pem -days 36500 \ -force_pubkey dhpub.pem \ -extfile ca.cnf -extensions usr_cert -CAcreateserial >>smdh.pem # Remove temp files. diff --git a/deps/openssl/openssl/test/smime-certs/smdh.pem b/deps/openssl/openssl/test/smime-certs/smdh.pem index f831b0713b9588..273dfca5e05c9b 100644 --- a/deps/openssl/openssl/test/smime-certs/smdh.pem +++ b/deps/openssl/openssl/test/smime-certs/smdh.pem @@ -1,33 +1,47 @@ -----BEGIN PRIVATE KEY----- -MIIBSgIBADCCASsGByqGSM4+AgEwggEeAoGBANQMSgwEcnEZ31kZxa9Ef8qOK/AJ -9dMlsXMWVYnf/QevGdN/0Aei/j9a8QHG+CvvTm0DOEKhN9QUtABKsYZag865CA7B -mSdHjQuFqILtzA25sDJ+3+jk9vbss+56ETRll/wasJVLGbmmHNkBMvc1fC1d/sGF -cEn4zJnQvvFaeMgDAoGAaQD9ZvL8FYsJuNxN6qp5VfnfRqYvyi2PWSqtRKPGGC+V -thYg49PRjwPOcXzvOsdEOQ7iH9jTiSvnUdwSSEwYTZkSBuQXAgOMJAWOpoXyaRvh -atziBDoBnWS+/kX5RBhxvS0+em9yfRqAQleuGG+R1mEDihyJc8dWQQPT+O1l4oUC -FQCJlKsQZ0VBrWPGcUCNa54ZW6TH9QQWAhRR2NMZrQSfWthXDO8Lj5WZ34zQrA== +MIICXAIBADCCAjUGByqGSM4+AgEwggIoAoIBAQCB6AUA/1eXRh+iLWHXe+lUl6e+ ++460tAIIpsQ1jw1ZaTmlH9SlrWSBNVRVHwDuBW7vA+lKgBvDpCIjmhRbgrZIGwcZ +6ruCYy5KF/B3AW5MApC9QCDaVrG6Hb7NfpMgwuUIKvvvOMrrvn4r5Oxtsx9rORTE +bdS33MuZCOIbodjs5u+e/2hhssOwgUTMASDwXppJTyeMwAAZ+p78ByrSULP6yYdP +PTh8sK1begDG6YTSKE3VqYNg1yaE5tQvCQ0U2L4qZ8JqexAVHbR8LA8MNhtA1pma +Zj4q2WNAEevpprIIRXgJEZY278nPlvVeoKfOef9RBHgQ6ZTnZ1Et5iLMCwYHAoIB +AFVgJaHfnBVJYfaQh1NyoVZJ5xX6UvvL5xEKUwwEMgs8JSOzp2UI+KRDpy9KbNH7 +93Kwa2d8Q7ynciDiCmd1ygF4CJKb4ZOwjWjpZ4DedHr0XokGhyBCyjaBxOi3i4tP +EFO8YHs5B/yOZHzcpTfs2VxJqIm3KF8q0Ify9PWDAsgo+d21/+eye60FHjF9o2/D +l3NRlOhUhHNGykfqFgKEEEof3/3c6r5BS0oRXdsu6dx/y2/v8j9aJoHfyGHkswxr +ULSBxJENOBB89C+GET6yhbxV1e4SFwzHnXgG8bWXwk7bea6ZqXbHq0pT3kUiQeKe +assXKqRBAG9NLbQ3mmx8RFkCHQDIVBWPf6VwBa2s1CAcsIziVJ8qr/KAKx9DZ3h5 +BB4CHAF3VZBAC/TB85J4PzsLJ+VrOWr0c8kQlYUR9rw= -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIID/zCCAuegAwIBAgIJANv1TSKgememMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA4MDIxNDQ5MjlaFw0yMzA2MTExNDQ5MjlaMEQx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRU -ZXN0IFMvTUlNRSBFRSBESCAjMTCCAbYwggErBgcqhkjOPgIBMIIBHgKBgQDUDEoM -BHJxGd9ZGcWvRH/KjivwCfXTJbFzFlWJ3/0HrxnTf9AHov4/WvEBxvgr705tAzhC -oTfUFLQASrGGWoPOuQgOwZknR40LhaiC7cwNubAyft/o5Pb27LPuehE0ZZf8GrCV -Sxm5phzZATL3NXwtXf7BhXBJ+MyZ0L7xWnjIAwKBgGkA/Wby/BWLCbjcTeqqeVX5 -30amL8otj1kqrUSjxhgvlbYWIOPT0Y8DznF87zrHRDkO4h/Y04kr51HcEkhMGE2Z -EgbkFwIDjCQFjqaF8mkb4Wrc4gQ6AZ1kvv5F+UQYcb0tPnpvcn0agEJXrhhvkdZh -A4ociXPHVkED0/jtZeKFAhUAiZSrEGdFQa1jxnFAjWueGVukx/UDgYQAAoGAL1ve -cgI2awBeJH8ULBhSQpdL224VUDxFPiXzt8Vu5VLnxPv0pfA5En+8VByTuV7u6RSw -3/78NuTyr/sTyN8YlB1AuXHdTJynA1ICte1xgD4j2ijlq+dv8goOAFt9xkvXx7LD -umJ/cCignXETcNGfMi8+0s0bpMZyoHRdce8DQ26jYDBeMAwGA1UdEwEB/wQCMAAw -DgYDVR0PAQH/BAQDAgXgMB0GA1UdDgQWBBQLWk1ffSXH8p3Bqrdjgi/6jzLnwDAf -BgNVHSMEGDAWgBTffl6IBSQzCN0igQKXzJq3sTMnMDANBgkqhkiG9w0BAQUFAAOC -AQEAWvJj79MW1/Wq3RIANgAhonsI1jufYqxTH+1M0RU0ZXHulgem77Le2Ls1bizi -0SbvfpTiiFGkbKonKtO2wvfqwwuptSg3omMI5IjAGxYbyv2KBzIpp1O1LTDk9RbD -48JMMF01gByi2+NLUQ1MYF+5RqyoRqcyp5x2+Om1GeIM4Q/GRuI4p4dybWy8iC+d -LeXQfR7HXfh+tAum+WzjfLJwbnWbHmPhTbKB01U4lBp6+r8BGHAtNdPjEHqap4/z -vVZVXti9ThZ20EhM+VFU3y2wyapeQjhQvw/A2YRES0Ik7BSj3hHfWH/CTbLVQnhu -Uj6tw18ExOYxqoEGixNLPA5qsQ== +MIIFmDCCBICgAwIBAgIUWlJkHZZ2eZgkGCHFtcMAjlLdDH8wDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgRUUgREggIzEwggNCMIICNQYHKoZIzj4C +ATCCAigCggEBAIHoBQD/V5dGH6ItYdd76VSXp777jrS0AgimxDWPDVlpOaUf1KWt +ZIE1VFUfAO4Fbu8D6UqAG8OkIiOaFFuCtkgbBxnqu4JjLkoX8HcBbkwCkL1AINpW +sbodvs1+kyDC5Qgq++84yuu+fivk7G2zH2s5FMRt1Lfcy5kI4huh2Ozm757/aGGy +w7CBRMwBIPBemklPJ4zAABn6nvwHKtJQs/rJh089OHywrVt6AMbphNIoTdWpg2DX +JoTm1C8JDRTYvipnwmp7EBUdtHwsDww2G0DWmZpmPirZY0AR6+mmsghFeAkRljbv +yc+W9V6gp855/1EEeBDplOdnUS3mIswLBgcCggEAVWAlod+cFUlh9pCHU3KhVknn +FfpS+8vnEQpTDAQyCzwlI7OnZQj4pEOnL0ps0fv3crBrZ3xDvKdyIOIKZ3XKAXgI +kpvhk7CNaOlngN50evReiQaHIELKNoHE6LeLi08QU7xgezkH/I5kfNylN+zZXEmo +ibcoXyrQh/L09YMCyCj53bX/57J7rQUeMX2jb8OXc1GU6FSEc0bKR+oWAoQQSh/f +/dzqvkFLShFd2y7p3H/Lb+/yP1omgd/IYeSzDGtQtIHEkQ04EHz0L4YRPrKFvFXV +7hIXDMedeAbxtZfCTtt5rpmpdserSlPeRSJB4p5qyxcqpEEAb00ttDeabHxEWQId +AMhUFY9/pXAFrazUIBywjOJUnyqv8oArH0NneHkDggEFAAKCAQBigH0Mp4jUMSfK +yOhKlEfyZ/hj/EImsUYW4+u8xjBN+ruOJUTJ06Mtgw3g2iLkhQoO9NROqvC9rdLj ++j3e+1QWm9EDNKQAa4nUp8/W+XZ5KkQWudmtaojEXD1+kd44ieNLtPGuVnPtDGO4 +zPf04IUq7tDGbMDMMn6YXvW6f28lR3gF5vvVIsnjsd/Lau6orzmNSrymXegsEsFR +Q7hT+/tPoAtro6Hx9rBrYb/0OCiRe4YuYrFKkC0aaJfUQepVyuVMSTxxKTzq8T06 +M8SBITlmkPFZJHyGzV/+a72hpJsAa0BaDnpxH3cFpEMzeYG1XQK461zexoIYN3ub +i3xNPUzPo2AwXjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHQ4E +FgQULayIqKcWHtUH4pFolI6dKxycIG8wHwYDVR0jBBgwFoAUFcETIWviVV+nah1X +INbP86lzZFkwDQYJKoZIhvcNAQELBQADggEBAKjKvvJ6Vc9HiQXACqqRZnekz2gO +ue71nsXXDr2+y4PPpgcDzgtO3vhQc7Akv6Uyca9LY7w/X+temP63yxdLpKXTV19w +Or0p4VEvTZ8AttMjFh4Hl8caVYk/J4TIudSXLIfKROP6sFu5GOw7W3xpBkL5Zio6 +3dqe6xAYK0woNQPDfj5yOAlqj1Ohth81JywW5h2g8GfLtNe62coAqwjMJT+ExHfU +EkF/beSqRGOvXwyhSxFpe7HVjUMgrgdfoZnNsoPmpH3eTiF4BjamGWI1+Z0o+RHa +oPwN+cCzbDsi9uTQJO1D5S697heX00zzzU/KSW7djNzKv55vm24znuFkXTM= -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smdsa1.pem b/deps/openssl/openssl/test/smime-certs/smdsa1.pem index b424f6704ed948..0104e207cb271d 100644 --- a/deps/openssl/openssl/test/smime-certs/smdsa1.pem +++ b/deps/openssl/openssl/test/smime-certs/smdsa1.pem @@ -1,47 +1,47 @@ -----BEGIN PRIVATE KEY----- -MIICZQIBADCCAjkGByqGSM44BAEwggIsAoIBAQCQfLlNdehPnTrGIMhw4rk0uua6 -k1nCG3zcyfXli17BdB2k0HBPaTA3a3ZHfOt1Awy0Uu0wZ3gdPr9z0I64hnJXIGou -zIanZ7nYRImHtX5JMFbXeyxo1Owd2Zs3oEk9nQUoUsMxvmYC/ghPL5Zx1pPxcHCO -wzWxoG4yZMjimXOc1/W7zvK/4/g/Cz9fItD3zdcydfgM/hK0/CeYQ21xfhqf4mjK -v9plnCcWgToGI+7H8VK80MFbkO2QKRz3vP1/TjK6PRm9sEeB5b10+SvGv2j2w+CC -0fXL4s6n7PtBlm/bww8xL1/Az8kwejUcII1Dc8uNwwISwGbwaGBvl7IHpm21AiEA -rodZi+nCKZdTL8IgCjX3n0DuhPRkVQPjz/B6VweLW9MCggEAfimkUNwnsGFp7mKM -zJKhHoQkMB1qJzyIHjDzQ/J1xjfoF6i27afw1/WKboND5eseZhlhA2TO5ZJB6nGx -DOE9lVQxYVml++cQj6foHh1TVJAgGl4mWuveW/Rz+NEhpK4zVeEsfMrbkBypPByy -xzF1Z49t568xdIo+e8jLI8FjEdXOIUg4ehB3NY6SL8r4oJ49j/sJWfHcDoWH/LK9 -ZaBF8NpflJe3F40S8RDvM8j2HC+y2Q4QyKk1DXGiH+7yQLGWzr3M73kC3UBnnH0h -Hxb7ISDCT7dCw/lH1nCbVFBOM0ASI26SSsFSXQrvD2kryRcTZ0KkyyhhoPODWpU+ -TQMsxQQjAiEAkolGvb/76X3vm5Ov09ezqyBYt9cdj/FLH7DyMkxO7X0= +MIICXQIBADCCAjYGByqGSM44BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1 +i0SuHnFvPc5gHMLIxJhDp3cLJ5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t +4INbA4D+QSkxb4SWNurRBQj5LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAa +kOxI+l/rPAQlIUMCHSF6xXgd62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLg +c9HnYvwxlpoV+SHi+QXSrcrtMBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S +8EP8eXSDD+1Sni2Jk38etU+laS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0A +mkjrU1XrCahV9d78Rklpd4fK3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huaw +V6wj7hT99kjzQjZqbvLENW9bbAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7 +ioJmtded5hhS6GDg3Oj4IYiJ9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKR +CnZ2/FeRyjSS3cUey89GE2N2DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL +5H4Oo6NaSUc8dl7HWEeWoS8BE7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdL +QldkaQkHAEg0QqYb2Hv/xHfVhn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwX +ygQeAhwE9yuqObvNXzUTN+PY2rg00PzdyJw3XJAUrmlY -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIFkDCCBHigAwIBAgIJANk5lu6mSyBDMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzFaFw0yMzA1MjYxNzI4MzFaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBEU0EgIzEwggNGMIICOQYHKoZIzjgEATCCAiwCggEBAJB8 -uU116E+dOsYgyHDiuTS65rqTWcIbfNzJ9eWLXsF0HaTQcE9pMDdrdkd863UDDLRS -7TBneB0+v3PQjriGclcgai7MhqdnudhEiYe1fkkwVtd7LGjU7B3ZmzegST2dBShS -wzG+ZgL+CE8vlnHWk/FwcI7DNbGgbjJkyOKZc5zX9bvO8r/j+D8LP18i0PfN1zJ1 -+Az+ErT8J5hDbXF+Gp/iaMq/2mWcJxaBOgYj7sfxUrzQwVuQ7ZApHPe8/X9OMro9 -Gb2wR4HlvXT5K8a/aPbD4ILR9cvizqfs+0GWb9vDDzEvX8DPyTB6NRwgjUNzy43D -AhLAZvBoYG+XsgembbUCIQCuh1mL6cIpl1MvwiAKNfefQO6E9GRVA+PP8HpXB4tb -0wKCAQB+KaRQ3CewYWnuYozMkqEehCQwHWonPIgeMPND8nXGN+gXqLbtp/DX9Ypu -g0Pl6x5mGWEDZM7lkkHqcbEM4T2VVDFhWaX75xCPp+geHVNUkCAaXiZa695b9HP4 -0SGkrjNV4Sx8ytuQHKk8HLLHMXVnj23nrzF0ij57yMsjwWMR1c4hSDh6EHc1jpIv -yvignj2P+wlZ8dwOhYf8sr1loEXw2l+Ul7cXjRLxEO8zyPYcL7LZDhDIqTUNcaIf -7vJAsZbOvczveQLdQGecfSEfFvshIMJPt0LD+UfWcJtUUE4zQBIjbpJKwVJdCu8P -aSvJFxNnQqTLKGGg84NalT5NAyzFA4IBBQACggEAGXSQADbuRIZBjiQ6NikwZl+x -EDEffIE0RWbvwf1tfWxw4ZvanO/djyz5FePO0AIJDBCLUjr9D32nkmIG1Hu3dWgV -86knQsM6uFiMSzY9nkJGZOlH3w4NHLE78pk75xR1sg1MEZr4x/t+a/ea9Y4AXklE -DCcaHtpMGeAx3ZAqSKec+zQOOA73JWP1/gYHGdYyTQpQtwRTsh0Gi5mOOdpoJ0vp -O83xYbFCZ+ZZKX1RWOjJe2OQBRtw739q1nRga1VMLAT/LFSQsSE3IOp8hiWbjnit -1SE6q3II2a/aHZH/x4OzszfmtQfmerty3eQSq3bgajfxCsccnRjSbLeNiazRSKNg -MF4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0OBBYEFNHQYTOO -xaZ/N68OpxqjHKuatw6sMB8GA1UdIwQYMBaAFMmRUwpjexZbi71E8HaIqSTm5bZs -MA0GCSqGSIb3DQEBBQUAA4IBAQAAiLociMMXcLkO/uKjAjCIQMrsghrOrxn4ZGBx -d/mCTeqPxhcrX2UorwxVCKI2+Dmz5dTC2xKprtvkiIadJamJmxYYzeF1pgRriFN3 -MkmMMkTbe/ekSvSeMtHQ2nHDCAJIaA/k9akWfA0+26Ec25/JKMrl3LttllsJMK1z -Xj7TcQpAIWORKWSNxY/ezM34+9ABHDZB2waubFqS+irlZsn38aZRuUI0K67fuuIt -17vMUBqQpe2hfNAjpZ8dIpEdAGjQ6izV2uwP1lXbiaK9U4dvUqmwyCIPniX7Hpaf -0VnX0mEViXMT6vWZTjLBUv0oKmO7xBkWHIaaX6oyF32pK5AO +MIIFmjCCBIKgAwIBAgIUUoOmJmXAY29/2rWY0wJphQ5/pzUwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgRFNBICMxMIIDQzCCAjYGByqGSM44 +BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1i0SuHnFvPc5gHMLIxJhDp3cL +J5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t4INbA4D+QSkxb4SWNurRBQj5 +LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAakOxI+l/rPAQlIUMCHSF6xXgd +62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLgc9HnYvwxlpoV+SHi+QXSrcrt +MBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S8EP8eXSDD+1Sni2Jk38etU+l +aS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0AmkjrU1XrCahV9d78Rklpd4fK +3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huawV6wj7hT99kjzQjZqbvLENW9b +bAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7ioJmtded5hhS6GDg3Oj4IYiJ +9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKRCnZ2/FeRyjSS3cUey89GE2N2 +DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL5H4Oo6NaSUc8dl7HWEeWoS8B +E7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdLQldkaQkHAEg0QqYb2Hv/xHfV +hn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwXygOCAQUAAoIBACGS7hCpTL0g +lx9C1Bwz5xfVd0mwCqx9UGiH8Bf4lRsSagL0Irwvnjz++WH1vecZa2bWsYsPhQ+D +KDzaCo20CYln4IFEPgY0fSE+KTF1icFj/mD+MgxWgsgKoTI120ENPGHqHpKkv0Uv +OlwTImU4BxxkctZ5273XEv3VPQE8COGnXgqt7NBazU/O7vibFm0iaEsVjHFHYcoo ++sMcm3F2E/gvR9IJGaGPeCk0sMW8qloPzErWIugx/OGqM7fni2cIcZwGdju52O+l +cLV0tZdgC7eTbVDMLspyuiYME+zvEzRwCQF/GqcCDSn68zxJv/zSNZ9XxOgZaBfs +Na7e8YGATiujYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMB0GA1Ud +DgQWBBSFVrWPZrHzhHUg0MMEAAKwQIfsazAfBgNVHSMEGDAWgBQVwRMha+JVX6dq +HVcg1s/zqXNkWTANBgkqhkiG9w0BAQsFAAOCAQEAbm49FB+eyeX7OBUC/akhnkFw +cDXqw7Fl2OibRK+g/08zp4CruwJdb72j5+pTmG+9SF7tGyQBfHFf1+epa3ZiIc+0 +UzFf2xQBMyHjesL19cTe4i176dHz8pCxx9OEow0GlZVV85+Anev101NskKVNNVA7 +YnB2xKQWgf8HORh66XVCk54xMcd99ng8xQ8vhZC6KckVbheQgdPp7gUAcDgxH2Yo +JF8jHQlsWNcCGURDldP6FQ49TGWHj24IGjnjGapWxMUjvCz+kV6sGW/OIYu+MM9w +FMIOyEdUUtKowWT6eXwrITup3T6pspPTicbK61ZCPuxMvP2JBFGZsqat+F5g+w== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smdsa2.pem b/deps/openssl/openssl/test/smime-certs/smdsa2.pem index 648447fc89a1b2..7d5b969dc3b354 100644 --- a/deps/openssl/openssl/test/smime-certs/smdsa2.pem +++ b/deps/openssl/openssl/test/smime-certs/smdsa2.pem @@ -1,47 +1,47 @@ -----BEGIN PRIVATE KEY----- -MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQCQfLlNdehPnTrGIMhw4rk0uua6 -k1nCG3zcyfXli17BdB2k0HBPaTA3a3ZHfOt1Awy0Uu0wZ3gdPr9z0I64hnJXIGou -zIanZ7nYRImHtX5JMFbXeyxo1Owd2Zs3oEk9nQUoUsMxvmYC/ghPL5Zx1pPxcHCO -wzWxoG4yZMjimXOc1/W7zvK/4/g/Cz9fItD3zdcydfgM/hK0/CeYQ21xfhqf4mjK -v9plnCcWgToGI+7H8VK80MFbkO2QKRz3vP1/TjK6PRm9sEeB5b10+SvGv2j2w+CC -0fXL4s6n7PtBlm/bww8xL1/Az8kwejUcII1Dc8uNwwISwGbwaGBvl7IHpm21AiEA -rodZi+nCKZdTL8IgCjX3n0DuhPRkVQPjz/B6VweLW9MCggEAfimkUNwnsGFp7mKM -zJKhHoQkMB1qJzyIHjDzQ/J1xjfoF6i27afw1/WKboND5eseZhlhA2TO5ZJB6nGx -DOE9lVQxYVml++cQj6foHh1TVJAgGl4mWuveW/Rz+NEhpK4zVeEsfMrbkBypPByy -xzF1Z49t568xdIo+e8jLI8FjEdXOIUg4ehB3NY6SL8r4oJ49j/sJWfHcDoWH/LK9 -ZaBF8NpflJe3F40S8RDvM8j2HC+y2Q4QyKk1DXGiH+7yQLGWzr3M73kC3UBnnH0h -Hxb7ISDCT7dCw/lH1nCbVFBOM0ASI26SSsFSXQrvD2kryRcTZ0KkyyhhoPODWpU+ -TQMsxQQiAiAdCUJ5n2Q9hIynN8BMpnRcdfH696BKejGx+2Mr2kfnnA== +MIICXQIBADCCAjYGByqGSM44BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1 +i0SuHnFvPc5gHMLIxJhDp3cLJ5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t +4INbA4D+QSkxb4SWNurRBQj5LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAa +kOxI+l/rPAQlIUMCHSF6xXgd62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLg +c9HnYvwxlpoV+SHi+QXSrcrtMBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S +8EP8eXSDD+1Sni2Jk38etU+laS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0A +mkjrU1XrCahV9d78Rklpd4fK3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huaw +V6wj7hT99kjzQjZqbvLENW9bbAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7 +ioJmtded5hhS6GDg3Oj4IYiJ9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKR +CnZ2/FeRyjSS3cUey89GE2N2DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL +5H4Oo6NaSUc8dl7HWEeWoS8BE7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdL +QldkaQkHAEg0QqYb2Hv/xHfVhn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwX +ygQeAhwmRauZi+nQ3kQ+GSKD7JCwv8XkD9NObMGlW018 -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIFkDCCBHigAwIBAgIJANk5lu6mSyBEMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzFaFw0yMzA1MjYxNzI4MzFaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBEU0EgIzIwggNGMIICOQYHKoZIzjgEATCCAiwCggEBAJB8 -uU116E+dOsYgyHDiuTS65rqTWcIbfNzJ9eWLXsF0HaTQcE9pMDdrdkd863UDDLRS -7TBneB0+v3PQjriGclcgai7MhqdnudhEiYe1fkkwVtd7LGjU7B3ZmzegST2dBShS -wzG+ZgL+CE8vlnHWk/FwcI7DNbGgbjJkyOKZc5zX9bvO8r/j+D8LP18i0PfN1zJ1 -+Az+ErT8J5hDbXF+Gp/iaMq/2mWcJxaBOgYj7sfxUrzQwVuQ7ZApHPe8/X9OMro9 -Gb2wR4HlvXT5K8a/aPbD4ILR9cvizqfs+0GWb9vDDzEvX8DPyTB6NRwgjUNzy43D -AhLAZvBoYG+XsgembbUCIQCuh1mL6cIpl1MvwiAKNfefQO6E9GRVA+PP8HpXB4tb -0wKCAQB+KaRQ3CewYWnuYozMkqEehCQwHWonPIgeMPND8nXGN+gXqLbtp/DX9Ypu -g0Pl6x5mGWEDZM7lkkHqcbEM4T2VVDFhWaX75xCPp+geHVNUkCAaXiZa695b9HP4 -0SGkrjNV4Sx8ytuQHKk8HLLHMXVnj23nrzF0ij57yMsjwWMR1c4hSDh6EHc1jpIv -yvignj2P+wlZ8dwOhYf8sr1loEXw2l+Ul7cXjRLxEO8zyPYcL7LZDhDIqTUNcaIf -7vJAsZbOvczveQLdQGecfSEfFvshIMJPt0LD+UfWcJtUUE4zQBIjbpJKwVJdCu8P -aSvJFxNnQqTLKGGg84NalT5NAyzFA4IBBQACggEAItQlFu0t7Mw1HHROuuwKLS+E -h2WNNZP96MLQTygOVlqgaJY+1mJLzvl/51LLH6YezX0t89Z2Dm/3SOJEdNrdbIEt -tbu5rzymXxFhc8uaIYZFhST38oQwJOjM8wFitAQESe6/9HZjkexMqSqx/r5aEKTa -LBinqA1BJRI72So1/1dv8P99FavPADdj8V7fAccReKEQKnfnwA7mrnD+OlIqFKFn -3wCGk8Sw7tSJ9g6jgCI+zFwrKn2w+w+iot/Ogxl9yMAtKmAd689IAZr5GPPvV2y0 -KOogCiUYgSTSawZhr+rjyFavfI5dBWzMq4tKx/zAi6MJ+6hGJjJ8jHoT9JAPmaNg -MF4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0OBBYEFGaxw04k -qpufeGZC+TTBq8oMnXyrMB8GA1UdIwQYMBaAFMmRUwpjexZbi71E8HaIqSTm5bZs -MA0GCSqGSIb3DQEBBQUAA4IBAQCk2Xob1ICsdHYx/YsBzY6E1eEwcI4RZbZ3hEXp -VA72/Mbz60gjv1OwE5Ay4j+xG7IpTio6y2A9ZNepGpzidYcsL/Lx9Sv1LlN0Ukzb -uk6Czd2sZJp+PFMTTrgCd5rXKnZs/0D84Vci611vGMA1hnUnbAnBBmgLXe9pDNRV -6mhmCLLjJ4GOr5Wxt/hhknr7V2e1VMx3Q47GZhc0o/gExfhxXA8+gicM0nEYNakD -2A1F0qDhQGakjuofANHhjdUDqKJ1sxurAy80fqb0ddzJt2el89iXKN+aXx/zEX96 -GI5ON7z/bkVwIi549lUOpWb2Mved61NBzCLKVP7HSuEIsC/I +MIIFmjCCBIKgAwIBAgIUHGKu2FMhT1wCiJTK3uAnklo55uowDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgRFNBICMyMIIDQzCCAjYGByqGSM44 +BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1i0SuHnFvPc5gHMLIxJhDp3cL +J5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t4INbA4D+QSkxb4SWNurRBQj5 +LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAakOxI+l/rPAQlIUMCHSF6xXgd +62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLgc9HnYvwxlpoV+SHi+QXSrcrt +MBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S8EP8eXSDD+1Sni2Jk38etU+l +aS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0AmkjrU1XrCahV9d78Rklpd4fK +3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huawV6wj7hT99kjzQjZqbvLENW9b +bAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7ioJmtded5hhS6GDg3Oj4IYiJ +9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKRCnZ2/FeRyjSS3cUey89GE2N2 +DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL5H4Oo6NaSUc8dl7HWEeWoS8B +E7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdLQldkaQkHAEg0QqYb2Hv/xHfV +hn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwXygOCAQUAAoIBAE0+OYS0s8/o +HwuuiPsBZTlRynqdwF6FHdE0Ei2uVTxnJouPYB2HvaMioG2inbISzPtEcnLF9Pyx +4hsXz7D49yqyMFjE3G8ObBOs/Vdno6E9ZZshWiRDwPf8JmoYp551UuJDoVaOTnhx +pEs30nuidtqd54PMdWUQPfp58kTu6bXvcRxdUj5CK/PyjavJCnGfppq/6j8jtrji +mOjIIeLZIbWp7hTVS/ffmfqZ8Lx/ShOcUzDa0VS3lfO28XqXpeqbyHdojsYlG2oA +shKJL7/scq3ab8cI5QuHEIGSbxinKfjCX4OEQ04CNsgUwMY9emPSaNdYDZOPqq/K +3bGk2PLcRsyjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMB0GA1Ud +DgQWBBTQAQyUCqYWGo5RuwGCtHNgXgzEQzAfBgNVHSMEGDAWgBQVwRMha+JVX6dq +HVcg1s/zqXNkWTANBgkqhkiG9w0BAQsFAAOCAQEAc3rayE2FGgG1RhLXAHYAs1Ky +4fcVcrzaPaz5jjWbpBCStkx+gNcUiBf+aSxNrRvUoPOSwMDLpMhbNBj2cjJqQ0W1 +oq4RUQth11qH89uPtBqiOqRTdlWAGZJbUTtVfrlc58DsDxFCwdcktSDYZwlO2lGO +vMCOn9N7oqEEuwRa++xVnYc8ZbY8lGwJD3bGR6iC7NkYk+2LSqPS52m8e0GO8dpf +RUrndbhmtsYa925dj2LlI218F3XwVcAUPW67dbpeEVw5OG8OCHRHqrwBEJj2PMV3 +tHeNXDEhjTzI3wiFia4kDBAKIsrC/XQ4tEiFzq0V00BiVY0ykhy+v/qNPskTsg== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smdsa3.pem b/deps/openssl/openssl/test/smime-certs/smdsa3.pem index 77acc5e46ffc30..6df4699450f018 100644 --- a/deps/openssl/openssl/test/smime-certs/smdsa3.pem +++ b/deps/openssl/openssl/test/smime-certs/smdsa3.pem @@ -1,47 +1,47 @@ -----BEGIN PRIVATE KEY----- -MIICZQIBADCCAjkGByqGSM44BAEwggIsAoIBAQCQfLlNdehPnTrGIMhw4rk0uua6 -k1nCG3zcyfXli17BdB2k0HBPaTA3a3ZHfOt1Awy0Uu0wZ3gdPr9z0I64hnJXIGou -zIanZ7nYRImHtX5JMFbXeyxo1Owd2Zs3oEk9nQUoUsMxvmYC/ghPL5Zx1pPxcHCO -wzWxoG4yZMjimXOc1/W7zvK/4/g/Cz9fItD3zdcydfgM/hK0/CeYQ21xfhqf4mjK -v9plnCcWgToGI+7H8VK80MFbkO2QKRz3vP1/TjK6PRm9sEeB5b10+SvGv2j2w+CC -0fXL4s6n7PtBlm/bww8xL1/Az8kwejUcII1Dc8uNwwISwGbwaGBvl7IHpm21AiEA -rodZi+nCKZdTL8IgCjX3n0DuhPRkVQPjz/B6VweLW9MCggEAfimkUNwnsGFp7mKM -zJKhHoQkMB1qJzyIHjDzQ/J1xjfoF6i27afw1/WKboND5eseZhlhA2TO5ZJB6nGx -DOE9lVQxYVml++cQj6foHh1TVJAgGl4mWuveW/Rz+NEhpK4zVeEsfMrbkBypPByy -xzF1Z49t568xdIo+e8jLI8FjEdXOIUg4ehB3NY6SL8r4oJ49j/sJWfHcDoWH/LK9 -ZaBF8NpflJe3F40S8RDvM8j2HC+y2Q4QyKk1DXGiH+7yQLGWzr3M73kC3UBnnH0h -Hxb7ISDCT7dCw/lH1nCbVFBOM0ASI26SSsFSXQrvD2kryRcTZ0KkyyhhoPODWpU+ -TQMsxQQjAiEArJr6p2zTbhRppQurHGTdmdYHqrDdZH4MCsD9tQCw1xY= +MIICXgIBADCCAjYGByqGSM44BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1 +i0SuHnFvPc5gHMLIxJhDp3cLJ5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t +4INbA4D+QSkxb4SWNurRBQj5LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAa +kOxI+l/rPAQlIUMCHSF6xXgd62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLg +c9HnYvwxlpoV+SHi+QXSrcrtMBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S +8EP8eXSDD+1Sni2Jk38etU+laS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0A +mkjrU1XrCahV9d78Rklpd4fK3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huaw +V6wj7hT99kjzQjZqbvLENW9bbAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7 +ioJmtded5hhS6GDg3Oj4IYiJ9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKR +CnZ2/FeRyjSS3cUey89GE2N2DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL +5H4Oo6NaSUc8dl7HWEeWoS8BE7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdL +QldkaQkHAEg0QqYb2Hv/xHfVhn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwX +ygQfAh0AkfI6533W5nBIVrDPcp2DCXC8u2SIwBob6OoK5A== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIFkDCCBHigAwIBAgIJANk5lu6mSyBFMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzFaFw0yMzA1MjYxNzI4MzFaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBEU0EgIzMwggNGMIICOQYHKoZIzjgEATCCAiwCggEBAJB8 -uU116E+dOsYgyHDiuTS65rqTWcIbfNzJ9eWLXsF0HaTQcE9pMDdrdkd863UDDLRS -7TBneB0+v3PQjriGclcgai7MhqdnudhEiYe1fkkwVtd7LGjU7B3ZmzegST2dBShS -wzG+ZgL+CE8vlnHWk/FwcI7DNbGgbjJkyOKZc5zX9bvO8r/j+D8LP18i0PfN1zJ1 -+Az+ErT8J5hDbXF+Gp/iaMq/2mWcJxaBOgYj7sfxUrzQwVuQ7ZApHPe8/X9OMro9 -Gb2wR4HlvXT5K8a/aPbD4ILR9cvizqfs+0GWb9vDDzEvX8DPyTB6NRwgjUNzy43D -AhLAZvBoYG+XsgembbUCIQCuh1mL6cIpl1MvwiAKNfefQO6E9GRVA+PP8HpXB4tb -0wKCAQB+KaRQ3CewYWnuYozMkqEehCQwHWonPIgeMPND8nXGN+gXqLbtp/DX9Ypu -g0Pl6x5mGWEDZM7lkkHqcbEM4T2VVDFhWaX75xCPp+geHVNUkCAaXiZa695b9HP4 -0SGkrjNV4Sx8ytuQHKk8HLLHMXVnj23nrzF0ij57yMsjwWMR1c4hSDh6EHc1jpIv -yvignj2P+wlZ8dwOhYf8sr1loEXw2l+Ul7cXjRLxEO8zyPYcL7LZDhDIqTUNcaIf -7vJAsZbOvczveQLdQGecfSEfFvshIMJPt0LD+UfWcJtUUE4zQBIjbpJKwVJdCu8P -aSvJFxNnQqTLKGGg84NalT5NAyzFA4IBBQACggEAcXvtfiJfIZ0wgGpN72ZeGrJ9 -msUXOxow7w3fDbP8r8nfVkBNbfha8rx0eY6fURFVZzIOd8EHGKypcH1gS6eZNucf -zgsH1g5r5cRahMZmgGXBEBsWrh2IaDG7VSKt+9ghz27EKgjAQCzyHQL5FCJgR2p7 -cv0V4SRqgiAGYlJ191k2WtLOsVd8kX//jj1l8TUgE7TqpuSEpaSyQ4nzJROpZWZp -N1RwFmCURReykABU/Nzin/+rZnvZrp8WoXSXEqxeB4mShRSaH57xFnJCpRwKJ4qS -2uhATzJaKH7vu63k3DjftbSBVh+32YXwtHc+BGjs8S2aDtCW3FtDA7Z6J8BIxaNg -MF4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0OBBYEFMJxatDE -FCEFGl4uoiQQ1050Ju9RMB8GA1UdIwQYMBaAFMmRUwpjexZbi71E8HaIqSTm5bZs -MA0GCSqGSIb3DQEBBQUAA4IBAQBGZD1JnMep39KMOhD0iBTmyjhtcnRemckvRask -pS/CqPwo+M+lPNdxpLU2w9b0QhPnj0yAS/BS1yBjsLGY4DP156k4Q3QOhwsrTmrK -YOxg0w7DOpkv5g11YLJpHsjSOwg5uIMoefL8mjQK6XOFOmQXHJrUtGulu+fs6FlM -khGJcW4xYVPK0x/mHvTT8tQaTTkgTdVHObHF5Dyx/F9NMpB3RFguQPk2kT4lJc4i -Up8T9mLzaxz6xc4wwh8h70Zw81lkGYhX+LRk3sfd/REq9x4QXQNP9t9qU1CgrBzv -4orzt9cda4r+rleSg2XjWnXzMydE6DuwPVPZlqnLbSYUy660 +MIIFmjCCBIKgAwIBAgIUO2QHMd9V/S6KlrFDIPd7asRP4FAwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgRFNBICMzMIIDQzCCAjYGByqGSM44 +BAEwggIpAoIBAQCg5xGADjdINCKODDX6yq3w8vQ1i0SuHnFvPc5gHMLIxJhDp3cL +J5eJmcHZ07WflsMgSxD2Wd5lX5Q9uxtv78/erv5t4INbA4D+QSkxb4SWNurRBQj5 +LuoGhFMpCubDYSxiKkTJ4pmOEbsjnlGLiN5R1jAakOxI+l/rPAQlIUMCHSF6xXgd +62fUdEAnRYj46Lgw+FWKAKNhcH7rOLA7k4JnYCLgc9HnYvwxlpoV+SHi+QXSrcrt +MBNCmIgIONI5uNuBnZq6jjHE/Wg1+D4wGxOZl+/S8EP8eXSDD+1Sni2Jk38etU+l +aS0pVV9lh6sV3zV28YXVZl01CHUfwH+3w/XJAh0AmkjrU1XrCahV9d78Rklpd4fK +3K53+X5MeTgNLQKCAQEAoA32HKvIhx6wvmT9huawV6wj7hT99kjzQjZqbvLENW9b +bAgOdPzZzusqZmZMgGdDr94oYz1/MhmAKNY4lQv7ioJmtded5hhS6GDg3Oj4IYiJ +9trAQ/ATrDrSi3sQAZ3Pvip7j4oljvsQBmAj3KKRCnZ2/FeRyjSS3cUey89GE2N2 +DQbHEmuG/F8aDmUhLNusZm6nXs2Y1W7+kQRwswBL5H4Oo6NaSUc8dl7HWEeWoS8B +E7G4JFCXBQwwgInOJINyQlknxMSpv7dwxp32SgdLQldkaQkHAEg0QqYb2Hv/xHfV +hn9vTpGJQyWvnT5RvbXSGdTk1CTlZTrUAGmbHOwXygOCAQUAAoIBAEj25Os9f57G +TaxsP8NzdCRBThCLqZWqLADh6S/aFOQQFpRRk3vGkvrOK/5La8KGKIDyzCEQo7Kg +sPwI1o4N5GKx15Cer2ekDWLtP4hA2CChs4tWJzEa8VxIDTg4EUnASFCbfDUY/Yt0 +5NM4nxtBhnr6PT7XmRehEFaTAgmsQFJ29jKx4tJkr+Gmj9J4i10CPd9DvIgIEnNt +rYMAlfbGovaZVCgKp5INVA4IkDfCcbzDeNiOGaACeV+4QuEbgIbUhMq9vbw3Vvqe +jwozPdrTYjd7oNxx/tY7gqxFRFxdDPXPno230afsAJsHmNF7lpj9Q4vBhy8w/EI1 +jGzuiXjei9qjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMB0GA1Ud +DgQWBBTwbCT+wSR9cvTg70jA2yIWgQSDZjAfBgNVHSMEGDAWgBQVwRMha+JVX6dq +HVcg1s/zqXNkWTANBgkqhkiG9w0BAQsFAAOCAQEAe5t9oi8K76y+wnV6I21vKgEh +M6DEe3+XTq10kAgYbcbMm+a6n86beaID7FANGET+3bsShxFeAX9g4Qsdw+Z3PF3P +wvqiBD8MaXczj28zP6j9TxsjGzpAsV3xo1n7aQ+hHzpopJUxAyx4hLBqSSwdj/xe +azELeVKoXY/nlokXnONWC5AvtfR7m7mKFPOmUghbeGCJH7+FXnC58eiF7BEpSbQl +SniAdQFis+Dne6/kwZnQQaSDg55ELfaZOLhaLcRtqqgU+kv24mXGGEBhs9bBKMz5 +ZNiKLafE3tCGRA5iMRwzdeSgrdnkQDHFiYXh3JHk5oKwGOdxusgt3DTHAFej1A== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smec1.pem b/deps/openssl/openssl/test/smime-certs/smec1.pem index 75a862666b2544..a94f65c6004244 100644 --- a/deps/openssl/openssl/test/smime-certs/smec1.pem +++ b/deps/openssl/openssl/test/smime-certs/smec1.pem @@ -1,22 +1,22 @@ -----BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgXzBRX9Z5Ib4LAVAS -DMlYvkj0SmLmYvWULe2LfyXRmpWhRANCAAS+SIj2FY2DouPRuNDp9WVpsqef58tV -3gIwV0EOV/xyYTzZhufZi/aBcXugWR1x758x4nHus2uEuEFi3Mr3K3+x +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdOomk0EB/oWMnTZB +Qm5XMjlKnZNF4PMpwgov0Tj3u8OhRANCAATbG6XprSqHiD9AxWJiXRFgS+y38DGZ +7hpSjs4bd95L+Lli+O91/lUy7Tb8aJ6VU2CoyWQjV4sQjbdVqeD+y4Ky -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIICoDCCAYigAwIBAgIJANk5lu6mSyBGMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzFaFw0yMzA1MjYxNzI4MzFaMEQx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRU -ZXN0IFMvTUlNRSBFRSBFQyAjMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL5I -iPYVjYOi49G40On1ZWmyp5/ny1XeAjBXQQ5X/HJhPNmG59mL9oFxe6BZHXHvnzHi -ce6za4S4QWLcyvcrf7GjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXg -MB0GA1UdDgQWBBR/ybxC2DI+Jydhx1FMgPbMTmLzRzAfBgNVHSMEGDAWgBTJkVMK -Y3sWW4u9RPB2iKkk5uW2bDANBgkqhkiG9w0BAQUFAAOCAQEAdk9si83JjtgHHHGy -WcgWDfM0jzlWBsgFNQ9DwAuB7gJd/LG+5Ocajg5XdA5FXAdKkfwI6be3PdcVs3Bt -7f/fdKfBxfr9/SvFHnK7PVAX2x1wwS4HglX1lfoyq1boSvsiJOnAX3jsqXJ9TJiV -FlgRVnhnrw6zz3Xs/9ZDMTENUrqDHPNsDkKEi+9SqIsqDXpMCrGHP4ic+S8Rov1y -S+0XioMxVyXDp6XcL4PQ/NgHbw5/+UcS0me0atZ6pW68C0vi6xeU5vxojyuZxMI1 -DXXwMhOXWaKff7KNhXDUN0g58iWlnyaCz4XQwFsbbFs88TQ1+e/aj3bbwTxUeyN7 -qtcHJA== +MIICrTCCAZWgAwIBAgIUdLT4B443vbxt0B8Mzy0sR4+6AyowDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgRUUgRUMgIzEwWTATBgcqhkjOPQIBBggq +hkjOPQMBBwNCAATbG6XprSqHiD9AxWJiXRFgS+y38DGZ7hpSjs4bd95L+Lli+O91 +/lUy7Tb8aJ6VU2CoyWQjV4sQjbdVqeD+y4Kyo2AwXjAMBgNVHRMBAf8EAjAAMA4G +A1UdDwEB/wQEAwIF4DAdBgNVHQ4EFgQUOia9H7l0qw3ftsDgEEeSBrHwQrwwHwYD +VR0jBBgwFoAUFcETIWviVV+nah1XINbP86lzZFkwDQYJKoZIhvcNAQELBQADggEB +AC7h/QkMocYANPqMQAO2okygG+OaE4qpKnlzHPUFMYedJGCvAWrwxu4hWL9T+hZo +qilM7Fwaxw/P4Zaaa15SOOhXkIdn9Fu2ROmBQtEiklmWGMjiZ6F+9NCZPk0cTAXK +2WQZOy41YNuvts+20osD4X/8x3fiARlokufj/TVyE73wG8pSSDh4KxWDfKv5Pi1F +PC5IJh8XVELnFkeY3xjtoux5AYT+1xIQHO4eBua02Y1oPiWG7l/sK3grVlxrupd9 +pXowwFlezWZP9q12VlWkcqwNb9hF9PkZge9bpiOJipSYgyobtAnms/CRHu3e6izl +LJRua7p4Wt/8GQENDrVkHqU= -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smec2.pem b/deps/openssl/openssl/test/smime-certs/smec2.pem index 457297a760f153..3fe14b3a1193f8 100644 --- a/deps/openssl/openssl/test/smime-certs/smec2.pem +++ b/deps/openssl/openssl/test/smime-certs/smec2.pem @@ -1,23 +1,23 @@ -----BEGIN PRIVATE KEY----- -MIGPAgEAMBAGByqGSM49AgEGBSuBBAAQBHgwdgIBAQQjhHaq507MOBznelrLG/pl -brnnJi/iEJUUp+Pm3PEiteXqckmhTANKAAQF2zs6vobmoT+M+P2+9LZ7asvFBNi7 -uCzLYF/8j1Scn/spczoC9vNzVhNw+Lg7dnjNL4EDIyYZLl7E0v69luzbvy+q44/8 -6bQ= +MIGQAgEAMBAGByqGSM49AgEGBSuBBAAQBHkwdwIBAQQkAEkuzLBwx5bIw3Q2PMNQ +HzaY8yL3QLjzaJ8tCHrI/JTb9Q7VoUwDSgAEAu8b2HvLzKd0qhPtIw65Lh3OgF3X +IN5874qHwt9zPSvokijSAH3v9tcBJPdRLD3Lweh2ZPn5hMwVwVorHqSgASk5vnjp +HqER -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIICpTCCAY2gAwIBAgIJANk5lu6mSyBHMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzFaFw0yMzA1MjYxNzI4MzFaMEQx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRU -ZXN0IFMvTUlNRSBFRSBFQyAjMjBeMBAGByqGSM49AgEGBSuBBAAQA0oABAXbOzq+ -huahP4z4/b70tntqy8UE2Lu4LMtgX/yPVJyf+ylzOgL283NWE3D4uDt2eM0vgQMj -JhkuXsTS/r2W7Nu/L6rjj/zptKNgMF4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8E -BAMCBeAwHQYDVR0OBBYEFGf+QSQlkN20PsNN7x+jmQIJBDcXMB8GA1UdIwQYMBaA -FMmRUwpjexZbi71E8HaIqSTm5bZsMA0GCSqGSIb3DQEBBQUAA4IBAQBaBBryl2Ez -ftBrGENXMKQP3bBEw4n9ely6HvYQi9IC7HyK0ktz7B2FcJ4z96q38JN3cLxV0DhK -xT/72pFmQwZVJngvRaol0k1B+bdmM03llxCw/uNNZejixDjHUI9gEfbigehd7QY0 -uYDu4k4O35/z/XPQ6O5Kzw+J2vdzU8GXlMBbWeZWAmEfLGbk3Ux0ouITnSz0ty5P -rkHTo0uprlFcZAsrsNY5v5iuomYT7ZXAR3sqGZL1zPOKBnyfXeNFUfnKsZW7Fnlq -IlYBQIjqR1HGxxgCSy66f1oplhxSch4PUpk5tqrs6LeOqc2+xROy1T5YrB3yjVs0 -4ZdCllHZkhop +MIICsjCCAZqgAwIBAgIUFMjrNKt+D8tzvn7jtjZ5HrLcUlswDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxNFoYDzIxMjIw +NTA5MTUzMzE0WjBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgRUUgRUMgIzIwXjAQBgcqhkjOPQIBBgUr +gQQAEANKAAQC7xvYe8vMp3SqE+0jDrkuHc6AXdcg3nzviofC33M9K+iSKNIAfe/2 +1wEk91EsPcvB6HZk+fmEzBXBWisepKABKTm+eOkeoRGjYDBeMAwGA1UdEwEB/wQC +MAAwDgYDVR0PAQH/BAQDAgXgMB0GA1UdDgQWBBSqWRYUy2syIUwfSR31e19LeNXK +9TAfBgNVHSMEGDAWgBQVwRMha+JVX6dqHVcg1s/zqXNkWTANBgkqhkiG9w0BAQsF +AAOCAQEASbh+sI03xUMMzPT8bRbWNF5gG3ab8IUzqm05rTa54NCPRSn+ZdMXcCFz +5fSU0T1dgEjeD+cCRVAZxskTZF7FWmRLc2weJMf7x+nPE5KaWyRAoD7FIKGP2m6m +IMCVOmiafuzmHASBYOz6RwjgWS0AWES48DJX6o0KpuT4bsknz+H7Xo+4+NYGCRao +enqIMZmWesGVXJ63pl32jUlXeAg59W6PpV2L9XRWLzDW1t1q2Uji7coCWtNjkojZ +rv0yRMc1czkT+mAJRAJ8D9MoTnRXm1dH4bOxte4BGUHNQ2P1HeV01vkd1RTL0g0R +lPyDAlBASvMn7RZ9nX8G3UOOL6gtVA== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smroot.pem b/deps/openssl/openssl/test/smime-certs/smroot.pem index d1a253f40958b2..9af38d310b4f35 100644 --- a/deps/openssl/openssl/test/smime-certs/smroot.pem +++ b/deps/openssl/openssl/test/smime-certs/smroot.pem @@ -1,49 +1,49 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyyQXED5HyVWwq -nXyzmY317yMUJrIfsKvREG2C691dJNHgNg+oq5sjt/fzkyS84AvdOiicAsao4cYL -DulthaLpbC7msEBhvwAil0FNb5g3ERupe1KuTdUV1UuD/i6S2VoaNXUBBn1rD9Wc -BBc0lnx/4Wt92eQTI6925pt7ZHPQw2Olp7TQDElyi5qPxCem4uT0g3zbZsWqmmsI -MXbu+K3dEprzqA1ucKXbxUmZNkMwVs2XCmlLxrRUj8C3/zENtH17HWCznhR/IVcV -kgIuklkeiDsEhbWvUQumVXR7oPh/CPZAbjGqq5mVueHSHrp7brBVZKHZvoUka28Q -LWitq1W5AgMBAAECggEASkRnOMKfBeOmQy2Yl6K57eeg0sYgSDnDpd0FINWJ5x9c -b58FcjOXBodtYKlHIY6QXx3BsM0WaSEge4d+QBi7S+u8r+eXVwNYswXSArDQsk9R -Bl5MQkvisGciL3pvLmFLpIeASyS/BLJXMbAhU58PqK+jT2wr6idwxBuXivJ3ichu -ISdT1s2aMmnD86ulCD2DruZ4g0mmk5ffV+Cdj+WWkyvEaJW2GRYov2qdaqwSOxV4 -Yve9qStvEIWAf2cISQjbnw2Ww6Z5ebrqlOz9etkmwIly6DTbrIneBnoqJlFFWGlF -ghuzc5RE2w1GbcKSOt0qXH44MTf/j0r86dlu7UIxgQKBgQDq0pEaiZuXHi9OQAOp -PsDEIznCU1bcTDJewANHag5DPEnMKLltTNyLaBRulMypI+CrDbou0nDr29VOzfXx -mNvi/c7RttOBOx7kXKvu0JUFKe2oIWRsg0KsyMX7UFMVaHFgrW+8DhQc7HK7URiw -nitOnA7YwIHRF9BMmcWcLFEYBQKBgQDC6LPbXV8COKO0YCfGXPnE7EZGD/p0Q92Z -8CoSefphEScSdO1IpxFXG7fOZ4x2GQb9q7D3IvaeKAqNjUjkuyxdB30lIWDBwSWw -fFgsa2SZwD5P60G/ar50YJr6LiF333aUMDVmC9swFfZERAEmGUz2NTrPWQdIx/lu -PyDtUR75JQKBgHaoCCJ8vl5SJl1IA5GV4Bo8IoeLTSzsY9d09zMy6BoZcMD1Ix2T -5S2cXhayoegl9PT6bsYSGHVWFCdJ86ktMI826TcXRzDaCvYhzc9THroJQcnfdbtP -aHWezkv7fsAmkoPjn75K7ubeo+r7Q5qbkg6a1PW58N8TRXIvkackzaVxAoGBALAq -qh3U+AHG9dgbrPeyo6KkuCOtX39ks8/mbfCDRZYkbb9V5f5r2tVz3R93IlK/7jyr -yWimtmde46Lrl33922w+T5OW5qBZllo9GWkUrDn3s5qClcuQjJIdmxYTSfbSCJiK -NkmE39lHkG5FVRB9f71tgTlWS6ox7TYDYxx83NTtAoGAUJPAkGt4yGAN4Pdebv53 -bSEpAAULBHntiqDEOu3lVColHuZIucml/gbTpQDruE4ww4wE7dOhY8Q4wEBVYbRI -vHkSiWpJUvZCuKG8Foh5pm9hU0qb+rbQV7NhLJ02qn1AMGO3F/WKrHPPY8/b9YhQ -KfvPCYimQwBjVrEnSntLPR0= +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDZLSl8LdU54OUA +T8ctFuKLShJul2IMzaEDkFLoL4agccajgvsRxW+8vbc2Re0y1mVMvfNz7Cg5a7Ke +iSuFJOrQtvDt+HkU5c706YDmw15mBpDSHapkXr80G/ABFbstWafOfagVW45wv65K +H4cnpcqwrLhagmC8QG0KfWbf+Z2efOxaGu/dTNA3Cnq/BQGTdlkQ28xbrvd+Ubzg +cY4Y/hJ7Fw1/IeEhgr/iVJhQIUAklp9B+xqDfWuxIt5mNwWWh/Lfk+UxqE99EhQR +0YZWyIKfKzbeJLBzDqY2hQzVL6kAvY9cR1WbBItTA0G2F5qZ9B/3EHEFWZMBvobt ++UTEkuBdAgMBAAECggEAF3Eagz7nPyIZVdlGpIVN2r8aEjng6YTglmPjrxBCNdtS +F6AxvY9UKklIF2Gg4tXlhU0TlDWvedM4Koif2/VKK1Ez3FvvpePQXPs/YKlB7T1U +MHnnRII9nUBOva88zv5YcJ97nyKM03q9M18H1a29nShnlc1w56EEpBc5HX/yFYMv +kMYydvB5j0DQkJlkQNFn4yRag0wIIPeyXwwh5l98SMlr40hO10OYTOQPrrgP/ham +AOZ//DvGo5gF8hGJYoqG4vcYbxRfTqbc2lQ4XRknOT182l9gRum52ahkBY6LKb4r +IZXPStS6fCAR5S0lcdBb3uN/ap9SUfb9w/Dhj5DZAQKBgQDr06DcsBpoGV2dK9ib +YL5MxC5JL7G79IBPi3ThRiOSttKXv3oDAFB0AlJvFKwYmVz8SxXqQ2JUA4BfvMGF +TNrbhukzo0ou5boExnQW/RjLN3fWVq1JM7iLbNU9YYpPCIG5LXrt4ZDOwITeGe8f +bmZK9zxWxc6BBJtc3mTFS5tm4QKBgQDrwRyEn6oZ9TPbR69fPgWvDqQwKs+6TtYn +0otMG9UejbSMcyU4sI+bZouoca2CzoNi2qZVIvI9aOygUHQAP7Dyq1KhsvYtzJub +KEua379WnzBMMjJ56Q/e4aKTq229QvOk+ZEYl6aklZX7xnYetYNZQrp4QzUyOQTG +gfxgxKi0/QKBgQCy1esAUJ/F366JOS3rLqNBjehX4c5T7ae8KtJ433qskO4E29TI +H93jC7u9txyHDw5f2QUGgRE5Cuq4L2lGEDFMFvQUD7l69QVrB6ATqt25hhffuB1z +DMDfIqpXAPgk1Rui9SVq7gqlb4OS9nHLESqLoQ/l8d2XI4o6FACxSZPQoQKBgQCR +8AvwSUoqIXDFaB22jpVEJYMb0hSfFxhYtGvIZF5MOJowa0L6UcnD//mp/xzSoXYR +pppaj3R28VGxd7wnP0YRIl7XfAoKleMpbAtJRwKR458pO9WlQ9GwPeq/ENqw0xYx +5M+d8pqUvYiHv/X00pYJllYKBkiS21sKawLJAFQTHQKBgQCJCwVHxvxkdQ8G0sU2 +Vtv2W38hWOSg5+cxa+g1W6My2LhX34RkgKzuaUpYMlWGHzILpxIxhPrVLk1ZIjil +GIP969XJ1BjB/kFtLWdxXG8tH1If3JgzfSHUofPHF3CENoJYEZ1ugEfIPzWPZJDI +DL5zP8gmBL9ZAOO/J9YacxWYMQ== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIDbjCCAlagAwIBAgIJAMc+8VKBJ/S9MA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MjlaFw0yMzA3MTUxNzI4MjlaMEQx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRU -ZXN0IFMvTUlNRSBSU0EgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALLJBcQPkfJVbCqdfLOZjfXvIxQmsh+wq9EQbYLr3V0k0eA2D6irmyO39/OT -JLzgC906KJwCxqjhxgsO6W2FoulsLuawQGG/ACKXQU1vmDcRG6l7Uq5N1RXVS4P+ -LpLZWho1dQEGfWsP1ZwEFzSWfH/ha33Z5BMjr3bmm3tkc9DDY6WntNAMSXKLmo/E -J6bi5PSDfNtmxaqaawgxdu74rd0SmvOoDW5wpdvFSZk2QzBWzZcKaUvGtFSPwLf/ -MQ20fXsdYLOeFH8hVxWSAi6SWR6IOwSFta9RC6ZVdHug+H8I9kBuMaqrmZW54dIe -untusFVkodm+hSRrbxAtaK2rVbkCAwEAAaNjMGEwHQYDVR0OBBYEFMmRUwpjexZb -i71E8HaIqSTm5bZsMB8GA1UdIwQYMBaAFMmRUwpjexZbi71E8HaIqSTm5bZsMA8G -A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IB -AQAwpIVWQey2u/XoQSMSu0jd0EZvU+lhLaFrDy/AHQeG3yX1+SAOM6f6w+efPvyb -Op1NPI9UkMPb4PCg9YC7jgYokBkvAcI7J4FcuDKMVhyCD3cljp0ouuKruvEf4FBl -zyQ9pLqA97TuG8g1hLTl8G90NzTRcmKpmhs18BmCxiqHcTfoIpb3QvPkDX8R7LVt -9BUGgPY+8ELCgw868TuHh/Cnc67gBtRjBp0sCYVzGZmKsO5f1XdHrAZKYN5mEp0C -7/OqcDoFqORTquLeycg1At/9GqhDEgxNrqA+YEsPbLGAfsNuXUsXs2ubpGsOZxKt -Emsny2ah6fU2z7PztrUy/A80 +MIIDezCCAmOgAwIBAgIUBxh2L3ItsVPuBogDI0WfUX1lFnMwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxM1oYDzIxMjIw +NTEwMTUzMzEzWjBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgUlNBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDZLSl8LdU54OUAT8ctFuKLShJul2IMzaEDkFLoL4ag +ccajgvsRxW+8vbc2Re0y1mVMvfNz7Cg5a7KeiSuFJOrQtvDt+HkU5c706YDmw15m +BpDSHapkXr80G/ABFbstWafOfagVW45wv65KH4cnpcqwrLhagmC8QG0KfWbf+Z2e +fOxaGu/dTNA3Cnq/BQGTdlkQ28xbrvd+UbzgcY4Y/hJ7Fw1/IeEhgr/iVJhQIUAk +lp9B+xqDfWuxIt5mNwWWh/Lfk+UxqE99EhQR0YZWyIKfKzbeJLBzDqY2hQzVL6kA +vY9cR1WbBItTA0G2F5qZ9B/3EHEFWZMBvobt+UTEkuBdAgMBAAGjYzBhMB0GA1Ud +DgQWBBQVwRMha+JVX6dqHVcg1s/zqXNkWTAfBgNVHSMEGDAWgBQVwRMha+JVX6dq +HVcg1s/zqXNkWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkq +hkiG9w0BAQsFAAOCAQEAvdAmpDPi1Wt7Hk30dXKF7Ug6MUKETi+uoO1Suo9JhNko +/cpvoi8fbo/dnWVDfHVoItEn644Svver5UJdKJY62DvhilpCtAywYfCpgxkpKoKE +dnpjnRBSMcbVDImsqvf1YjzFKiOiD7kcVvz4V0NZY91ZWwu3vgaSvcTJQkpWN0a+ +LWanpVKqigl8nskttnBeiHDHGebxj3hawlIdtVlkbQwLLwlVkX99x1F73uS33IzB +Y6+ZJ2is7mD839B8fOVd9pvPvBBgahIrw5tzJ/Q+gITuVQd9E6RVXh10/Aw+i/8S +7tHpEUgP3hBk1P+wRQBWDxbHB28lE+41jvh3JObQWQ== -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smrsa1.pem b/deps/openssl/openssl/test/smime-certs/smrsa1.pem index d0d0b9e66b01c1..d32d8890478880 100644 --- a/deps/openssl/openssl/test/smime-certs/smrsa1.pem +++ b/deps/openssl/openssl/test/smime-certs/smrsa1.pem @@ -1,49 +1,49 @@ -----BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDXr9uzB/20QXKC -xhkfNnJvl2xl1hzdOcrQmAqo+AAAcA/D49ImuJDVQRaK2bcj54XB26i1kXuOrxID -3/etUb8yudfx8OAVwh8G0xVA4zhr8uXW85W2tBr4v0Lt+W6lSd6Hmfrk4GmE9LTU -/vzl9HUPW6SZShN1G0nY6oeUXvLi0vasEUKv3a51T6JFYg4c7qt5RCk/w8kwrQ0D -orQwCdkOPEIiC4b+nPStF12SVm5bx8rbYzioxuY/PdSebvt0APeqgRxSpCxqYnHs -CoNeHzSrGXcP0COzFeUOz2tdrhmH09JLbGZs4nbojPxMkjpJSv3/ekDG2CHYxXSH -XxpJstxZAgMBAAECggEASY4xsJaTEPwY3zxLqPdag2/yibBBW7ivz/9p80HQTlXp -KnbxXj8nNXLjCytAZ8A3P2t316PrrTdLP4ML5lGwkM4MNPhek00GY79syhozTa0i -cPHVJt+5Kwee/aVI9JmCiGAczh0yHyOM3+6ttIZvvXMVaSl4BUHvJ0ikQBc5YdzL -s6VM2gCOR6K6n+39QHDI/T7WwO9FFSNnpWFOCHwAWtyBMlleVj+xeZX8OZ/aT+35 -27yjsGNBftWKku29VDineiQC+o+fZGJs6w4JZHoBSP8TfxP8fRCFVNA281G78Xak -cEnKXwZ54bpoSa3ThKl+56J6NHkkfRGb8Rgt/ipJYQKBgQD5DKb82mLw85iReqsT -8bkp408nPOBGz7KYnQsZqAVNGfehM02+dcN5z+w0jOj6GMPLPg5whlEo/O+rt9ze -j6c2+8/+B4Bt5oqCKoOCIndH68jl65+oUxFkcHYxa3zYKGC9Uvb+x2BtBmYgvDRG -ew6I2Q3Zyd2ThZhJygUZpsjsbQKBgQDdtNiGTkgWOm+WuqBI1LT5cQfoPfgI7/da -ZA+37NBUQRe0cM7ddEcNqx7E3uUa1JJOoOYv65VyGI33Ul+evI8h5WE5bupcCEFk -LolzbMc4YQUlsySY9eUXM8jQtfVtaWhuQaABt97l+9oADkrhA+YNdEu2yiz3T6W+ -msI5AnvkHQKBgDEjuPMdF/aY6dqSjJzjzfgg3KZOUaZHJuML4XvPdjRPUlfhKo7Q -55/qUZ3Qy8tFBaTderXjGrJurc+A+LiFOaYUq2ZhDosguOWUA9yydjyfnkUXZ6or -sbvSoM+BeOGhnezdKNT+e90nLRF6cQoTD7war6vwM6L+8hxlGvqDuRNFAoGAD4K8 -d0D4yB1Uez4ZQp8m/iCLRhM3zCBFtNw1QU/fD1Xye5w8zL96zRkAsRNLAgKHLdsR -355iuTXAkOIBcJCOjveGQsdgvAmT0Zdz5FBi663V91o+IDlryqDD1t40CnCKbtRG -hng/ruVczg4x7OYh7SUKuwIP/UlkNh6LogNreX0CgYBQF9troLex6X94VTi1V5hu -iCwzDT6AJj63cS3VRO2ait3ZiLdpKdSNNW2WrlZs8FZr/mVutGEcWho8BugGMWST -1iZkYwly9Xfjnpd0I00ZIlr2/B3+ZsK8w5cOW5Lpb7frol6+BkDnBjbNZI5kQndn -zQpuMJliRlrq/5JkIbH6SA== +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDax3T7alefZcbm +CcdN0kEoBLwV8H25vre43RYjuPo64TBjeKUy27ayC1TXydF1eYm3HPrFYfkS0fZ6 +YK0xvwyxiQnesvcfnVe2fpXFPsl5RQvu1JKM7rJAuLC+YTRLez07IHhQnHQ25ZkR ++B4SL5mIhuOSJ9yyFJYJQ3Kdw/aX/jtnWVR8p3FyghJptWIm90ufW4xWFY0yNSW1 +KmkZuOWF7VPh5RC1C7woB/RHhyD2gOP7tF+eDJ/QbX4iki4gPRFHuNrSV8ZpvDkI +qqyF5BW8tyJneDkoWW8IuEpmNIzfbOCHvI6y7roeAmRrwH4/o5WxaEIsnQ/3pNvj +n6+vA+nfAgMBAAECggEAFR5MHQQYCYjDXoDoI7YdgwA+AFIoGLjKYZu5yjX4tZv3 +gJ/si7sTaMlY5cGTU1HUPirxIVeCjv4Eha31BJ3KsGJ9jj6Gm0nOuzd/O+ctKeRv +2/HaDvpFlk4dsCrlkjmxteuS9u5l9hygniWYutcBwjY0cRnMScZcm0VO+DVVMDj0 +9yNrFzhlmqV+ckawjK/J91r0uvnCVIsGA6akhlc5K0gwvFb/CC1WuceEeGx/38k3 +4OuiHtLyJfIlgyGD8C3QfJlMOBHeQ/DCo6GMqrOAad/chtcO7JklcJ+k2qylP2gu +e25NJCQVh+L32b9WrH3quH6fbLIg8a8MmUWl6te3FQKBgQDddu0Dp8R8fe2WnAE5 +oXdASAf2BpthRNqUdYpkkO7gOV0MXCKIEiGZ+WuWEYmNlsXZCJRABprqLw9O/5Td +2q+rCbdG9mSW2x82t/Ia4zd3r0RSHZyKbtOLtgmWfQkwVHy+rED8Juie5bNzHbjS +1mYtFP2KDQ5yZA95yFg8ZtXOawKBgQD85VOPnfXGOJ783JHepAn4J2x1Edi+ZDQ+ +Ml9g2LwetI46dQ0bF6V8RtcyWp0+6+ydX5U4JKhERFDivolD7Z1KFmlNLPs0cqSX +5g5kzTD+R+zpr9FRragYKyLdHsLP0ur75Rh5FQkUl2DmeKCMvMKAkio0cduVpVXT +SvWUBtkHXQKBgBy4VoZZ1GZcolocwx/pK6DfdoDWXIIhvsLv91GRZhkX91QqAqRo +zYi9StF8Vr1Q5zl9HlSrRp3GGpMhG/olaRCiQu1l+KeDpSmgczo/aysPRKntgyaE +ttRweA/XCUEGQ+MqTYcluJcarMnp+dUFztxb04F6rfvxs/wUGjVDFMkfAoGBAK+F +wx9UtPZk6gP6Wsu58qlnQ2Flh5dtGM1qTMR86OQu0OBFyVjaaqL8z/NE7Qp02H7J +jlmvJ5JqD/Gv6Llau+Zl86P66kcWoqJCrA7OU4jJBueSfadA7gAIQGRUK0Xuz+UQ +tpGjRfAiuMB9TIEhqaVuzRglRhBw9kZ2KkgZEJyJAoGBANrEpEwOhCv8Vt1Yiw6o +co96wYj+0LARJXw6rIfEuLkthBRRoHqQMKqwIGMrwjHlHXPnQmajONzIJd+u+OS4 +psCGetAIGegd3xNVpK2uZv9QBWBpQbuofOh/c2Ctmm2phL2sVwCZ0qwIeXuBwJEc +NOlOojKDO+dELErpShJgFIaU -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIDbDCCAlSgAwIBAgIJANk5lu6mSyBAMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzBaFw0yMzA1MjYxNzI4MzBaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBSU0EgIzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQDXr9uzB/20QXKCxhkfNnJvl2xl1hzdOcrQmAqo+AAAcA/D49ImuJDVQRaK -2bcj54XB26i1kXuOrxID3/etUb8yudfx8OAVwh8G0xVA4zhr8uXW85W2tBr4v0Lt -+W6lSd6Hmfrk4GmE9LTU/vzl9HUPW6SZShN1G0nY6oeUXvLi0vasEUKv3a51T6JF -Yg4c7qt5RCk/w8kwrQ0DorQwCdkOPEIiC4b+nPStF12SVm5bx8rbYzioxuY/PdSe -bvt0APeqgRxSpCxqYnHsCoNeHzSrGXcP0COzFeUOz2tdrhmH09JLbGZs4nbojPxM -kjpJSv3/ekDG2CHYxXSHXxpJstxZAgMBAAGjYDBeMAwGA1UdEwEB/wQCMAAwDgYD -VR0PAQH/BAQDAgXgMB0GA1UdDgQWBBTmjc+lrTQuYx/VBOBGjMvufajvhDAfBgNV -HSMEGDAWgBTJkVMKY3sWW4u9RPB2iKkk5uW2bDANBgkqhkiG9w0BAQUFAAOCAQEA -dr2IRXcFtlF16kKWs1VTaFIHHNQrfSVHBkhKblPX3f/0s/i3eXgwKUu7Hnb6T3/o -E8L+e4ioQNhahTLt9ruJNHWA/QDwOfkqM3tshCs2xOD1Cpy7Bd3Dn0YBrHKyNXRK -WelGp+HetSXJGW4IZJP7iES7Um0DGktLabhZbe25EnthRDBjNnaAmcofHECWESZp -lEHczGZfS9tRbzOCofxvgLbF64H7wYSyjAe6R8aain0VRbIusiD4tCHX/lOMh9xT -GNBW8zTL+tV9H1unjPMORLnT0YQ3oAyEND0jCu0ACA1qGl+rzxhF6bQcTUNEbRMu -9Hjq6s316fk4Ne0EUF3PbA== +MIIDeTCCAmGgAwIBAgIUM6U1Peo3wzfAJIrzINejJJfmRzkwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxM1oYDzIxMjIw +NTA5MTUzMzEzWjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgUlNBICMxMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA2sd0+2pXn2XG5gnHTdJBKAS8FfB9ub63uN0WI7j6 +OuEwY3ilMtu2sgtU18nRdXmJtxz6xWH5EtH2emCtMb8MsYkJ3rL3H51Xtn6VxT7J +eUUL7tSSjO6yQLiwvmE0S3s9OyB4UJx0NuWZEfgeEi+ZiIbjkifcshSWCUNyncP2 +l/47Z1lUfKdxcoISabViJvdLn1uMVhWNMjUltSppGbjlhe1T4eUQtQu8KAf0R4cg +9oDj+7Rfngyf0G1+IpIuID0RR7ja0lfGabw5CKqsheQVvLciZ3g5KFlvCLhKZjSM +32zgh7yOsu66HgJka8B+P6OVsWhCLJ0P96Tb45+vrwPp3wIDAQABo2AwXjAMBgNV +HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHQ4EFgQUHw4Us7FXwgLtZ1JB +MOAHSkNYfEkwHwYDVR0jBBgwFoAUFcETIWviVV+nah1XINbP86lzZFkwDQYJKoZI +hvcNAQELBQADggEBAAMAXEjTNo7evn6BvfEaG2q21q9xfFear/M0zxc5xcTj+WP+ +BKrlxXg5RlVFyvmzGhwZBERsDMJYa54aw8scDJsy/0zPdWST39dNev7xH13pP8nF +QF4MGPKIqBzX8iDCqhz70p1w2ndLjz1dvsAqn6z9/Sh3T2kj6DfZY3jA49pMEim1 +vYd4lWa5AezU3+cLtBbo2c2iyG2W7SFpnNTjLX823f9rbVPnUb93ZI/tDXDIf5hL +0hocZs+MWdC7Ly1Ru4PXa6+DeOM0z673me/Q27e24OBbG2eq5g7eW5euxJinGkpI +XGGKTKrBCPxSdTtwSNHU9HsggT8a0wXL2QocZ3w= -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smrsa2.pem b/deps/openssl/openssl/test/smime-certs/smrsa2.pem index 2f17cb2978f49c..a7a21fc80facca 100644 --- a/deps/openssl/openssl/test/smime-certs/smrsa2.pem +++ b/deps/openssl/openssl/test/smime-certs/smrsa2.pem @@ -1,49 +1,49 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDcYC4tS2Uvn1Z2 -iDgtfkJA5tAqgbN6X4yK02RtVH5xekV9+6+eTt/9S+iFAzAnwqR/UB1R67ETrsWq -V8u9xLg5fHIwIkmu9/6P31UU9cghO7J1lcrhHvooHaFpcXepPWQacpuBq2VvcKRD -lDfVmdM5z6eS3dSZPTOMMP/xk4nhZB8mcw27qiccPieS0PZ9EZB63T1gmwaK1Rd5 -U94Pl0+zpDqhViuXmBfiIDWjjz0BzHnHSz5Rg4S3oXF1NcojhptIWyI0r7dgn5J3 -NxC4kgKdjzysxo6iWd0nLgz7h0jUdj79EOis4fg9G4f0EFWyQf7iDxGaA93Y9ePB -Jv5iFZVZAgMBAAECggEBAILIPX856EHb0KclbhlpfY4grFcdg9LS04grrcTISQW1 -J3p9nBpZ+snKe6I8Yx6lf5PiipPsSLlCliHiWpIzJZVQCkAQiSPiHttpEYgP2IYI -dH8dtznkdVbLRthZs0bnnPmpHCpW+iqpcYJ9eqkz0cvUNUGOjjWmwWmoRqwp/8CW -3S1qbkQiCh0Mk2fQeGar76R06kXQ9MKDEj14zyS3rJX+cokjEoMSlH8Sbmdh2mJz -XlNZcvqmeGJZwQWgbVVHOMUuZaKJiFa+lqvOdppbqSx0AsCRq6vjmjEYQEoOefYK -3IJM9IvqW5UNx0Cy4kQdjhZFFwMO/ALD3QyF21iP4gECgYEA+isQiaWdaY4UYxwK -Dg+pnSCKD7UGZUaCUIv9ds3CbntMOONFe0FxPsgcc4jRYQYj1rpQiFB8F11+qXGa -P/IHcnjr2+mTrNY4I9Bt1Lg+pHSS8QCgzeueFybYMLaSsXUo7tGwpvw6UUb6/YWI -LNCzZbrCLg1KZjGODhhxtvN45ZkCgYEA4YNSe+GMZlxgsvxbLs86WOm6DzJUPvxN -bWmni0+Oe0cbevgGEUjDVc895uMFnpvlgO49/C0AYJ+VVbStjIMgAeMnWj6OZoSX -q49rI8KmKUxKgORZiiaMqGWQ7Rxv68+4S8WANsjFxoUrE6dNV3uYDIUsiSLbZeI8 -38KVTcLohcECgYEAiOdyWHGq0G4xl/9rPUCzCMsa4velNV09yYiiwBZgVgfhsawm -hQpOSBZJA60XMGqkyEkT81VgY4UF4QLLcD0qeCnWoXWVHFvrQyY4RNZDacpl87/t -QGO2E2NtolL3umesa+2TJ/8Whw46Iu2llSjtVDm9NGiPk5eA7xPPf1iEi9kCgYAb -0EmVE91wJoaarLtGS7LDkpgrFacEWbPnAbfzW62UENIX2Y1OBm5pH/Vfi7J+vHWS -8E9e0eIRCL2vY2hgQy/oa67H151SkZnvQ/IP6Ar8Xvd1bDSK8HQ6tMQqKm63Y9g0 -KDjHCP4znOsSMnk8h/bZ3HcAtvbeWwftBR/LBnYNQQKBgA1leIXLLHRoX0VtS/7e -y7Xmn7gepj+gDbSuCs5wGtgw0RB/1z/S3QoS2TCbZzKPBo20+ivoRP7gcuFhduFR -hT8V87esr/QzLVpjLedQDW8Xb7GiO3BsU/gVC9VcngenbL7JObl3NgvdreIYo6+n -yrLyf+8hjm6H6zkjqiOkHAl+ +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDkoMi4sqj2mN8j +SaFAibXEfeYYrzBHIdCm/uaXWit81fXOSFVw1rbeAppxz7bOcSEN50lpdP2UX3/b +FYFD3exHXjvch9NPNgQaNkCqTNTuYa2L9wrpltXnon7tH3W/zZfF+/qpUSu1f6rk +GyxjVXxLwjIawCX0rbLcdFCVVy+EyvQkvSxXjafrDMzshWzPDbtjUv3SH6avqrPn +4NX0fv3BdBwTfDLAw/m8nN+9B9Mg0V7UNM1IJY/Vo5pLhv+MrEf8SnAS+1Wt43rT +3PY9iMZMMWUswdgmPY0yCN95ggwNrSMGV60yvEDxINWuJoR8s0lybDdFa+AB5v4T +hqKpspFNAgMBAAECggEAZmWu0K5QJ7Y7Rlo9ayLicsFyk36vUESQZ6MF0ybzEEPi +BkR2ZAX+vDuNQckm1pprlAcRZbactl35bT3Z+fQE1cgaZoC8/x6xwq2m0796pNPB +v0zjqdBBOLAaSgjLm56wyd88GqZ8vZsTBnw3KrxIYcP13e5OcaJ0V/GOf/yfD0lg +Tq9i7V5Iq++Fpo2KvJA8FMgqcfhvhdo40rRykoBfzEZpBk4Ia/Yijsbx5sE15pFZ +DfmsMbD+vViuM8IavHo61mBNyYeydwlgIMqUgP/6xbYUov/XSUojrLG+IQuvDx9D +xzTHGM+IBJxQZMza/mDVcjUAcDEjWt/Mve8ibTQCbwKBgQDyaiGsURtlf/8xmmvT +RQQFFFsJ8SXHNYmnceNULIjfDxpLk1yC4kBNUD+liAJscoVlOcByHmXQRtnY1PHq +AwyrwplGd82773mtriDVFSjhD+GB7I0Hv2j+uiFZury0jR/6/AsWKCtTqd0opyuB +8rGZjguiwZIjeyxd8mL1dncUHwKBgQDxcNxHUvIeDBvAmtK65xWUuLcqtK9BblBH +YVA7p93RqX4E+w3J0OCvQRQ3r1GCMMzFEO0oOvNfMucU4rbQmx1pbzF8aQU+8iEW +kYpaWUbPUQ2hmBblhjGYHsigt/BrzaW0QveVIWcGiyVVX9wiCzJH5moJlCRK2oHR +B36hdlmNEwKBgQCSlWSpOx4y4RQiHXtn9Eq6+5UVTPGIJTKIwxAwnQFiyFIhMwl0 +x3UUixsBcF3uz80j6akaGJF+QOmH+TQTSibGUdS3TMhmBSfxwuJtlu7yMNUu6Chb +b/4AUfLKvGVRVCjrbq8Rhda1L3jhFTz0xhlofgFBOIWy2M96O5BlV24oBwKBgQDs +cf93ZfawkGEZVUXsPeQ3mlHe48YCCPtbfCSr13B3JErCq+5L52AyoUQgaHQlUI8o +qrPmQx0V7O662G/6iP3bxEYtNVgq1cqrpGpeorGi1BjKWPyLWMj21abbJmev21xc +1XxLMsQHd3tfSZp2SIq8OR09NjP4jla1k2Ziz1lRuwKBgQCUJXjhW4dPoOzC7DJK +u4PsxcKkJDwwtfNudVDaHcbvvaHELTAkE2639vawH0TRwP6TDwmlbTQJP4EW+/0q +13VcNXVAZSruA9dvxlh4vNUH3PzTDdFIJzGVbYbV9p5t++EQ7gRLuLZqs99BOzM9 +k6W9F60mEFz1Owh+lQv7WfSIVA== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIDbDCCAlSgAwIBAgIJANk5lu6mSyBBMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzBaFw0yMzA1MjYxNzI4MzBaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBSU0EgIzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQDcYC4tS2Uvn1Z2iDgtfkJA5tAqgbN6X4yK02RtVH5xekV9+6+eTt/9S+iF -AzAnwqR/UB1R67ETrsWqV8u9xLg5fHIwIkmu9/6P31UU9cghO7J1lcrhHvooHaFp -cXepPWQacpuBq2VvcKRDlDfVmdM5z6eS3dSZPTOMMP/xk4nhZB8mcw27qiccPieS -0PZ9EZB63T1gmwaK1Rd5U94Pl0+zpDqhViuXmBfiIDWjjz0BzHnHSz5Rg4S3oXF1 -NcojhptIWyI0r7dgn5J3NxC4kgKdjzysxo6iWd0nLgz7h0jUdj79EOis4fg9G4f0 -EFWyQf7iDxGaA93Y9ePBJv5iFZVZAgMBAAGjYDBeMAwGA1UdEwEB/wQCMAAwDgYD -VR0PAQH/BAQDAgXgMB0GA1UdDgQWBBT0arpyYMHXDPVL7MvzE+lx71L7sjAfBgNV -HSMEGDAWgBTJkVMKY3sWW4u9RPB2iKkk5uW2bDANBgkqhkiG9w0BAQUFAAOCAQEA -I8nM42am3aImkZyrw8iGkaGhKyi/dfajSWx6B9izBUh+3FleBnUxxOA+mn7M8C47 -Ne18iaaWK8vEux9KYTIY8BzXQZL1AuZ896cXEc6bGKsME37JSsocfuB5BIGWlYLv -/ON5/SJ0iVFj4fAp8z7Vn5qxRJj9BhZDxaO1Raa6cz6pm0imJy9v8y01TI6HsK8c -XJQLs7/U4Qb91K+IDNX/lgW3hzWjifNpIpT5JyY3DUgbkD595LFV5DDMZd0UOqcv -6cyN42zkX8a0TWr3i5wu7pw4k1oD19RbUyljyleEp0DBauIct4GARdBGgi5y1H2i -NzYzLAPBkHCMY0Is3KKIBw== +MIIDeTCCAmGgAwIBAgIUTMQXiTcI/rpzqO91NyFWpjLE3KkwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxM1oYDzIxMjIw +NTA5MTUzMzEzWjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgUlNBICMyMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5KDIuLKo9pjfI0mhQIm1xH3mGK8wRyHQpv7ml1or +fNX1zkhVcNa23gKacc+2znEhDedJaXT9lF9/2xWBQ93sR1473IfTTzYEGjZAqkzU +7mGti/cK6ZbV56J+7R91v82Xxfv6qVErtX+q5BssY1V8S8IyGsAl9K2y3HRQlVcv +hMr0JL0sV42n6wzM7IVszw27Y1L90h+mr6qz5+DV9H79wXQcE3wywMP5vJzfvQfT +INFe1DTNSCWP1aOaS4b/jKxH/EpwEvtVreN609z2PYjGTDFlLMHYJj2NMgjfeYIM +Da0jBletMrxA8SDVriaEfLNJcmw3RWvgAeb+E4aiqbKRTQIDAQABo2AwXjAMBgNV +HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHQ4EFgQUSJ0v3SKahe6eKssR +rBvYLBprFTgwHwYDVR0jBBgwFoAUFcETIWviVV+nah1XINbP86lzZFkwDQYJKoZI +hvcNAQELBQADggEBAKoyszyZ3DfCOIVzeJrnScXuMvRkVqO5aGmgZxtY9r6gPk8v +gXaEFXDKqRbGqEnuwEjpew+SVZO8nrVpdIP7fydpufy7Cu91Ev4YL1ui5Vc66+IK +7dXV7eZYcH/dDJBPZddHx9vGhcr0w8B1W9nldM3aQE/RQjOmMRDc7/Hnk0f0RzJp +LA0adW3ry27z2s4qeCwkV9DNSh1KoGfcLwydBiXmJ1XINMFH/scD4pk9UeJpUL+5 +zvTaDzUmzLsI1gH3j/rlzJuNJ7EMfggKlfQdit9Qn6+6Gjk6T5jkZfzcq3LszuEA +EFtkxWyBmmEgh4EmvZGAyrUvne1hIIksKe3iJ+E= -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/smime-certs/smrsa3.pem b/deps/openssl/openssl/test/smime-certs/smrsa3.pem index 14c27f64aa9001..980d3af3b4c967 100644 --- a/deps/openssl/openssl/test/smime-certs/smrsa3.pem +++ b/deps/openssl/openssl/test/smime-certs/smrsa3.pem @@ -1,49 +1,49 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyK+BTAOJKJjji -OhY60NeZjzGGZxEBfCm62n0mwkzusW/V/e63uwj6uOVCFoVBz5doMf3M6QIS2jL3 -Aw6Qs5+vcuLA0gHrqIwjYQz1UZ5ETLKLKbQw6YOIVfsFSTxytUVpfcByrubWiLKX -63theG1/IVokDK/9/k52Kyt+wcCjuRb7AJQFj2OLDRuWm/gavozkK103gQ+dUq4H -XamZMtTq1EhQOfc0IUeCOEL6xz4jzlHHfzLdkvb7Enhav2sXDfOmZp/DYf9IqS7l -vFkkINPVbYFBTexaPZlFwmpGRjkmoyH/w+Jlcpzs+w6p1diWRpaSn62bbkRN49j6 -L2dVb+DfAgMBAAECggEAciwDl6zdVT6g/PbT/+SMA+7qgYHSN+1koEQaJpgjzGEP -lUUfj8TewCtzXaIoyj9IepBuXryBg6snNXpT/w3bqgYon/7zFBvxkUpDj4A5tvKf -BuY2fZFlpBvUu1Ju1eKrFCptBBBoA9mc+BUB/ze4ktrAdJFcxZoMlVScjqGB3GdR -OHw2x9BdWGCJBhiu9VHhAAb/LVWi6xgDumYSWZwN2yovg+7J91t5bsENeBRHycK+ -i5dNFh1umIK9N0SH6bpHPnLHrCRchrQ6ZRRxL4ZBKA9jFRDeI7OOsJuCvhGyJ1se -snsLjr/Ahg00aiHCcC1SPQ6pmXAVBCG7hf4AX82V4QKBgQDaFDE+Fcpv84mFo4s9 -wn4CZ8ymoNIaf5zPl/gpH7MGots4NT5+Ns+6zzJQ6TEpDjTPx+vDaabP7QGXwVZn -8NAHYvCQK37b+u9HrOt256YYRDOmnJFSbsJdmqzMEzpTNmQ8GuI37cZCS9CmSMv+ -ab/plcwuv0cJRSC83NN2AFyu1QKBgQDRJzKIBQlpprF9rA0D5ZjLVW4OH18A0Mmm -oanw7qVutBaM4taFN4M851WnNIROyYIlkk2fNgW57Y4M8LER4zLrjU5HY4lB0BMX -LQWDbyz4Y7L4lVnnEKfQxWFt9avNZwiCxCxEKy/n/icmVCzc91j9uwKcupdzrN6E -yzPd1s5y4wKBgQCkJvzmAdsOp9/Fg1RFWcgmIWHvrzBXl+U+ceLveZf1j9K5nYJ7 -2OBGer4iH1XM1I+2M4No5XcWHg3L4FEdDixY0wXHT6Y/CcThS+015Kqmq3fBmyrc -RNjzQoF9X5/QkSmkAIx1kvpgXtcgw70htRIrToGSUpKzDKDW6NYXhbA+PQKBgDJK -KH5IJ8E9kYPUMLT1Kc4KVpISvPcnPLVSPdhuqVx69MkfadFSTb4BKbkwiXegQCjk -isFzbeEM25EE9q6EYKP+sAm+RyyJ6W0zKBY4TynSXyAiWSGUAaXTL+AOqCaVVZiL -rtEdSUGQ/LzclIT0/HLV2oTw4KWxtTdc3LXEhpNdAoGBAM3LckiHENqtoeK2gVNw -IPeEuruEqoN4n+XltbEEv6Ymhxrs6T6HSKsEsLhqsUiIvIzH43KMm45SNYTn5eZh -yzYMXLmervN7c1jJe2Y2MYv6hE+Ypj1xGW4w7s8WNKmVzLv97beisD9AZrS7sXfF -RvOAi5wVkYylDxV4238MAZIq +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQD5A/t3norj/167 +toKG1Ygtg3G+pZ4Nwl5a9flnm8JdSMW5TEEP1TSvDVIEuAVi7xqoAn6heypoaMkB +GJ+AoSo9R7umdhhq2vnmWFNsdH6oDzynVXixyURo81YrN3sn9Xd55ivTiSpZXldi +ECr2T0BYvOw0h497bPs6gY9LqgrBHNYVF3lFhdOmYWv+2qSdti+1gV3t24pv1CrK +2AdX5Epdd5jR+eNnt+suZqoPC0hTcNjszJLcfDYFXHva9BcE0DfrgcYSmoSBU53M +jt63TClK6ZoVcPJ7vXjFRHncvs1/d+nc9BdL9FsGI1ezspSwcJHqex2wgo76yDrq +DE4s23rPAgMBAAECggEAEDi+VWD5VUpjD5zWOoPQiRDGBJBhtMAKkl6okxEmXvWb +Xz3STFnjHgA1JFHW3bRU9BHI9k8vSHmnlnkfKb3V/ZX5IHNcKCHb/x9NBak+QLVQ +0zLtfE9vxiTC0B/oac+MPaiD4hYFQ81pFwK6VS0Poi8ZCBJtOkRqfUvsyV8zZrgh +/6cs4mwOVyZPFRgF9eWXYv7PJz8pNRizhII0iv9H/r2I3DzsZLPCg7c29mP+I/SG +A7Pl82UXjtOc0KurGY2M5VheZjxJT/k/FLMkWY2GS5n6dfcyzsVSKb25HoeuvQsI +vs1mKs+Onbobdc17hCcKVJzbi3DwXs5XDhrEzfHccQKBgQD88uBxVCRV31PsCN6I +pKxQDGgz+1BqPqe7KMRiZI7HgDUK0eCM3/oG089/jsBtJcSxnScLSVNBjQ+xGiFi +YCD4icQoJSzpqJyR6gDq5lTHASAe+9LWRW771MrtyACQWNXowYEyu8AjekrZkCUS +wIKVpw57oWykzIoS7ixZsJ8gxwKBgQD8BPWqJEsLiQvOlS5E/g88eV1KTpxm9Xs+ +BbwsDXZ7m4Iw5lYaUu5CwBB/2jkGGRl8Q/EfAdUT7gXv3t6x5b1qMXaIczmRGYto +NuI3AH2MPxAa7lg5TgBgie1r7PKwyPMfG3CtDx6n8W5sexgJpbIy5u7E+U6d8s1o +c7EcsefduQKBgCkHJAx9v18GWFBip+W2ABUDzisQSlzRSNd8p03mTZpiWzgkDq4K +7j0JQhDIkMGjbKH6gYi9Hfn17WOmf1+7g92MSvrP/NbxeGPadsejEIEu14zu/6Wt +oXDLdRbYZ+8B2cBlEpWuCl42yck8Lic6fnPTou++oSah3otvglYR5d2lAoGACd8L +3FE1m0sP6lSPjmZBJIZAcDOqDqJY5HIHD9arKGZL8CxlfPx4lqa9PrTGfQWoqORk +YmmI9hHhq6aYJHGyPKGZWfjhbVyJyFg1/h+Hy2GA+P0S+ZOjkiR050BNtTz5wOMr +Q6wO8FcVkywzIdWaqEHBYne9a5RiFVBKxKv3QAkCgYBxmCBKajFkMVb4Uc55WqJs +Add0mctGgmZ1l5vq81eWe3wjM8wgfJgaD3Q3gwx2ABUX/R+OsVWSh4o5ZR86sYoz +TviknBHF8GeDLjpT49+04fEaz336J2JOptF9zIpz7ZK1nrOEjzaZGtumReVjUP7X +fNcb5iDYqZRzD8ixBbLxUw== -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIDbDCCAlSgAwIBAgIJANk5lu6mSyBCMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR0wGwYDVQQDDBRUZXN0IFMv -TUlNRSBSU0EgUm9vdDAeFw0xMzA3MTcxNzI4MzBaFw0yMzA1MjYxNzI4MzBaMEUx -CzAJBgNVBAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMR4wHAYDVQQDDBVU -ZXN0IFMvTUlNRSBFRSBSU0EgIzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCyK+BTAOJKJjjiOhY60NeZjzGGZxEBfCm62n0mwkzusW/V/e63uwj6uOVC -FoVBz5doMf3M6QIS2jL3Aw6Qs5+vcuLA0gHrqIwjYQz1UZ5ETLKLKbQw6YOIVfsF -STxytUVpfcByrubWiLKX63theG1/IVokDK/9/k52Kyt+wcCjuRb7AJQFj2OLDRuW -m/gavozkK103gQ+dUq4HXamZMtTq1EhQOfc0IUeCOEL6xz4jzlHHfzLdkvb7Enha -v2sXDfOmZp/DYf9IqS7lvFkkINPVbYFBTexaPZlFwmpGRjkmoyH/w+Jlcpzs+w6p -1diWRpaSn62bbkRN49j6L2dVb+DfAgMBAAGjYDBeMAwGA1UdEwEB/wQCMAAwDgYD -VR0PAQH/BAQDAgXgMB0GA1UdDgQWBBQ6CkW5sa6HrBsWvuPOvMjyL5AnsDAfBgNV -HSMEGDAWgBTJkVMKY3sWW4u9RPB2iKkk5uW2bDANBgkqhkiG9w0BAQUFAAOCAQEA -JhcrD7AKafVzlncA3cZ6epAruj1xwcfiE+EbuAaeWEGjoSltmevcjgoIxvijRVcp -sCbNmHJZ/siQlqzWjjf3yoERvLDqngJZZpQeocMIbLRQf4wgLAuiBcvT52wTE+sa -VexeETDy5J1OW3wE4A3rkdBp6hLaymlijFNnd5z/bP6w3AcIMWm45yPm0skM8RVr -O3UstEFYD/iy+p+Y/YZDoxYQSW5Vl+NkpGmc5bzet8gQz4JeXtH3z5zUGoDM4XK7 -tXP3yUi2eecCbyjh/wgaQiVdylr1Kv3mxXcTl+cFO22asDkh0R/y72nTCu5fSILY -CscFo2Z2pYROGtZDmYqhRw== +MIIDeTCCAmGgAwIBAgIUIDyc//j/LoNDesZTGbPBoVarv4EwDQYJKoZIhvcNAQEL +BQAwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAbBgNV +BAMMFFRlc3QgUy9NSU1FIFJTQSBSb290MCAXDTIyMDYwMjE1MzMxM1oYDzIxMjIw +NTA5MTUzMzEzWjBFMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBHcm91 +cDEeMBwGA1UEAwwVVGVzdCBTL01JTUUgRUUgUlNBICMzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA+QP7d56K4/9eu7aChtWILYNxvqWeDcJeWvX5Z5vC +XUjFuUxBD9U0rw1SBLgFYu8aqAJ+oXsqaGjJARifgKEqPUe7pnYYatr55lhTbHR+ +qA88p1V4sclEaPNWKzd7J/V3eeYr04kqWV5XYhAq9k9AWLzsNIePe2z7OoGPS6oK +wRzWFRd5RYXTpmFr/tqknbYvtYFd7duKb9QqytgHV+RKXXeY0fnjZ7frLmaqDwtI +U3DY7MyS3Hw2BVx72vQXBNA364HGEpqEgVOdzI7et0wpSumaFXDye714xUR53L7N +f3fp3PQXS/RbBiNXs7KUsHCR6nsdsIKO+sg66gxOLNt6zwIDAQABo2AwXjAMBgNV +HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHQ4EFgQUN9pGq/UFS3o50rTi +V+AYgAk+3R4wHwYDVR0jBBgwFoAUFcETIWviVV+nah1XINbP86lzZFkwDQYJKoZI +hvcNAQELBQADggEBAGcOh380/6aJqMpYBssuf2CB3DX/hGKdvEF7fF8iNSfl5HHq +112kHl3MhbL9Th/safJq9sLDJqjXRNdVCUJJbU4YI2P2gsi04paC0qxWxMLtzQLd +CE7ki2xH94Fuu/dThbpzZBABROO1RrdI24GDGt9t4Gf0WVkobmT/zNlwGppKTIB2 +iV/Ug30iKr/C49UzwUIa+XXXujkjPTmGSnrKwVQNxQh81rb+iTL7GEnNuqDsatHW +ZyLS2SaVdG5tMqDkITPMDGjehUzJcAbVc8Bv4m8Ukuov3uDj2Doc6MxlvrVkV0AE +BcSCb/bWQJJ/X4LQZlx9cMk4NINxV9UeFPZOefg= -----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/ssl-tests/16-certstatus.conf b/deps/openssl/openssl/test/ssl-tests/16-certstatus.conf deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf b/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf new file mode 100644 index 00000000000000..4280db7114d635 --- /dev/null +++ b/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf @@ -0,0 +1,54 @@ +# Generated with generate_ssl_tests.pl + +num_tests = 2 + +test-0 = 0-Just a sanity test case +test-1 = 1-Pass with empty groups with TLS1.2 +# =========================================================== + +[0-Just a sanity test case] +ssl_conf = 0-Just a sanity test case-ssl + +[0-Just a sanity test case-ssl] +server = 0-Just a sanity test case-server +client = 0-Just a sanity test case-client + +[0-Just a sanity test case-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[0-Just a sanity test case-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-0] +ExpectedResult = Success + + +# =========================================================== + +[1-Pass with empty groups with TLS1.2] +ssl_conf = 1-Pass with empty groups with TLS1.2-ssl + +[1-Pass with empty groups with TLS1.2-ssl] +server = 1-Pass with empty groups with TLS1.2-server +client = 1-Pass with empty groups with TLS1.2-client + +[1-Pass with empty groups with TLS1.2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[1-Pass with empty groups with TLS1.2-client] +CipherString = DEFAULT +Groups = sect163k1 +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-1] +ExpectedResult = Success + + diff --git a/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf.in b/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf.in new file mode 100644 index 00000000000000..edffc0ffc92b6f --- /dev/null +++ b/deps/openssl/openssl/test/ssl-tests/30-supported-groups.conf.in @@ -0,0 +1,45 @@ +# -*- mode: perl; -*- +# Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +## SSL test configurations + +package ssltests; +use OpenSSL::Test::Utils; + +our @tests = ( + { + name => "Just a sanity test case", + server => { }, + client => { }, + test => { "ExpectedResult" => "Success" }, + }, +); + +our @tests_tls1_3 = ( + { + name => "Fail empty groups with TLS1.3", + server => { }, + client => { "Groups" => "sect163k1" }, + test => { "ExpectedResult" => "ClientFail" }, + }, +); + +our @tests_tls1_2 = ( + { + name => "Pass with empty groups with TLS1.2", + server => { }, + client => { "Groups" => "sect163k1", + "MaxProtocol" => "TLSv1.2" }, + test => { "ExpectedResult" => "Success" }, + }, +); + +push @tests, @tests_tls1_3 unless disabled("tls1_3") + || !disabled("ec2m") || disabled("ec"); +push @tests, @tests_tls1_2 unless disabled("tls1_2") || disabled("ec"); diff --git a/deps/openssl/openssl/test/sslapitest.c b/deps/openssl/openssl/test/sslapitest.c index 74085a0fe5eff3..5c85e3643a16d3 100644 --- a/deps/openssl/openssl/test/sslapitest.c +++ b/deps/openssl/openssl/test/sslapitest.c @@ -7032,6 +7032,171 @@ static int test_set_alpn(void) return testresult; } +/* + * Test SSL_CTX_set1_verify/chain_cert_store and SSL_CTX_get_verify/chain_cert_store. + */ +static int test_set_verify_cert_store_ssl_ctx(void) +{ + SSL_CTX *ctx = NULL; + int testresult = 0; + X509_STORE *store = NULL, *new_store = NULL, + *cstore = NULL, *new_cstore = NULL; + + /* Create an initial SSL_CTX. */ + ctx = SSL_CTX_new(TLS_server_method()); + if (!TEST_ptr(ctx)) + goto end; + + /* Retrieve verify store pointer. */ + if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store))) + goto end; + + /* Retrieve chain store pointer. */ + if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore))) + goto end; + + /* We haven't set any yet, so this should be NULL. */ + if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore)) + goto end; + + /* Create stores. We use separate stores so pointers are different. */ + new_store = X509_STORE_new(); + if (!TEST_ptr(new_store)) + goto end; + + new_cstore = X509_STORE_new(); + if (!TEST_ptr(new_cstore)) + goto end; + + /* Set stores. */ + if (!TEST_true(SSL_CTX_set1_verify_cert_store(ctx, new_store))) + goto end; + + if (!TEST_true(SSL_CTX_set1_chain_cert_store(ctx, new_cstore))) + goto end; + + /* Should be able to retrieve the same pointer. */ + if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store))) + goto end; + + if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore))) + goto end; + + if (!TEST_ptr_eq(store, new_store) || !TEST_ptr_eq(cstore, new_cstore)) + goto end; + + /* Should be able to unset again. */ + if (!TEST_true(SSL_CTX_set1_verify_cert_store(ctx, NULL))) + goto end; + + if (!TEST_true(SSL_CTX_set1_chain_cert_store(ctx, NULL))) + goto end; + + /* Should now be NULL. */ + if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store))) + goto end; + + if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore))) + goto end; + + if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore)) + goto end; + + testresult = 1; + +end: + X509_STORE_free(new_store); + X509_STORE_free(new_cstore); + SSL_CTX_free(ctx); + return testresult; +} + +/* + * Test SSL_set1_verify/chain_cert_store and SSL_get_verify/chain_cert_store. + */ +static int test_set_verify_cert_store_ssl(void) +{ + SSL_CTX *ctx = NULL; + SSL *ssl = NULL; + int testresult = 0; + X509_STORE *store = NULL, *new_store = NULL, + *cstore = NULL, *new_cstore = NULL; + + /* Create an initial SSL_CTX. */ + ctx = SSL_CTX_new(TLS_server_method()); + if (!TEST_ptr(ctx)) + goto end; + + /* Create an SSL object. */ + ssl = SSL_new(ctx); + if (!TEST_ptr(ssl)) + goto end; + + /* Retrieve verify store pointer. */ + if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store))) + goto end; + + /* Retrieve chain store pointer. */ + if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore))) + goto end; + + /* We haven't set any yet, so this should be NULL. */ + if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore)) + goto end; + + /* Create stores. We use separate stores so pointers are different. */ + new_store = X509_STORE_new(); + if (!TEST_ptr(new_store)) + goto end; + + new_cstore = X509_STORE_new(); + if (!TEST_ptr(new_cstore)) + goto end; + + /* Set stores. */ + if (!TEST_true(SSL_set1_verify_cert_store(ssl, new_store))) + goto end; + + if (!TEST_true(SSL_set1_chain_cert_store(ssl, new_cstore))) + goto end; + + /* Should be able to retrieve the same pointer. */ + if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store))) + goto end; + + if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore))) + goto end; + + if (!TEST_ptr_eq(store, new_store) || !TEST_ptr_eq(cstore, new_cstore)) + goto end; + + /* Should be able to unset again. */ + if (!TEST_true(SSL_set1_verify_cert_store(ssl, NULL))) + goto end; + + if (!TEST_true(SSL_set1_chain_cert_store(ssl, NULL))) + goto end; + + /* Should now be NULL. */ + if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store))) + goto end; + + if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore))) + goto end; + + if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore)) + goto end; + + testresult = 1; + +end: + X509_STORE_free(new_store); + X509_STORE_free(new_cstore); + SSL_free(ssl); + SSL_CTX_free(ctx); + return testresult; +} + static int test_inherit_verify_param(void) { int testresult = 0; @@ -7555,6 +7720,8 @@ int setup_tests(void) ADD_ALL_TESTS(test_ticket_lifetime, 2); #endif ADD_TEST(test_set_alpn); + ADD_TEST(test_set_verify_cert_store_ssl_ctx); + ADD_TEST(test_set_verify_cert_store_ssl); ADD_TEST(test_inherit_verify_param); #ifndef OPENSSL_NO_QUIC ADD_ALL_TESTS(test_quic_api, 9); diff --git a/deps/openssl/openssl/test/v3ext.c b/deps/openssl/openssl/test/v3ext.c index 14ae49969d07bc..ac4a3e54023dc8 100644 --- a/deps/openssl/openssl/test/v3ext.c +++ b/deps/openssl/openssl/test/v3ext.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,11 +37,89 @@ static int test_pathlen(void) return ret; } +static int test_asid(void) +{ + ASN1_INTEGER *val1 = NULL, *val2 = NULL; + ASIdentifiers *asid1 = ASIdentifiers_new(), *asid2 = ASIdentifiers_new(), + *asid3 = ASIdentifiers_new(), *asid4 = ASIdentifiers_new(); + int testresult = 0; + + if (!TEST_ptr(asid1) + || !TEST_ptr(asid2) + || !TEST_ptr(asid3)) + goto err; + + if (!TEST_ptr(val1 = ASN1_INTEGER_new()) + || !TEST_true(ASN1_INTEGER_set_int64(val1, 64496))) + goto err; + + if (!TEST_true(X509v3_asid_add_id_or_range(asid1, V3_ASID_ASNUM, val1, NULL))) + goto err; + + val1 = NULL; + if (!TEST_ptr(val2 = ASN1_INTEGER_new()) + || !TEST_true(ASN1_INTEGER_set_int64(val2, 64497))) + goto err; + + if (!TEST_true(X509v3_asid_add_id_or_range(asid2, V3_ASID_ASNUM, val2, NULL))) + goto err; + + val2 = NULL; + if (!TEST_ptr(val1 = ASN1_INTEGER_new()) + || !TEST_true(ASN1_INTEGER_set_int64(val1, 64496)) + || !TEST_ptr(val2 = ASN1_INTEGER_new()) + || !TEST_true(ASN1_INTEGER_set_int64(val2, 64497))) + goto err; + + /* + * Just tests V3_ASID_ASNUM for now. Could be extended at some point to also + * test V3_ASID_RDI if we think it is worth it. + */ + if (!TEST_true(X509v3_asid_add_id_or_range(asid3, V3_ASID_ASNUM, val1, val2))) + goto err; + val1 = val2 = NULL; + + /* Actual subsets */ + if (!TEST_true(X509v3_asid_subset(NULL, NULL)) + || !TEST_true(X509v3_asid_subset(NULL, asid1)) + || !TEST_true(X509v3_asid_subset(asid1, asid1)) + || !TEST_true(X509v3_asid_subset(asid2, asid2)) + || !TEST_true(X509v3_asid_subset(asid1, asid3)) + || !TEST_true(X509v3_asid_subset(asid2, asid3)) + || !TEST_true(X509v3_asid_subset(asid3, asid3)) + || !TEST_true(X509v3_asid_subset(asid4, asid1)) + || !TEST_true(X509v3_asid_subset(asid4, asid2)) + || !TEST_true(X509v3_asid_subset(asid4, asid3))) + goto err; + + /* Not subsets */ + if (!TEST_false(X509v3_asid_subset(asid1, NULL)) + || !TEST_false(X509v3_asid_subset(asid1, asid2)) + || !TEST_false(X509v3_asid_subset(asid2, asid1)) + || !TEST_false(X509v3_asid_subset(asid3, asid1)) + || !TEST_false(X509v3_asid_subset(asid3, asid2)) + || !TEST_false(X509v3_asid_subset(asid1, asid4)) + || !TEST_false(X509v3_asid_subset(asid2, asid4)) + || !TEST_false(X509v3_asid_subset(asid3, asid4))) + goto err; + + testresult = 1; + err: + ASN1_INTEGER_free(val1); + ASN1_INTEGER_free(val2); + ASIdentifiers_free(asid1); + ASIdentifiers_free(asid2); + ASIdentifiers_free(asid3); + ASIdentifiers_free(asid4); + return testresult; +} + int setup_tests(void) { if (!TEST_ptr(infile = test_get_argument(0))) return 0; ADD_TEST(test_pathlen); + ADD_TEST(test_asid); return 1; } diff --git a/deps/openssl/openssl/tools/c_rehash.in b/deps/openssl/openssl/tools/c_rehash.in index cfd18f5da110f4..9d2a6f6db73b24 100644 --- a/deps/openssl/openssl/tools/c_rehash.in +++ b/deps/openssl/openssl/tools/c_rehash.in @@ -104,52 +104,78 @@ foreach (@dirlist) { } exit($errorcount); +sub copy_file { + my ($src_fname, $dst_fname) = @_; + + if (open(my $in, "<", $src_fname)) { + if (open(my $out, ">", $dst_fname)) { + print $out $_ while (<$in>); + close $out; + } else { + warn "Cannot open $dst_fname for write, $!"; + } + close $in; + } else { + warn "Cannot open $src_fname for read, $!"; + } +} + sub hash_dir { - my %hashlist; - print "Doing $_[0]\n"; - chdir $_[0]; - opendir(DIR, "."); - my @flist = sort readdir(DIR); - closedir DIR; - if ( $removelinks ) { - # Delete any existing symbolic links - foreach (grep {/^[\da-f]+\.r{0,1}\d+$/} @flist) { - if (-l $_) { - print "unlink $_" if $verbose; - unlink $_ || warn "Can't unlink $_, $!\n"; - } - } - } - FILE: foreach $fname (grep {/\.(pem)|(crt)|(cer)|(crl)$/} @flist) { - # Check to see if certificates and/or CRLs present. - my ($cert, $crl) = check_file($fname); - if (!$cert && !$crl) { - print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n"; - next; - } - link_hash_cert($fname) if ($cert); - link_hash_crl($fname) if ($crl); - } + my $dir = shift; + my %hashlist; + + print "Doing $dir\n"; + + if (!chdir $dir) { + print STDERR "WARNING: Cannot chdir to '$dir', $!\n"; + return; + } + + opendir(DIR, ".") || print STDERR "WARNING: Cannot opendir '.', $!\n"; + my @flist = sort readdir(DIR); + closedir DIR; + if ( $removelinks ) { + # Delete any existing symbolic links + foreach (grep {/^[\da-f]+\.r{0,1}\d+$/} @flist) { + if (-l $_) { + print "unlink $_\n" if $verbose; + unlink $_ || warn "Can't unlink $_, $!\n"; + } + } + } + FILE: foreach $fname (grep {/\.(pem)|(crt)|(cer)|(crl)$/} @flist) { + # Check to see if certificates and/or CRLs present. + my ($cert, $crl) = check_file($fname); + if (!$cert && !$crl) { + print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n"; + next; + } + link_hash_cert($fname) if ($cert); + link_hash_crl($fname) if ($crl); + } + + chdir $pwd; } sub check_file { - my ($is_cert, $is_crl) = (0,0); - my $fname = $_[0]; - open IN, $fname; - while() { - if (/^-----BEGIN (.*)-----/) { - my $hdr = $1; - if ($hdr =~ /^(X509 |TRUSTED |)CERTIFICATE$/) { - $is_cert = 1; - last if ($is_crl); - } elsif ($hdr eq "X509 CRL") { - $is_crl = 1; - last if ($is_cert); - } - } - } - close IN; - return ($is_cert, $is_crl); + my ($is_cert, $is_crl) = (0,0); + my $fname = $_[0]; + + open(my $in, "<", $fname); + while(<$in>) { + if (/^-----BEGIN (.*)-----/) { + my $hdr = $1; + if ($hdr =~ /^(X509 |TRUSTED |)CERTIFICATE$/) { + $is_cert = 1; + last if ($is_crl); + } elsif ($hdr eq "X509 CRL") { + $is_crl = 1; + last if ($is_cert); + } + } + } + close $in; + return ($is_cert, $is_crl); } sub compute_hash { @@ -177,76 +203,48 @@ sub compute_hash { # certificate fingerprints sub link_hash_cert { - my $fname = $_[0]; - my ($hash, $fprint) = compute_hash($openssl, "x509", $x509hash, - "-fingerprint", "-noout", - "-in", $fname); - chomp $hash; - chomp $fprint; - return if !$hash; - $fprint =~ s/^.*=//; - $fprint =~ tr/://d; - my $suffix = 0; - # Search for an unused hash filename - while(exists $hashlist{"$hash.$suffix"}) { - # Hash matches: if fingerprint matches its a duplicate cert - if ($hashlist{"$hash.$suffix"} eq $fprint) { - print STDERR "WARNING: Skipping duplicate certificate $fname\n"; - return; - } - $suffix++; - } - $hash .= ".$suffix"; - if ($symlink_exists) { - print "link $fname -> $hash\n" if $verbose; - symlink $fname, $hash || warn "Can't symlink, $!"; - } else { - print "copy $fname -> $hash\n" if $verbose; - if (open($in, "<", $fname)) { - if (open($out,">", $hash)) { - print $out $_ while (<$in>); - close $out; - } else { - warn "can't open $hash for write, $!"; - } - close $in; - } else { - warn "can't open $fname for read, $!"; - } - } - $hashlist{$hash} = $fprint; + link_hash($_[0], 'cert'); } # Same as above except for a CRL. CRL links are of the form .r sub link_hash_crl { - my $fname = $_[0]; - my ($hash, $fprint) = compute_hash($openssl, "crl", $crlhash, - "-fingerprint", "-noout", - "-in", $fname); - chomp $hash; - chomp $fprint; - return if !$hash; - $fprint =~ s/^.*=//; - $fprint =~ tr/://d; - my $suffix = 0; - # Search for an unused hash filename - while(exists $hashlist{"$hash.r$suffix"}) { - # Hash matches: if fingerprint matches its a duplicate cert - if ($hashlist{"$hash.r$suffix"} eq $fprint) { - print STDERR "WARNING: Skipping duplicate CRL $fname\n"; - return; - } - $suffix++; - } - $hash .= ".r$suffix"; - if ($symlink_exists) { - print "link $fname -> $hash\n" if $verbose; - symlink $fname, $hash || warn "Can't symlink, $!"; - } else { - print "cp $fname -> $hash\n" if $verbose; - system ("cp", $fname, $hash); - warn "Can't copy, $!" if ($? >> 8) != 0; - } - $hashlist{$hash} = $fprint; + link_hash($_[0], 'crl'); +} + +sub link_hash { + my ($fname, $type) = @_; + my $is_cert = $type eq 'cert'; + + my ($hash, $fprint) = compute_hash($openssl, + $is_cert ? "x509" : "crl", + $is_cert ? $x509hash : $crlhash, + "-fingerprint", "-noout", + "-in", $fname); + chomp $hash; + chomp $fprint; + return if !$hash; + $fprint =~ s/^.*=//; + $fprint =~ tr/://d; + my $suffix = 0; + # Search for an unused hash filename + my $crlmark = $is_cert ? "" : "r"; + while(exists $hashlist{"$hash.$crlmark$suffix"}) { + # Hash matches: if fingerprint matches its a duplicate cert + if ($hashlist{"$hash.$crlmark$suffix"} eq $fprint) { + my $what = $is_cert ? 'certificate' : 'CRL'; + print STDERR "WARNING: Skipping duplicate $what $fname\n"; + return; + } + $suffix++; + } + $hash .= ".$crlmark$suffix"; + if ($symlink_exists) { + print "link $fname -> $hash\n" if $verbose; + symlink $fname, $hash || warn "Can't symlink, $!"; + } else { + print "copy $fname -> $hash\n" if $verbose; + copy_file($fname, $hash); + } + $hashlist{$hash} = $fprint; } diff --git a/deps/openssl/openssl/util/private.num b/deps/openssl/openssl/util/private.num index eb3d409f6e90fb..7a7637f4098db5 100644 --- a/deps/openssl/openssl/util/private.num +++ b/deps/openssl/openssl/util/private.num @@ -325,6 +325,8 @@ SSL_CTX_decrypt_session_ticket_fn define SSL_CTX_disable_ct define SSL_CTX_generate_session_ticket_fn define SSL_CTX_get0_chain_certs define +SSL_CTX_get0_chain_cert_store define +SSL_CTX_get0_verify_cert_store define SSL_CTX_get_default_read_ahead define SSL_CTX_get_max_cert_list define SSL_CTX_get_max_proto_version define @@ -390,6 +392,8 @@ SSL_clear_mode define SSL_disable_ct define SSL_get0_chain_certs define SSL_get0_session define +SSL_get0_chain_cert_store define +SSL_get0_verify_cert_store define SSL_get1_curves define SSL_get1_groups define SSL_get_cipher define From bd952ea9ae36c94d7d376e15488cd8a8cc509283 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Wed, 22 Jun 2022 11:35:34 -0300 Subject: [PATCH 4/5] deps: update archs files for OpenSSL-1.1.1p+quic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After an OpenSSL source update, all the config files need to be regenerated and committed by: $ make -C deps/openssl/config $ git add deps/openssl/config/archs $ git add deps/openssl/openssl/include/crypto/bn_conf.h $ git add deps/openssl/openssl/include/crypto/dso_conf.h $ git add deps/openssl/openssl/include/openssl/opensslconf.h $ git commit PR-URL: https://github.com/nodejs/node/pull/43535 Refs: https://mta.openssl.org/pipermail/openssl-announce/2022-June/000228.html Reviewed-By: Richard Lau Reviewed-By: Tobias Nießen Reviewed-By: Danielle Adams --- .../config/archs/BSD-x86/asm/configdata.pm | 4 +- .../archs/BSD-x86/asm/crypto/buildinf.h | 2 +- .../archs/BSD-x86/asm_avx2/configdata.pm | 4 +- .../archs/BSD-x86/asm_avx2/crypto/buildinf.h | 2 +- .../config/archs/BSD-x86/no-asm/configdata.pm | 4 +- .../archs/BSD-x86/no-asm/crypto/buildinf.h | 2 +- .../config/archs/BSD-x86_64/asm/configdata.pm | 4 +- .../BSD-x86_64/asm/crypto/bn/x86_64-mont5.s | 179 ---------------- .../archs/BSD-x86_64/asm/crypto/buildinf.h | 2 +- .../archs/BSD-x86_64/asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/bn/x86_64-mont5.s | 179 ---------------- .../BSD-x86_64/asm_avx2/crypto/buildinf.h | 2 +- .../archs/BSD-x86_64/no-asm/configdata.pm | 4 +- .../archs/BSD-x86_64/no-asm/crypto/buildinf.h | 2 +- .../config/archs/VC-WIN32/asm/configdata.pm | 6 +- .../archs/VC-WIN32/asm/crypto/buildinf.h | 2 +- .../archs/VC-WIN32/asm_avx2/configdata.pm | 6 +- .../archs/VC-WIN32/asm_avx2/crypto/buildinf.h | 2 +- .../archs/VC-WIN32/no-asm/configdata.pm | 6 +- .../archs/VC-WIN32/no-asm/crypto/buildinf.h | 2 +- .../archs/VC-WIN64-ARM/no-asm/configdata.pm | 6 +- .../VC-WIN64-ARM/no-asm/crypto/buildinf.h | 2 +- .../config/archs/VC-WIN64A/asm/configdata.pm | 6 +- .../VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm | 202 ------------------ .../archs/VC-WIN64A/asm/crypto/buildinf.h | 2 +- .../archs/VC-WIN64A/asm_avx2/configdata.pm | 6 +- .../asm_avx2/crypto/bn/x86_64-mont5.asm | 202 ------------------ .../VC-WIN64A/asm_avx2/crypto/buildinf.h | 2 +- .../archs/VC-WIN64A/no-asm/configdata.pm | 6 +- .../archs/VC-WIN64A/no-asm/crypto/buildinf.h | 2 +- .../config/archs/aix-gcc/asm/configdata.pm | 4 +- .../archs/aix-gcc/asm/crypto/buildinf.h | 2 +- .../archs/aix-gcc/asm_avx2/configdata.pm | 4 +- .../archs/aix-gcc/asm_avx2/crypto/buildinf.h | 2 +- .../config/archs/aix-gcc/no-asm/configdata.pm | 4 +- .../archs/aix-gcc/no-asm/crypto/buildinf.h | 2 +- .../config/archs/aix64-gcc/asm/configdata.pm | 4 +- .../archs/aix64-gcc/asm/crypto/buildinf.h | 2 +- .../archs/aix64-gcc/asm_avx2/configdata.pm | 4 +- .../aix64-gcc/asm_avx2/crypto/buildinf.h | 2 +- .../archs/aix64-gcc/no-asm/configdata.pm | 4 +- .../archs/aix64-gcc/no-asm/crypto/buildinf.h | 2 +- .../archs/darwin-i386-cc/asm/configdata.pm | 4 +- .../darwin-i386-cc/asm/crypto/buildinf.h | 2 +- .../darwin-i386-cc/asm_avx2/configdata.pm | 4 +- .../darwin-i386-cc/asm_avx2/crypto/buildinf.h | 2 +- .../archs/darwin-i386-cc/no-asm/configdata.pm | 4 +- .../darwin-i386-cc/no-asm/crypto/buildinf.h | 2 +- .../archs/darwin64-arm64-cc/asm/configdata.pm | 4 +- .../darwin64-arm64-cc/asm/crypto/buildinf.h | 2 +- .../darwin64-arm64-cc/asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/buildinf.h | 2 +- .../darwin64-arm64-cc/no-asm/configdata.pm | 4 +- .../no-asm/crypto/buildinf.h | 2 +- .../darwin64-x86_64-cc/asm/configdata.pm | 4 +- .../asm/crypto/bn/x86_64-mont5.s | 179 ---------------- .../darwin64-x86_64-cc/asm/crypto/buildinf.h | 2 +- .../darwin64-x86_64-cc/asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/bn/x86_64-mont5.s | 179 ---------------- .../asm_avx2/crypto/buildinf.h | 2 +- .../darwin64-x86_64-cc/no-asm/configdata.pm | 4 +- .../no-asm/crypto/buildinf.h | 2 +- .../archs/linux-aarch64/asm/configdata.pm | 4 +- .../archs/linux-aarch64/asm/crypto/buildinf.h | 2 +- .../linux-aarch64/asm_avx2/configdata.pm | 4 +- .../linux-aarch64/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-aarch64/no-asm/configdata.pm | 4 +- .../linux-aarch64/no-asm/crypto/buildinf.h | 2 +- .../archs/linux-armv4/asm/configdata.pm | 4 +- .../archs/linux-armv4/asm/crypto/buildinf.h | 2 +- .../archs/linux-armv4/asm_avx2/configdata.pm | 4 +- .../linux-armv4/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-armv4/no-asm/configdata.pm | 4 +- .../linux-armv4/no-asm/crypto/buildinf.h | 2 +- .../config/archs/linux-elf/asm/configdata.pm | 4 +- .../archs/linux-elf/asm/crypto/buildinf.h | 2 +- .../archs/linux-elf/asm_avx2/configdata.pm | 4 +- .../linux-elf/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-elf/no-asm/configdata.pm | 4 +- .../archs/linux-elf/no-asm/crypto/buildinf.h | 2 +- .../config/archs/linux-ppc/asm/configdata.pm | 4 +- .../archs/linux-ppc/asm/crypto/buildinf.h | 2 +- .../archs/linux-ppc/asm_avx2/configdata.pm | 4 +- .../linux-ppc/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-ppc/no-asm/configdata.pm | 4 +- .../archs/linux-ppc/no-asm/crypto/buildinf.h | 2 +- .../archs/linux-ppc64/asm/configdata.pm | 4 +- .../archs/linux-ppc64/asm/crypto/buildinf.h | 2 +- .../archs/linux-ppc64/asm_avx2/configdata.pm | 4 +- .../linux-ppc64/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-ppc64/no-asm/configdata.pm | 4 +- .../linux-ppc64/no-asm/crypto/buildinf.h | 2 +- .../archs/linux-ppc64le/asm/configdata.pm | 4 +- .../archs/linux-ppc64le/asm/crypto/buildinf.h | 2 +- .../linux-ppc64le/asm_avx2/configdata.pm | 4 +- .../linux-ppc64le/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-ppc64le/no-asm/configdata.pm | 4 +- .../linux-ppc64le/no-asm/crypto/buildinf.h | 2 +- .../archs/linux-x86_64/asm/configdata.pm | 4 +- .../linux-x86_64/asm/crypto/bn/x86_64-mont5.s | 179 ---------------- .../archs/linux-x86_64/asm/crypto/buildinf.h | 2 +- .../archs/linux-x86_64/asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/bn/x86_64-mont5.s | 179 ---------------- .../linux-x86_64/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux-x86_64/no-asm/configdata.pm | 4 +- .../linux-x86_64/no-asm/crypto/buildinf.h | 2 +- .../archs/linux32-s390x/asm/configdata.pm | 4 +- .../archs/linux32-s390x/asm/crypto/buildinf.h | 2 +- .../linux32-s390x/asm_avx2/configdata.pm | 4 +- .../linux32-s390x/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux32-s390x/no-asm/configdata.pm | 4 +- .../linux32-s390x/no-asm/crypto/buildinf.h | 2 +- .../archs/linux64-mips64/asm/configdata.pm | 4 +- .../linux64-mips64/asm/crypto/buildinf.h | 2 +- .../linux64-mips64/asm_avx2/configdata.pm | 4 +- .../linux64-mips64/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux64-mips64/no-asm/configdata.pm | 4 +- .../linux64-mips64/no-asm/crypto/buildinf.h | 2 +- .../linux64-riscv64/no-asm/configdata.pm | 4 +- .../linux64-riscv64/no-asm/crypto/buildinf.h | 2 +- .../archs/linux64-s390x/asm/configdata.pm | 4 +- .../archs/linux64-s390x/asm/crypto/buildinf.h | 2 +- .../linux64-s390x/asm_avx2/configdata.pm | 4 +- .../linux64-s390x/asm_avx2/crypto/buildinf.h | 2 +- .../archs/linux64-s390x/no-asm/configdata.pm | 4 +- .../linux64-s390x/no-asm/crypto/buildinf.h | 2 +- .../archs/solaris-x86-gcc/asm/configdata.pm | 4 +- .../solaris-x86-gcc/asm/crypto/buildinf.h | 2 +- .../solaris-x86-gcc/asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/buildinf.h | 2 +- .../solaris-x86-gcc/no-asm/configdata.pm | 4 +- .../solaris-x86-gcc/no-asm/crypto/buildinf.h | 2 +- .../solaris64-x86_64-gcc/asm/configdata.pm | 4 +- .../asm/crypto/bn/x86_64-mont5.s | 179 ---------------- .../asm/crypto/buildinf.h | 2 +- .../asm_avx2/configdata.pm | 4 +- .../asm_avx2/crypto/bn/x86_64-mont5.s | 179 ---------------- .../asm_avx2/crypto/buildinf.h | 2 +- .../solaris64-x86_64-gcc/no-asm/configdata.pm | 4 +- .../no-asm/crypto/buildinf.h | 2 +- deps/openssl/openssl/include/crypto/bn_conf.h | 1 + .../openssl/openssl/include/crypto/dso_conf.h | 1 + .../openssl/include/openssl/opensslconf.h | 1 + 143 files changed, 205 insertions(+), 2038 deletions(-) create mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h create mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h create mode 100644 deps/openssl/openssl/include/openssl/opensslconf.h diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm index e960cd6f794c4b..d4ba224ea34692 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h index 037d35e6d5a8a2..183e4eb0e281c7 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue May 3 19:55:35 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:13 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm index 63ca2c901b57b2..c2f47de2bd0afb 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h index e98f0e0022cdc7..e5d8eda7cd68b8 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue May 3 19:55:37 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:15 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm index 4c6a2ecca5d2b5..020f02e74e5e0e 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h index 322f0fb31937f0..d6b449b7014bc5 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue May 3 19:55:40 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:17 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm index 9ac09f7dfd669e..0611259636b250 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h index b39ac8e53df84b..4395caf215dd95 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue May 3 19:55:41 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:18 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm index 1b2fadc3895f7f..549dd1f1d8331c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h index a30b535309c58c..a9a26eea58e3d3 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue May 3 19:55:45 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:23 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm index a69f2ed387aa25..f26354b58eb6ff 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "BSD-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h index 1db3c98b622380..1eff985de9dec8 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue May 3 19:55:50 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:27 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm index 489f22cb70b369..7f1c1d6ed47134 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm @@ -115,8 +115,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN32", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -132,7 +132,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x55c3ffc248b0)", + RANLIB => "CODE(0x55f74fc75f60)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86.s aesni-x86.s", diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h index c4bea43b26c376..bd1e21e8ca466a 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:31 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:08 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm index 0d13ef58f9a8b3..c2f2243c4aa305 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm @@ -115,8 +115,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN32", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -132,7 +132,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x55c5726e1950)", + RANLIB => "CODE(0x564a9aef1e50)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86.s aesni-x86.s", diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h index 86e76a9fd5d076..7b080dd6afba26 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:33 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:10 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm index 6539d69bbd7104..349afbaafe73c1 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm @@ -114,8 +114,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN32", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -131,7 +131,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x5651244baf50)", + RANLIB => "CODE(0x55e8b2f30290)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c", diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h index 4878af7e6102fa..61bf8936f140ac 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:35 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:11 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm index 15399391f72b5d..07c97f89f6ec80 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm @@ -113,8 +113,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN64-ARM", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -128,7 +128,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x55cee7a8f930)", + RANLIB => "CODE(0x55b44517aff0)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/50-win-onecore.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c", diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h index 6f296cbe6ce733..4a92f747e16468 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: VC-WIN64-ARM" -#define DATE "built on: Tue May 3 19:57:36 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:12 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm index 7862a432a60270..05983ae06e4373 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm @@ -116,8 +116,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN64A", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -133,7 +133,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x560424ab5c60)", + RANLIB => "CODE(0x55a873bfbd30)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s", diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm index 0756714904eaad..118676455aa6be 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/bn/x86_64-mont5.asm @@ -2095,199 +2095,6 @@ $L$sqr4x_sub_entry: DB 0F3h,0C3h ;repret -global bn_from_montgomery - -ALIGN 32 -bn_from_montgomery: - - test DWORD[48+rsp],7 - jz NEAR bn_from_mont8x - xor eax,eax - DB 0F3h,0C3h ;repret - - - - -ALIGN 32 -bn_from_mont8x: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_bn_from_mont8x: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - mov r9,QWORD[48+rsp] - - - -DB 0x67 - mov rax,rsp - - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$from_prologue: - - shl r9d,3 - lea r10,[r9*2+r9] - neg r9 - mov r8,QWORD[r8] - - - - - - - - - lea r11,[((-320))+r9*2+rsp] - mov rbp,rsp - sub r11,rdi - and r11,4095 - cmp r10,r11 - jb NEAR $L$from_sp_alt - sub rbp,r11 - lea rbp,[((-320))+r9*2+rbp] - jmp NEAR $L$from_sp_done - -ALIGN 32 -$L$from_sp_alt: - lea r10,[((4096-320))+r9*2] - lea rbp,[((-320))+r9*2+rbp] - sub r11,r10 - mov r10,0 - cmovc r11,r10 - sub rbp,r11 -$L$from_sp_done: - and rbp,-64 - mov r11,rsp - sub r11,rbp - and r11,-4096 - lea rsp,[rbp*1+r11] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk - jmp NEAR $L$from_page_walk_done - -$L$from_page_walk: - lea rsp,[((-4096))+rsp] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk -$L$from_page_walk_done: - - mov r10,r9 - neg r9 - - - - - - - - - - - mov QWORD[32+rsp],r8 - mov QWORD[40+rsp],rax - -$L$from_body: - mov r11,r9 - lea rax,[48+rsp] - pxor xmm0,xmm0 - jmp NEAR $L$mul_by_1 - -ALIGN 32 -$L$mul_by_1: - movdqu xmm1,XMMWORD[rsi] - movdqu xmm2,XMMWORD[16+rsi] - movdqu xmm3,XMMWORD[32+rsi] - movdqa XMMWORD[r9*1+rax],xmm0 - movdqu xmm4,XMMWORD[48+rsi] - movdqa XMMWORD[16+r9*1+rax],xmm0 -DB 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa XMMWORD[rax],xmm1 - movdqa XMMWORD[32+r9*1+rax],xmm0 - movdqa XMMWORD[16+rax],xmm2 - movdqa XMMWORD[48+r9*1+rax],xmm0 - movdqa XMMWORD[32+rax],xmm3 - movdqa XMMWORD[48+rax],xmm4 - lea rax,[64+rax] - sub r11,64 - jnz NEAR $L$mul_by_1 - -DB 102,72,15,110,207 -DB 102,72,15,110,209 -DB 0x67 - mov rbp,rcx -DB 102,73,15,110,218 - mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] - and r11d,0x80108 - cmp r11d,0x80108 - jne NEAR $L$from_mont_nox - - lea rdi,[r9*1+rax] - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_zero: - mov rsi,QWORD[40+rsp] - - movdqa XMMWORD[rax],xmm0 - movdqa XMMWORD[16+rax],xmm0 - movdqa XMMWORD[32+rax],xmm0 - movdqa XMMWORD[48+rax],xmm0 - lea rax,[64+rax] - sub r9,32 - jnz NEAR $L$from_mont_zero - - mov rax,1 - mov r15,QWORD[((-48))+rsi] - - mov r14,QWORD[((-40))+rsi] - - mov r13,QWORD[((-32))+rsi] - - mov r12,QWORD[((-24))+rsi] - - mov rbp,QWORD[((-16))+rsi] - - mov rbx,QWORD[((-8))+rsi] - - lea rsp,[rsi] - -$L$from_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_bn_from_mont8x: ALIGN 32 bn_mulx4x_mont_gather5: @@ -3990,10 +3797,6 @@ ALIGN 4 DD $L$SEH_begin_bn_power5 wrt ..imagebase DD $L$SEH_end_bn_power5 wrt ..imagebase DD $L$SEH_info_bn_power5 wrt ..imagebase - - DD $L$SEH_begin_bn_from_mont8x wrt ..imagebase - DD $L$SEH_end_bn_from_mont8x wrt ..imagebase - DD $L$SEH_info_bn_from_mont8x wrt ..imagebase DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase @@ -4022,11 +3825,6 @@ DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$power5_prologue wrt ..imagebase,$L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_bn_from_mont8x: -DB 9,0,0,0 - DD mul_handler wrt ..imagebase - DD $L$from_prologue wrt ..imagebase,$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase -ALIGN 8 $L$SEH_info_bn_mulx4x_mont_gather5: DB 9,0,0,0 DD mul_handler wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h index f1b119c4838c26..fbb427b1d96836 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:20 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:57 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm index a5c05d40d24f72..b31f803468b6fb 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm @@ -116,8 +116,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN64A", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -133,7 +133,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x55d7c86d1300)", + RANLIB => "CODE(0x5582b4046e90)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s", diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm index 0756714904eaad..118676455aa6be 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/bn/x86_64-mont5.asm @@ -2095,199 +2095,6 @@ $L$sqr4x_sub_entry: DB 0F3h,0C3h ;repret -global bn_from_montgomery - -ALIGN 32 -bn_from_montgomery: - - test DWORD[48+rsp],7 - jz NEAR bn_from_mont8x - xor eax,eax - DB 0F3h,0C3h ;repret - - - - -ALIGN 32 -bn_from_mont8x: - mov QWORD[8+rsp],rdi ;WIN64 prologue - mov QWORD[16+rsp],rsi - mov rax,rsp -$L$SEH_begin_bn_from_mont8x: - mov rdi,rcx - mov rsi,rdx - mov rdx,r8 - mov rcx,r9 - mov r8,QWORD[40+rsp] - mov r9,QWORD[48+rsp] - - - -DB 0x67 - mov rax,rsp - - push rbx - - push rbp - - push r12 - - push r13 - - push r14 - - push r15 - -$L$from_prologue: - - shl r9d,3 - lea r10,[r9*2+r9] - neg r9 - mov r8,QWORD[r8] - - - - - - - - - lea r11,[((-320))+r9*2+rsp] - mov rbp,rsp - sub r11,rdi - and r11,4095 - cmp r10,r11 - jb NEAR $L$from_sp_alt - sub rbp,r11 - lea rbp,[((-320))+r9*2+rbp] - jmp NEAR $L$from_sp_done - -ALIGN 32 -$L$from_sp_alt: - lea r10,[((4096-320))+r9*2] - lea rbp,[((-320))+r9*2+rbp] - sub r11,r10 - mov r10,0 - cmovc r11,r10 - sub rbp,r11 -$L$from_sp_done: - and rbp,-64 - mov r11,rsp - sub r11,rbp - and r11,-4096 - lea rsp,[rbp*1+r11] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk - jmp NEAR $L$from_page_walk_done - -$L$from_page_walk: - lea rsp,[((-4096))+rsp] - mov r10,QWORD[rsp] - cmp rsp,rbp - ja NEAR $L$from_page_walk -$L$from_page_walk_done: - - mov r10,r9 - neg r9 - - - - - - - - - - - mov QWORD[32+rsp],r8 - mov QWORD[40+rsp],rax - -$L$from_body: - mov r11,r9 - lea rax,[48+rsp] - pxor xmm0,xmm0 - jmp NEAR $L$mul_by_1 - -ALIGN 32 -$L$mul_by_1: - movdqu xmm1,XMMWORD[rsi] - movdqu xmm2,XMMWORD[16+rsi] - movdqu xmm3,XMMWORD[32+rsi] - movdqa XMMWORD[r9*1+rax],xmm0 - movdqu xmm4,XMMWORD[48+rsi] - movdqa XMMWORD[16+r9*1+rax],xmm0 -DB 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa XMMWORD[rax],xmm1 - movdqa XMMWORD[32+r9*1+rax],xmm0 - movdqa XMMWORD[16+rax],xmm2 - movdqa XMMWORD[48+r9*1+rax],xmm0 - movdqa XMMWORD[32+rax],xmm3 - movdqa XMMWORD[48+rax],xmm4 - lea rax,[64+rax] - sub r11,64 - jnz NEAR $L$mul_by_1 - -DB 102,72,15,110,207 -DB 102,72,15,110,209 -DB 0x67 - mov rbp,rcx -DB 102,73,15,110,218 - mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] - and r11d,0x80108 - cmp r11d,0x80108 - jne NEAR $L$from_mont_nox - - lea rdi,[r9*1+rax] - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor xmm0,xmm0 - lea rax,[48+rsp] - jmp NEAR $L$from_mont_zero - -ALIGN 32 -$L$from_mont_zero: - mov rsi,QWORD[40+rsp] - - movdqa XMMWORD[rax],xmm0 - movdqa XMMWORD[16+rax],xmm0 - movdqa XMMWORD[32+rax],xmm0 - movdqa XMMWORD[48+rax],xmm0 - lea rax,[64+rax] - sub r9,32 - jnz NEAR $L$from_mont_zero - - mov rax,1 - mov r15,QWORD[((-48))+rsi] - - mov r14,QWORD[((-40))+rsi] - - mov r13,QWORD[((-32))+rsi] - - mov r12,QWORD[((-24))+rsi] - - mov rbp,QWORD[((-16))+rsi] - - mov rbx,QWORD[((-8))+rsi] - - lea rsp,[rsi] - -$L$from_epilogue: - mov rdi,QWORD[8+rsp] ;WIN64 epilogue - mov rsi,QWORD[16+rsp] - DB 0F3h,0C3h ;repret - -$L$SEH_end_bn_from_mont8x: ALIGN 32 bn_mulx4x_mont_gather5: @@ -3990,10 +3797,6 @@ ALIGN 4 DD $L$SEH_begin_bn_power5 wrt ..imagebase DD $L$SEH_end_bn_power5 wrt ..imagebase DD $L$SEH_info_bn_power5 wrt ..imagebase - - DD $L$SEH_begin_bn_from_mont8x wrt ..imagebase - DD $L$SEH_end_bn_from_mont8x wrt ..imagebase - DD $L$SEH_info_bn_from_mont8x wrt ..imagebase DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase @@ -4022,11 +3825,6 @@ DB 9,0,0,0 DD mul_handler wrt ..imagebase DD $L$power5_prologue wrt ..imagebase,$L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebase ALIGN 8 -$L$SEH_info_bn_from_mont8x: -DB 9,0,0,0 - DD mul_handler wrt ..imagebase - DD $L$from_prologue wrt ..imagebase,$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase -ALIGN 8 $L$SEH_info_bn_mulx4x_mont_gather5: DB 9,0,0,0 DD mul_handler wrt ..imagebase diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h index 87184e87d3e34a..f94da646dd025b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:25 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:02 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm index 5c3becbce7fea9..23bd08bf12f247 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm @@ -115,8 +115,8 @@ our %config = ( sourcedir => ".", target => "VC-WIN64A", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( @@ -132,7 +132,7 @@ our %target = ( LDFLAGS => "/nologo /debug", MT => "mt", MTFLAGS => "-nologo", - RANLIB => "CODE(0x55c2c449bdb0)", + RANLIB => "CODE(0x5592573f1210)", RC => "rc", _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], aes_asm_src => "aes_core.c aes_cbc.c", diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h index 6ce124811e7628..0837a094eaf9b8 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue May 3 19:57:30 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:07 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix-gcc/asm/configdata.pm b/deps/openssl/config/archs/aix-gcc/asm/configdata.pm index aa7952d8f866c4..aa232906b58de8 100644 --- a/deps/openssl/config/archs/aix-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/aix-gcc/asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h index 733809d0720b9e..4380ab9072a096 100644 --- a/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix-gcc" -#define DATE "built on: Tue May 3 19:55:25 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:03 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm index f0e76d28060998..d4e6f8c4b5ebd6 100644 --- a/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h index 412b5eb5d9501a..6d1d278f50315f 100644 --- a/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix-gcc" -#define DATE "built on: Tue May 3 19:55:27 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:04 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm index fae1e0d4b92a31..cf6c91be04fb50 100644 --- a/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h index f5e1cbbd9abfe4..36d716c56c8b50 100644 --- a/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix-gcc" -#define DATE "built on: Tue May 3 19:55:29 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:06 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm index 72730c25435610..dfdf59c2a61e26 100644 --- a/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h index cc9cdd22e2817e..f997b15ae619b3 100644 --- a/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc" -#define DATE "built on: Tue May 3 19:55:30 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:07 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm index fd555874850532..e06be758cb2e6f 100644 --- a/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h index e49d1e944e3287..f62ea2df853244 100644 --- a/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc" -#define DATE "built on: Tue May 3 19:55:32 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:09 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm index ef32152f097ba9..dcc2a2820072aa 100644 --- a/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "aix64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h index 9b1ef400202b31..1933eec82d7f08 100644 --- a/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc" -#define DATE "built on: Tue May 3 19:55:34 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:11 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm index e4b686493d2480..7b81b28705caa3 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "darwin-i386-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h index 123c4d8abf4b3e..110de6a5f82b55 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue May 3 19:56:01 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:38 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm index ee391da5b71f75..927ee967d93a41 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "darwin-i386-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h index ef3e92f17fb753..d96e42bc2a8e52 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue May 3 19:56:03 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:40 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm index c33bb63bf6cece..b773e783bc8e15 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "darwin-i386-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h index bdf5eabcf7aba1..0f10fe86278a32 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue May 3 19:56:05 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:42 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm index d7c2aac89b4790..cd194317c6d145 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "darwin64-arm64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h index 60928da769dcef..76e0bd7547c0da 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue May 3 19:56:07 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:44 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm index 481a310a2a1521..c1a499da8a9506 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "darwin64-arm64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h index 423ca7f16c1323..22728595a927b1 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue May 3 19:56:08 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:46 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm index 83c1b0b71b94dd..bb9ffd11dbbff7 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "darwin64-arm64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h index 13316375091c76..5cb4d4e65da6cc 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue May 3 19:56:10 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:48 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm index 7bfa584f91b1d7..6777b428c58517 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "darwin64-x86_64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont5.s index 6712682a60e027..8520cd92f48491 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ L$sqr4x_sub_entry: .byte 0xf3,0xc3 -.globl _bn_from_montgomery - -.p2align 5 -_bn_from_montgomery: - - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 - - - - -.p2align 5 -bn_from_mont8x: - -.byte 0x67 - movq %rsp,%rax - - pushq %rbx - - pushq %rbp - - pushq %r12 - - pushq %r13 - - pushq %r14 - - pushq %r15 - -L$from_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb L$from_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp L$from_sp_done - -.p2align 5 -L$from_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -L$from_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk - jmp L$from_page_walk_done - -L$from_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk -L$from_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) - -L$from_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp L$mul_by_1 - -.p2align 5 -L$mul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz L$mul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl _OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne L$from_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_zero: - movq 40(%rsp),%rsi - - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz L$from_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 - - movq -40(%rsi),%r14 - - movq -32(%rsi),%r13 - - movq -24(%rsi),%r12 - - movq -16(%rsi),%rbp - - movq -8(%rsi),%rbx - - leaq (%rsi),%rsp - -L$from_epilogue: - .byte 0xf3,0xc3 - - .p2align 5 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h index 7ad4cc0cf8091e..1c04acec9fbc30 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue May 3 19:55:51 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:28 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm index adce6d8b94d43a..74c86958da4aa3 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "darwin64-x86_64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/bn/x86_64-mont5.s index 6712682a60e027..8520cd92f48491 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ L$sqr4x_sub_entry: .byte 0xf3,0xc3 -.globl _bn_from_montgomery - -.p2align 5 -_bn_from_montgomery: - - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 - - - - -.p2align 5 -bn_from_mont8x: - -.byte 0x67 - movq %rsp,%rax - - pushq %rbx - - pushq %rbp - - pushq %r12 - - pushq %r13 - - pushq %r14 - - pushq %r15 - -L$from_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb L$from_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp L$from_sp_done - -.p2align 5 -L$from_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -L$from_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk - jmp L$from_page_walk_done - -L$from_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja L$from_page_walk -L$from_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) - -L$from_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp L$mul_by_1 - -.p2align 5 -L$mul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz L$mul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl _OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne L$from_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp L$from_mont_zero - -.p2align 5 -L$from_mont_zero: - movq 40(%rsp),%rsi - - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz L$from_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 - - movq -40(%rsi),%r14 - - movq -32(%rsi),%r13 - - movq -24(%rsi),%r12 - - movq -16(%rsi),%rbp - - movq -8(%rsi),%rbx - - leaq (%rsi),%rsp - -L$from_epilogue: - .byte 0xf3,0xc3 - - .p2align 5 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h index d38957e705033c..4c4c6fec07938f 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue May 3 19:55:55 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:33 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm index 70e15083e20d86..8dfe8abcc116de 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "darwin64-x86_64-cc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h index c90380a6af8bfb..d8fcf716eae41c 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue May 3 19:56:00 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:37 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm index f385ddeefdfc8e..ed6c694ae61848 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-aarch64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h index ac6d71ad484e80..020e5c1113e69a 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue May 3 19:56:12 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:49 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm index 7b6475d30b8cf9..a83eba3ccf8f6e 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-aarch64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h index 2059b0fc0af91b..5420062d70fecd 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue May 3 19:56:13 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:51 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm index ee41a6665b8cdd..67e5c40a621b7f 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-aarch64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h index 50b64b4843ff86..368411fd6107eb 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue May 3 19:56:15 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:53 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm index a7271de8013f7b..b38e61b4c683ce 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-armv4", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h index ae6e82cc67b715..1214245772fa48 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue May 3 19:56:17 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:54 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm index a6e149f4f35163..246203636b9b72 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-armv4", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h index bd2e62af862316..c865828d4e279e 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue May 3 19:56:19 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:56 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm index 5b13c70cf031e7..f6f890dcf5d4aa 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-armv4", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h index b1edf54c925afc..b6f70bd2f7713d 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue May 3 19:56:20 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:58 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm index a0c56b04b7355e..287822d779e31a 100644 --- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm @@ -112,8 +112,8 @@ our %config = ( sourcedir => ".", target => "linux-elf", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h index 316319da23c9ac..ed427e84fed1a1 100644 --- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue May 3 19:56:22 2022 UTC" +#define DATE "built on: Wed Jun 22 14:29:59 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm index 8d7a0501daf843..f1cef97eccf9e4 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm @@ -112,8 +112,8 @@ our %config = ( sourcedir => ".", target => "linux-elf", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h index e318ae904ef64e..dee561b88ec32f 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue May 3 19:56:24 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:01 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm index 95b1d41d16108b..3e9aed9c5dd8ab 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-elf", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h index 2e8ce13591db06..8ef313065ae976 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue May 3 19:56:26 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:03 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc/asm/configdata.pm index 5800d54991d32e..24cbea05d0ce15 100644 --- a/deps/openssl/config/archs/linux-ppc/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h index 5091aef83de5a6..9e3c5ae9b1c0c1 100644 --- a/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc" -#define DATE "built on: Tue May 3 19:56:37 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:15 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm index 2b56a7aaf2f2e6..11a4f153279c26 100644 --- a/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h index 1b4f759277ce74..af1e97842038f5 100644 --- a/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc" -#define DATE "built on: Tue May 3 19:56:39 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:16 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm index 22d2c153b58f99..2e6ded77d6b85e 100644 --- a/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h index e8bf4ab02ac5db..56b00e8693c73e 100644 --- a/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc" -#define DATE "built on: Tue May 3 19:56:41 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:18 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm index 056d9f7f79d1d4..c6bc60a2cb14aa 100644 --- a/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h index 86c7b07958d67c..fe2cb95dc1206d 100644 --- a/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64" -#define DATE "built on: Tue May 3 19:56:42 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:19 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm index 5486339665d793..41d95dc817c838 100644 --- a/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h index c484e6274b61da..afce099dd3e694 100644 --- a/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64" -#define DATE "built on: Tue May 3 19:56:44 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:21 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm index 017535d7ffc58a..7b6c99721d470b 100644 --- a/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h index 1d5f1a3120ad60..1694f652eaa960 100644 --- a/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64" -#define DATE "built on: Tue May 3 19:56:46 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:23 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm index 9c46ca5f4b1bbc..1f747baeb44dcc 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64le", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h index 0f3d2b9d03c6f2..de3a358f993a59 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue May 3 19:56:47 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:25 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm index d86b1df8295cd1..622e3d58ddb826 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64le", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h index 359fe7e6f5e783..ed2da43ddb921b 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue May 3 19:56:49 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:27 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm index 437f1027be9721..155ba99fd3cae9 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-ppc64le", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h index 723cefa5026025..f72b525e67c0dd 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue May 3 19:56:51 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:29 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm index 0ff15d41c580f8..a09c34a2c32ff5 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm @@ -112,8 +112,8 @@ our %config = ( sourcedir => ".", target => "linux-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/linux-x86_64/asm/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h index fc8a59f2223514..e3676e57078782 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue May 3 19:56:27 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:05 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm index afb620165c5add..abb7fbcf56c248 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm @@ -112,8 +112,8 @@ our %config = ( sourcedir => ".", target => "linux-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h index 9f3db1911d58d2..b474a40d0ae3c1 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue May 3 19:56:32 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:09 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm index 69c9f45e3148d9..d9829a4467eefb 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux-x86_64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h index d813b111d9906b..f352a4086343c3 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue May 3 19:56:36 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:13 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm index ae4ec30511a4c1..d835a797257506 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux32-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h index 91eece0d6de440..a1702fb12a82c1 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue May 3 19:56:53 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:30 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm index 1e4cc99b6db2d0..9935358fe737fb 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux32-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h index 771666d1745b01..870dc436643acb 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue May 3 19:56:54 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:31 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm index a813d072890a21..43ad36c49752a8 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux32-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h index 419bd67fd0dc6a..38dab8822be7b7 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue May 3 19:56:55 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:33 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm index 17761efe1e32b6..7c8ef974370f7e 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-mips64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h index 13297f272fa338..d7c8d2fee86869 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue May 3 19:57:01 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:38 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm index dedad21a0d0aeb..358d443acdb2cb 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-mips64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h index 53969647546924..8f40956ceae711 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue May 3 19:57:02 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:39 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm index 9612c92c025fa3..50c4e16185f428 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-mips64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h index e873f66c9bd09d..61bf9047c4e6ad 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue May 3 19:57:04 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:41 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm index d2c9ec1e5c6269..a72436525c9211 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-riscv64", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h index 60b7640770ad2a..ea4818a3ff7dbd 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-riscv64" -#define DATE "built on: Tue May 3 19:57:37 2022 UTC" +#define DATE "built on: Wed Jun 22 14:31:14 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm index c285fb8b5167d5..56a90f610b0c5e 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h index 28cdfa9ef79583..db1188c7325cde 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue May 3 19:56:57 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:34 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm index 6aed28a1bc9a07..657e26da565e53 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h index 02808da21e4ac8..7e9398fdf21f82 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue May 3 19:56:58 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:35 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm index 466f6581099d09..eec8f658143359 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "linux64-s390x", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h index a8aa95ba78f76f..a49a4b037cd04b 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue May 3 19:57:00 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:37 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm index 9ee7ab1760198a..ca24a723fc7575 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "solaris-x86-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h index 7c502071b4a0f9..91bdd971d61ab1 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue May 3 19:57:05 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:42 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm index 38c884b6e9ad49..2b64873f39c0d2 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "solaris-x86-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h index f7f76122bdd36a..7d836178b7a736 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue May 3 19:57:07 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:44 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm index fe5b21efaa2516..91177c0232aa58 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "solaris-x86-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h index 78aa8ddf32eb8a..f85fd3b541c273 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue May 3 19:57:09 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:46 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm index fd905b32597696..f6423f5cb884c5 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "solaris64-x86_64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h index 176b3414254041..8f9e0fc40df465 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue May 3 19:57:10 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:47 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm index 7113ca0fe8307c..4bfcebfc37fb0e 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm @@ -111,8 +111,8 @@ our %config = ( sourcedir => ".", target => "solaris64-x86_64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/bn/x86_64-mont5.s b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/bn/x86_64-mont5.s index ab93b02d8c1aae..3a3b8741145c31 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/bn/x86_64-mont5.s +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/bn/x86_64-mont5.s @@ -2048,185 +2048,6 @@ __bn_post4x_internal: .byte 0xf3,0xc3 .cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal -.globl bn_from_montgomery -.type bn_from_montgomery,@function -.align 32 -bn_from_montgomery: -.cfi_startproc - testl $7,%r9d - jz bn_from_mont8x - xorl %eax,%eax - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_montgomery,.-bn_from_montgomery - -.type bn_from_mont8x,@function -.align 32 -bn_from_mont8x: -.cfi_startproc -.byte 0x67 - movq %rsp,%rax -.cfi_def_cfa_register %rax - pushq %rbx -.cfi_offset %rbx,-16 - pushq %rbp -.cfi_offset %rbp,-24 - pushq %r12 -.cfi_offset %r12,-32 - pushq %r13 -.cfi_offset %r13,-40 - pushq %r14 -.cfi_offset %r14,-48 - pushq %r15 -.cfi_offset %r15,-56 -.Lfrom_prologue: - - shll $3,%r9d - leaq (%r9,%r9,2),%r10 - negq %r9 - movq (%r8),%r8 - - - - - - - - - leaq -320(%rsp,%r9,2),%r11 - movq %rsp,%rbp - subq %rdi,%r11 - andq $4095,%r11 - cmpq %r11,%r10 - jb .Lfrom_sp_alt - subq %r11,%rbp - leaq -320(%rbp,%r9,2),%rbp - jmp .Lfrom_sp_done - -.align 32 -.Lfrom_sp_alt: - leaq 4096-320(,%r9,2),%r10 - leaq -320(%rbp,%r9,2),%rbp - subq %r10,%r11 - movq $0,%r10 - cmovcq %r10,%r11 - subq %r11,%rbp -.Lfrom_sp_done: - andq $-64,%rbp - movq %rsp,%r11 - subq %rbp,%r11 - andq $-4096,%r11 - leaq (%r11,%rbp,1),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk - jmp .Lfrom_page_walk_done - -.Lfrom_page_walk: - leaq -4096(%rsp),%rsp - movq (%rsp),%r10 - cmpq %rbp,%rsp - ja .Lfrom_page_walk -.Lfrom_page_walk_done: - - movq %r9,%r10 - negq %r9 - - - - - - - - - - - movq %r8,32(%rsp) - movq %rax,40(%rsp) -.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 -.Lfrom_body: - movq %r9,%r11 - leaq 48(%rsp),%rax - pxor %xmm0,%xmm0 - jmp .Lmul_by_1 - -.align 32 -.Lmul_by_1: - movdqu (%rsi),%xmm1 - movdqu 16(%rsi),%xmm2 - movdqu 32(%rsi),%xmm3 - movdqa %xmm0,(%rax,%r9,1) - movdqu 48(%rsi),%xmm4 - movdqa %xmm0,16(%rax,%r9,1) -.byte 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 - movdqa %xmm1,(%rax) - movdqa %xmm0,32(%rax,%r9,1) - movdqa %xmm2,16(%rax) - movdqa %xmm0,48(%rax,%r9,1) - movdqa %xmm3,32(%rax) - movdqa %xmm4,48(%rax) - leaq 64(%rax),%rax - subq $64,%r11 - jnz .Lmul_by_1 - -.byte 102,72,15,110,207 -.byte 102,72,15,110,209 -.byte 0x67 - movq %rcx,%rbp -.byte 102,73,15,110,218 - movl OPENSSL_ia32cap_P+8(%rip),%r11d - andl $0x80108,%r11d - cmpl $0x80108,%r11d - jne .Lfrom_mont_nox - - leaq (%rax,%r9,1),%rdi - call __bn_sqrx8x_reduction - call __bn_postx4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_nox: - call __bn_sqr8x_reduction - call __bn_post4x_internal - - pxor %xmm0,%xmm0 - leaq 48(%rsp),%rax - jmp .Lfrom_mont_zero - -.align 32 -.Lfrom_mont_zero: - movq 40(%rsp),%rsi -.cfi_def_cfa %rsi,8 - movdqa %xmm0,0(%rax) - movdqa %xmm0,16(%rax) - movdqa %xmm0,32(%rax) - movdqa %xmm0,48(%rax) - leaq 64(%rax),%rax - subq $32,%r9 - jnz .Lfrom_mont_zero - - movq $1,%rax - movq -48(%rsi),%r15 -.cfi_restore %r15 - movq -40(%rsi),%r14 -.cfi_restore %r14 - movq -32(%rsi),%r13 -.cfi_restore %r13 - movq -24(%rsi),%r12 -.cfi_restore %r12 - movq -16(%rsi),%rbp -.cfi_restore %rbp - movq -8(%rsi),%rbx -.cfi_restore %rbx - leaq (%rsi),%rsp -.cfi_def_cfa_register %rsp -.Lfrom_epilogue: - .byte 0xf3,0xc3 -.cfi_endproc -.size bn_from_mont8x,.-bn_from_mont8x .type bn_mulx4x_mont_gather5,@function .align 32 bn_mulx4x_mont_gather5: diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h index be5d7346070090..9758731739de38 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue May 3 19:57:15 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:52 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm index 865e2586217e92..78053bce9fe44c 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm @@ -110,8 +110,8 @@ our %config = ( sourcedir => ".", target => "solaris64-x86_64-gcc", tdirs => [ "ossl_shim" ], - version => "1.1.1o+quic", - version_num => "0x101010ffL", + version => "1.1.1p+quic", + version_num => "0x1010110fL", ); our %target = ( diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h index 041f021576a70f..6dac7a4c08f38f 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue May 3 19:57:19 2022 UTC" +#define DATE "built on: Wed Jun 22 14:30:56 2022 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h new file mode 100644 index 00000000000000..79400c6472a49c --- /dev/null +++ b/deps/openssl/openssl/include/crypto/bn_conf.h @@ -0,0 +1 @@ +#include "../../../config/bn_conf.h" diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h new file mode 100644 index 00000000000000..e7f2afa9872320 --- /dev/null +++ b/deps/openssl/openssl/include/crypto/dso_conf.h @@ -0,0 +1 @@ +#include "../../../config/dso_conf.h" diff --git a/deps/openssl/openssl/include/openssl/opensslconf.h b/deps/openssl/openssl/include/openssl/opensslconf.h new file mode 100644 index 00000000000000..76c99d433ab886 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/opensslconf.h @@ -0,0 +1 @@ +#include "../../config/opensslconf.h" From 04b2f3390f72c84097575542b6ead1a4396fd6a0 Mon Sep 17 00:00:00 2001 From: Kohei Ueno Date: Sun, 22 May 2022 22:09:14 +0900 Subject: [PATCH 5/5] debugger: throw a more useful error when the frame is missing PR-URL: https://github.com/nodejs/node/pull/42776 Fixes: https://github.com/nodejs/node/issues/42775 Reviewed-By: Antoine du Hamel Reviewed-By: James M Snell --- lib/internal/debugger/inspect_repl.js | 3 +++ test/sequential/test-debugger-list.js | 30 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 test/sequential/test-debugger-list.js diff --git a/lib/internal/debugger/inspect_repl.js b/lib/internal/debugger/inspect_repl.js index 4b11023554e268..20cc394e234078 100644 --- a/lib/internal/debugger/inspect_repl.js +++ b/lib/internal/debugger/inspect_repl.js @@ -635,6 +635,9 @@ function createRepl(inspector) { // List source code function list(delta = 5) { + if (!selectedFrame) { + throw new ERR_DEBUGGER_ERROR('Requires execution to be paused'); + } return selectedFrame.list(delta).then(null, (error) => { print("You can't list source code right now"); throw error; diff --git a/test/sequential/test-debugger-list.js b/test/sequential/test-debugger-list.js new file mode 100644 index 00000000000000..594874e140b306 --- /dev/null +++ b/test/sequential/test-debugger-list.js @@ -0,0 +1,30 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const startCLI = require('../common/debugger'); + +const assert = require('assert'); + +const cli = startCLI([fixtures.path('debugger/three-lines.js')]); + +(async () => { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('list(0)'); + assert.match(cli.output, /> 1 let x = 1;/); + await cli.command('list(1)'); + assert.match(cli.output, /> 1 let x = 1;\r?\n {2}2 x = x \+ 1;/); + await cli.command('list(10)'); + assert.match(cli.output, /> 1 let x = 1;\r?\n {2}2 x = x \+ 1;\r?\n {2}3 module\.exports = x;\r?\n {2}4 /); + await cli.command('c'); + await cli.waitFor(/disconnect/); + await cli.waitFor(/debug> $/); + await cli.command('list()'); + await cli.waitFor(/ERR_DEBUGGER_ERROR/); + assert.match(cli.output, /Uncaught Error \[ERR_DEBUGGER_ERROR\]: Requires execution to be paused/); +})() +.finally(() => cli.quit()) +.then(common.mustCall());