• eholk's avatar
    [wasm] Initial signal handler · 338622d7
    eholk authored
    This is basically the minimum viable signal handler for Wasm bounds checks.
    It includes the TLS check and the fine grained instructions checks. These
    two checks provide most of the safety for the signal handler. Future CLs will
    add code range and data range checks for more robustness.
    
    The trap handling code and data structures are all in src/trap-handler, with
    the code that actually runs in the signal handler confined to
    src/trap-handler/signal-handler.cc.
    
    This changes adds a new V8 API that the embedder should call from a signal
    handler that will give V8 the chance to handle the fault first. For hosts that
    do not want to implement their own signal handler, we include the option to
    install a simple one. This simple handler is also used for the tests.
    
    When a Wasm module is instantiated, information about each function is passed
    to the trap handler, which is used to classify faults. These are removed during
    the instance finalizer.
    
    Several future enhancements are planned before turning this on by default.
    Obviously, the additional checks will be added to MaybeHandleFault. We are
    also planning to add a two-level CodeObjectData table that is grouped by
    isolates to make cleanup easier and also reduce potential for contending on
    a single data structure.
    
    BUG= https://bugs.chromium.org/p/v8/issues/detail?id=5277
    
    Review-Url: https://codereview.chromium.org/2371833007
    Cr-Original-Commit-Position: refs/heads/master@{#43523}
    Committed: https://chromium.googlesource.com/v8/v8/+/a5af7fe9ee388a636675f4a6872b1d34fa7d1a7a
    Review-Url: https://codereview.chromium.org/2371833007
    Cr-Commit-Position: refs/heads/master@{#43755}
    338622d7
Name
Last commit
Last update
..
blink_tests Loading commit data...
cfi Loading commit data...
dev Loading commit data...
foozzie Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
ignition Loading commit data...
jsfunfuzz Loading commit data...
luci-go Loading commit data...
mb Loading commit data...
memory Loading commit data...
msan Loading commit data...
ninja Loading commit data...
perf Loading commit data...
perf_tests Loading commit data...
profview Loading commit data...
profviz Loading commit data...
release Loading commit data...
sanitizers Loading commit data...
sodium Loading commit data...
testrunner Loading commit data...
turbolizer Loading commit data...
unittests Loading commit data...
v8.xcodeproj Loading commit data...
vim Loading commit data...
visual_studio Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
SourceMap.js Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
bash-completion.sh Loading commit data...
callstats.html Loading commit data...
callstats.py Loading commit data...
check-inline-includes.sh Loading commit data...
check-static-initializers.gyp Loading commit data...
check-static-initializers.isolate Loading commit data...
check-static-initializers.sh Loading commit data...
check-unused-bailouts.sh Loading commit data...
codemap.js Loading commit data...
compare-table-gen.js Loading commit data...
concatenate-files.py Loading commit data...
consarray.js Loading commit data...
cpu.sh Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
detect-builtins.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
dump-cpp.py Loading commit data...
dumpcpp-driver.js Loading commit data...
dumpcpp.js Loading commit data...
eval_gc_nvp.py Loading commit data...
eval_gc_time.sh Loading commit data...
find-commit-for-patch.py Loading commit data...
find_depot_tools.py Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-to-csv.py Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gc_nvp_common.py Loading commit data...
gdb-v8-support.py Loading commit data...
gdbinit Loading commit data...
gen-inlining-tests.py Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-builtins-tests.py Loading commit data...
generate-ten-powers.scm Loading commit data...
get_byteorder.py Loading commit data...
grokdump.py Loading commit data...
gyp_flag_compare.py Loading commit data...
ic-explorer.html Loading commit data...
ic-processor Loading commit data...
ic-processor-driver.js Loading commit data...
ic-processor.js Loading commit data...
isolate_driver.py Loading commit data...
js2c.py Loading commit data...
jsmin.py Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
mingw-generate-makefiles.sh Loading commit data...
objdump-v8 Loading commit data...
parser-shell.cc Loading commit data...
parser-shell.gyp Loading commit data...
perf-to-html.py Loading commit data...
plot-timer-events Loading commit data...
presubmit.py Loading commit data...
process-heap-prof.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
run-deopt-fuzzer.gyp Loading commit data...
run-deopt-fuzzer.isolate Loading commit data...
run-deopt-fuzzer.py Loading commit data...
run-llprof.sh Loading commit data...
run-perf.sh Loading commit data...
run-tests.py Loading commit data...
run-valgrind.gyp Loading commit data...
run-valgrind.isolate Loading commit data...
run-valgrind.py Loading commit data...
run.py Loading commit data...
run_perf.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test-server.py Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
trace-maps-processor.py Loading commit data...
try_perf.py Loading commit data...
turbolizer-perf.py Loading commit data...
update-wasm-fuzzers.sh Loading commit data...
v8-info.sh Loading commit data...
v8-rolls.sh Loading commit data...
v8heapconst.py Loading commit data...
v8heapconst.py.tmpl Loading commit data...
verify_source_deps.py Loading commit data...
whitespace.txt Loading commit data...
windows-tick-processor.bat Loading commit data...