v8/src/ia32
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
..
assembler-ia32-inl.h [turbofan] Use relative calls/jumps on arm for builtins 2018-07-09 10:53:07 +00:00
assembler-ia32.cc Remove dead TurboAssembler::CallSize methods 2018-07-19 10:58:57 +00:00
assembler-ia32.h [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
code-stubs-ia32.cc [stubs] General stub cleanup (includes & platform-independent code) 2018-05-25 15:33:44 +00:00
codegen-ia32.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
constants-ia32.h [turbofan] Use relative calls/jumps on arm for builtins 2018-07-09 10:53:07 +00:00
cpu-ia32.cc
deoptimizer-ia32.cc Merge deoptimization type enums 2018-06-13 11:32:58 +00:00
disasm-ia32.cc [ia32][wasm] Add unpacking integer conversions 2018-06-25 04:25:24 +00:00
frame-constants-ia32.cc [arm64] Update BuiltinContinuation frames for jssp alignment. 2017-10-11 15:05:20 +00:00
frame-constants-ia32.h [iwyu] Add missing includes in frame-constants-*.h 2018-06-19 10:45:48 +00:00
interface-descriptors-ia32.cc [csa][builtins] Port Abort builtin to CSA. 2018-06-22 11:26:25 +00:00
macro-assembler-ia32.cc [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
macro-assembler-ia32.h [turboassembler] Introduce hard-abort mode 2018-07-20 14:44:29 +00:00
simulator-ia32.cc
simulator-ia32.h [simulator] De-dupe {CALL_GENERATED_CODE} macro definition. 2017-12-11 17:07:44 +00:00
sse-instr.h [ia32][wasm] Add unpacking integer conversions 2018-06-25 04:25:24 +00:00