• Clemens Hammacher's avatar
    [turboassembler] Introduce hard-abort mode · a462a785
    Clemens Hammacher authored
    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: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54592}
    a462a785
turbo-assembler.h 4.2 KB