| Index: runtime/vm/signal_handler_android.cc
|
| diff --git a/runtime/vm/signal_handler_android.cc b/runtime/vm/signal_handler_android.cc
|
| index cc42e69859aab55b699158edc0dab91643aa63c2..65407511ec9fe28e1defb2e4f85882a7f9e7898c 100644
|
| --- a/runtime/vm/signal_handler_android.cc
|
| +++ b/runtime/vm/signal_handler_android.cc
|
| @@ -12,7 +12,9 @@ namespace dart {
|
| uintptr_t SignalHandler::GetProgramCounter(const mcontext_t& mcontext) {
|
| uintptr_t pc = 0;
|
|
|
| -#if defined(HOST_ARCH_ARM)
|
| +#if defined(HOST_ARCH_IA32)
|
| + pc = static_cast<uintptr_t>(mcontext.gregs[REG_EIP]);
|
| +#elif defined(HOST_ARCH_ARM)
|
| pc = static_cast<uintptr_t>(mcontext.arm_pc);
|
| #elif defined(HOST_ARCH_ARM64)
|
| pc = static_cast<uintptr_t>(mcontext.pc);
|
| @@ -26,7 +28,9 @@ uintptr_t SignalHandler::GetProgramCounter(const mcontext_t& mcontext) {
|
| uintptr_t SignalHandler::GetFramePointer(const mcontext_t& mcontext) {
|
| uintptr_t fp = 0;
|
|
|
| -#if defined(HOST_ARCH_ARM)
|
| +#if defined(HOST_ARCH_IA32)
|
| + fp = static_cast<uintptr_t>(mcontext.gregs[REG_EBP]);
|
| +#elif defined(HOST_ARCH_ARM)
|
| fp = static_cast<uintptr_t>(mcontext.arm_fp);
|
| #elif defined(HOST_ARCH_ARM64)
|
| fp = static_cast<uintptr_t>(mcontext.regs[29]);
|
| @@ -41,7 +45,9 @@ uintptr_t SignalHandler::GetFramePointer(const mcontext_t& mcontext) {
|
| uintptr_t SignalHandler::GetCStackPointer(const mcontext_t& mcontext) {
|
| uintptr_t sp = 0;
|
|
|
| -#if defined(HOST_ARCH_ARM)
|
| +#if defined(HOST_ARCH_IA32)
|
| + sp = static_cast<uintptr_t>(mcontext.gregs[REG_ESP]);
|
| +#elif defined(HOST_ARCH_ARM)
|
| sp = static_cast<uintptr_t>(mcontext.arm_sp);
|
| #elif defined(HOST_ARCH_ARM64)
|
| sp = static_cast<uintptr_t>(mcontext.sp);
|
| @@ -55,7 +61,9 @@ uintptr_t SignalHandler::GetCStackPointer(const mcontext_t& mcontext) {
|
| uintptr_t SignalHandler::GetDartStackPointer(const mcontext_t& mcontext) {
|
| uintptr_t sp = 0;
|
|
|
| -#if defined(HOST_ARCH_ARM)
|
| +#if defined(HOST_ARCH_IA32)
|
| + sp = static_cast<uintptr_t>(mcontext.gregs[REG_ESP]);
|
| +#elif defined(HOST_ARCH_ARM)
|
| sp = static_cast<uintptr_t>(mcontext.arm_sp);
|
| #elif defined(HOST_ARCH_ARM64)
|
| sp = static_cast<uintptr_t>(mcontext.regs[18]);
|
| @@ -68,7 +76,10 @@ uintptr_t SignalHandler::GetDartStackPointer(const mcontext_t& mcontext) {
|
|
|
| uintptr_t SignalHandler::GetLinkRegister(const mcontext_t& mcontext) {
|
| uintptr_t lr = 0;
|
| -#if defined(HOST_ARCH_ARM)
|
| +
|
| +#if defined(HOST_ARCH_IA32)
|
| + lr = 0;
|
| +#elif defined(HOST_ARCH_ARM)
|
| lr = static_cast<uintptr_t>(mcontext.arm_lr);
|
| #elif defined(HOST_ARCH_ARM64)
|
| lr = static_cast<uintptr_t>(mcontext.regs[30]);
|
|
|