5#ifndef RUNTIME_VM_SIGNAL_HANDLER_H_
6#define RUNTIME_VM_SIGNAL_HANDLER_H_
11#if defined(DART_HOST_OS_LINUX)
14#elif defined(DART_HOST_OS_ANDROID)
16#if !defined(__BIONIC_HAVE_UCONTEXT_T)
17#include <asm/sigcontext.h>
19typedef struct sigcontext mcontext_t;
20typedef struct ucontext {
22 struct ucontext* uc_link;
24 struct sigcontext uc_mcontext;
28#elif defined(DART_HOST_OS_MACOS)
30#include <sys/ucontext.h>
31#elif defined(DART_HOST_OS_WINDOWS)
36#elif defined(DART_HOST_OS_FUCHSIA)
55#if defined(DART_HOST_OS_ANDROID)
58 static void* PrepareCurrentThread();
61 static void CleanupCurrentThreadState(
void*
state);
65#undef USE_SIGNAL_HANDLER_TRAMPOLINE
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
static uintptr_t GetDartStackPointer(const mcontext_t &mcontext)
static uintptr_t GetCStackPointer(const mcontext_t &mcontext)
static uintptr_t GetFramePointer(const mcontext_t &mcontext)
static uintptr_t GetProgramCounter(const mcontext_t &mcontext)
static void Install(SignalAction action)
static uintptr_t GetLinkRegister(const mcontext_t &mcontext)
void(* SignalAction)(int signal, siginfo_t *info, void *context)