4fc90a2597
This CL refactors the existing trap handler code for Linux to allow a cleaner extension to Windows. 1) The CL extracts platform-specific code into separate files, see https://docs.google.com/document/d/1HCgKIpdjy_CEodTLvZ5VuykDI6gGTHrTtau2j0zwm28. Specifically this means: * Move posix-specific API functions from v8.h to v8-wasm-trap-handler-posix.h. Deprecate the existing TryHandleSignal API function. * Move posix-specific function declarations from trap-handler-internal.h to handler-inside-posix.h * Move posix-specific function definitions from handler-shared.cc to handler-outside-posix.cc 2) The CL changes filenames from *-linux.* to *-posix.*. I expect that most of the implementation for MacOS will be the same as for Linux. Bug: v8:6743 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I4bb7f199564a2f01042084d15a82311d11a93c7b Reviewed-on: https://chromium-review.googlesource.com/c/1280324 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#57028}
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef V8_WASM_TRAP_HANDLER_POSIX_H_
|
|
#define V8_WASM_TRAP_HANDLER_POSIX_H_
|
|
|
|
#include <signal.h>
|
|
|
|
namespace v8 {
|
|
/**
|
|
* This function determines whether a memory access violation has been an
|
|
* out-of-bounds memory access in WebAssembly. If so, it will modify the context
|
|
* parameter and add a return address where the execution can continue after the
|
|
* signal handling, and return true. Otherwise, false will be returned.
|
|
*
|
|
* The parameters to this function correspond to those passed to a Posix signal
|
|
* handler. Use this function only on Linux and Mac.
|
|
*
|
|
* \param sig_code The signal code, e.g. SIGSEGV.
|
|
* \param info A pointer to the siginfo_t struct provided to the signal handler.
|
|
* \param context A pointer to a ucontext_t struct provided to the signal
|
|
* handler.
|
|
*/
|
|
bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
|
|
void* context);
|
|
|
|
} // namespace v8
|
|
#endif // V8_WASM_TRAP_HANDLER_POSIX_H_
|