v8/test/cctest
Clemens Hammacher a462a7854a [turboassembler] Introduce hard-abort mode
For checks and assertions (mostly for debug code, like stack alignment
or zero extension), we had two modes: Emit a call to the {Abort}
runtime function (the default), and emit a debug break (used for
testing, enabled via --trap-on-abort).
In wasm, where we cannot just call a runtime function because code must
be isolate independent, we always used the trap-on-abort behaviour.
This causes problems for our fuzzers, which do not catch SIGTRAP, and
hence do not detect debug code failures.

This CL introduces a third mode ("hard abort"), which calls a C
function via {ExternalReference}. The C function still outputs the
abort reason, but does not print the stack trace. It then aborts via
"OS::Abort", just like the runtime function.
This will allow fuzzers to detect the crash and even find a nice error
message.

Even though this looks like a lot of code churn, it is actually not.
Most added lines are new tests, and other changes are minimal.

R=mstarzinger@chromium.org

Bug: chromium:863799
Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b
Reviewed-on: https://chromium-review.googlesource.com/1142163
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54592}
2018-07-20 14:44:29 +00:00
..
compiler [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
heap [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
interpreter [Intl] Implement Intl.RelativeTimeFormat.prototype.{format, formatToParts} 2018-07-18 12:49:22 +00:00
libplatform [tracing] Custom tag for the traceEvents array 2018-05-07 16:54:59 +00:00
libsampler
parsing Revert "Reland "[heap] Added External Strings to external memory accounting."" 2018-07-13 08:27:51 +00:00
torque [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
wasm [wasm] Move {lower_simd} flag into {ModuleEnv} structure. 2018-07-20 11:47:47 +00:00
assembler-helper-arm.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
assembler-helper-arm.h
BUILD.gn [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
cctest.cc
cctest.h [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
cctest.status ManualGCScope: Disable ineffective GC detection 2018-07-12 15:32:58 +00:00
DEPS [torque]: Add the ability to test Torque functionality with cctest 2018-05-13 10:58:56 +00:00
expression-type-collector-macros.h
gay-fixed.cc
gay-fixed.h
gay-precision.cc
gay-precision.h
gay-shortest.cc
gay-shortest.h
log-eq-of-logging-and-traversal.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
OWNERS
print-extension.cc
print-extension.h
profiler-extension.cc
profiler-extension.h
scope-test-helper.h Fix a Jumbo breakage 2018-05-29 14:36:48 +00:00
setup-isolate-for-tests.cc
setup-isolate-for-tests.h
test-access-checks.cc
test-accessor-assembler.cc [in-place weak refs] Replace WeakCells in StubCache. 2018-05-23 14:53:26 +00:00
test-accessors.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-allocation.cc
test-api-accessors.cc [debug] expose SideEffectType when setting template accessors 2018-04-24 22:52:48 +00:00
test-api-interceptors.cc [api] Avoid needlessly calling descriptor interceptors 2018-07-17 14:12:07 +00:00
test-api.cc [cleanup] Fix uses of V8_DEPRECATE_SOON methods in v8 2018-07-19 10:04:07 +00:00
test-api.h
test-array-list.cc [explicit isolates] Remove GetIsolate from objects.cc 2018-07-13 12:42:14 +00:00
test-assembler-arm64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-assembler-arm.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-ia32.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-ppc.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-s390.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-x64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-atomicops.cc
test-bignum-dtoa.cc
test-bignum.cc
test-bit-vector.cc
test-circular-queue.cc
test-code-layout.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-code-stub-assembler.cc [hashtable] Fix SmallOrderedHashTableAllocate test 2018-07-19 16:36:24 +00:00
test-code-stubs-arm64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs-arm.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs-ia32.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs-mips64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs-mips.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs-x64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-code-stubs.cc [ubsan] Fix many static_cast<int32_t> with undefined behavior 2018-04-17 02:02:18 +00:00
test-code-stubs.h
test-compiler.cc [explicit isolates] Remove final GetIsolate/GetHeaps 2018-07-18 08:16:54 +00:00
test-constantpool.cc
test-conversions.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-cpu-profiler.cc [cpu-profiler] Add a new profiling mode with a more detailed call tree. 2018-05-23 09:23:40 +00:00
test-date.cc Reland "Implement a new spec for timezone offset calculation" 2018-04-04 22:42:30 +00:00
test-debug.cc [debug] retire ScriptWrapper 2018-07-05 21:33:03 +00:00
test-decls.cc
test-deoptimization.cc [jumbo] remove some using statements in cctest 2018-06-27 19:47:48 +00:00
test-dictionary.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-disasm-arm64.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-arm.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-ia32.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-disasm-mips64.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-mips.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-ppc.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-s390.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-x64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-diy-fp.cc
test-double.cc
test-dtoa.cc
test-elements-kind.cc [GetIsolate] More low-hanging fruit 2018-06-23 09:53:20 +00:00
test-experimental-extra.js
test-extra.js
test-fast-dtoa.cc
test-feedback-vector.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-feedback-vector.h [objects] Merge SFI outer_scope_info and feedback_metadata 2018-04-06 15:06:04 +00:00
test-field-type-tracking.cc [cleanup] Remove unused Isolate parameters 2018-07-18 16:47:22 +00:00
test-fixed-dtoa.cc
test-flags.cc [GetIsolate] Remove GetIsolate use in Map 2018-06-25 11:38:37 +00:00
test-func-name-inference.cc [jumbo] remove some using statements in cctest 2018-06-27 19:47:48 +00:00
test-fuzz-arm64.cc
test-global-handles.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
test-global-object.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashcode.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashmap.cc
test-heap-profiler.cc [heap-profiler] Allow embedder to specify edge names 2018-07-12 13:42:18 +00:00
test-identity-map.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-inobject-slack-tracking.cc [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
test-inspector.cc [inspector] postpone API interrupts during creation of injected script 2018-06-05 18:04:44 +00:00
test-intl.cc [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
test-isolate-independent-builtins.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-javascript-arm64.cc
test-js-arm64-variables.cc
test-liveedit.cc Reland "[debug] liveedit in native" 2018-07-03 21:01:57 +00:00
test-lockers.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-log-stack-tracer.cc [ptr-compr] Support 31-bit Smis in lower half-word on 64-bit architectures. 2018-06-05 11:37:35 +00:00
test-log.cc [string] deprecate String::Utf8Length 2018-07-16 21:53:26 +00:00
test-macro-assembler-arm.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-macro-assembler-mips64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-macro-assembler-mips.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-macro-assembler-x64.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
test-managed.cc Add size estimate to Managed<T> 2018-05-30 10:26:21 +00:00
test-mementos.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-modules.cc
test-object.cc [GetIsolate] More low-hanging fruit 2018-06-23 09:53:20 +00:00
test-orderedhashtable.cc [GetIsolate] Remove (most) GetIsolate from src/objects-debug.cc 2018-06-21 16:34:27 +00:00
test-parsing.cc [parser] Fix import in arrow function parameters. 2018-07-16 07:57:19 +00:00
test-platform.cc
test-profile-generator.cc [cpu-profiler] Add a new profiling mode with a more detailed call tree. 2018-05-23 09:23:40 +00:00
test-random-number-generator.cc
test-regexp.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-representation.cc
test-roots.cc [explicit isolates] Make read-only root Heap accessors private 2018-07-05 10:04:39 +00:00
test-sampler-api.cc
test-serialize.cc [snapshot] no longer disable code caching when debugging 2018-07-18 13:59:22 +00:00
test-strings.cc [explicit isolates] Remove final GetIsolate/GetHeaps 2018-07-18 08:16:54 +00:00
test-strtod.cc
test-symbols.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-sync-primitives-arm64.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-sync-primitives-arm.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-thread-termination.cc Reland "[inspector] added timeout for Debugger.evaluateOnCallFrame method" 2018-04-26 15:08:52 +00:00
test-threads.cc
test-trace-event.cc [cleanup] Fix uses of V8_DEPRECATE_SOON methods in v8 2018-07-19 10:04:07 +00:00
test-traced-value.cc
test-transitions.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-transitions.h [explicit isolates] Eliminate GetIsolate from transitions.cc 2018-06-05 11:00:43 +00:00
test-typedarrays.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-types.cc [turbofan] Remove unused Type::Of. 2018-05-28 08:11:38 +00:00
test-unbound-queue.cc
test-unboxed-doubles.cc [explicit isolates] Remove final GetIsolate/GetHeaps 2018-07-18 08:16:54 +00:00
test-unscopables-hidden-prototype.cc
test-usecounters.cc
test-utils-arm64.cc
test-utils-arm64.h
test-utils.cc
test-version.cc
test-weakmaps.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
test-weaksets.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
testcfg.py
trace-extension.cc [ptr-compr] Support 31-bit Smis in lower half-word on 64-bit architectures. 2018-06-05 11:37:35 +00:00
trace-extension.h
types-fuzz.h [turbofan] Introduce JS heap broker. 2018-06-07 07:45:16 +00:00
unicode-helpers.h