|
Lines 8-14
Link Here
|
| 8 |
#include "unistd.h" |
8 |
#include "unistd.h" |
| 9 |
#include "sys/wait.h" |
9 |
#include "sys/wait.h" |
| 10 |
#define SAFE_INT volatile sig_atomic_t |
10 |
#define SAFE_INT volatile sig_atomic_t |
| 11 |
@@ -473,13 +474,25 @@ void print_backtrace(const QString& mess |
11 |
@@ -473,23 +474,35 @@ void print_backtrace(const QString& mess |
| 12 |
|
12 |
|
| 13 |
#define USE_SIGNAL_HANDLER |
13 |
#define USE_SIGNAL_HANDLER |
| 14 |
#ifdef CPU_IS_X86_64 |
14 |
#ifdef CPU_IS_X86_64 |
|
Lines 40-42
Link Here
|
| 40 |
#elif defined(CPU_IS_PPC) |
40 |
#elif defined(CPU_IS_PPC) |
| 41 |
#define PC_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[32] |
41 |
#define PC_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[32] |
| 42 |
#define STACK_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[1] |
42 |
#define STACK_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[1] |
|
|
43 |
#define FRAME_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[31] //not always used |
| 44 |
#define RETURNTO_FROM_UCONTEXT(context) (context)->uc_mcontext.gp_regs[34] |
| 45 |
#elif defined(CPU_IS_ARM) |
| 46 |
-#define PC_FROM_UCONTEXT(context) (context)->uc_mcontext.arm_pc |
| 47 |
-#define STACK_FROM_UCONTEXT(context) (context)->uc_mcontext.arm_sp |
| 48 |
-#define FRAME_FROM_UCONTEXT(context) (context)->uc_mcontext.arm_fp |
| 49 |
-#define RETURNTO_FROM_UCONTEXT(context) (context)->uc_mcontext.arm_lr |
| 50 |
+#define PC_FROM_UCONTEXT(context) (context)->uc_mcontext.__gregs[_REG_R15] |
| 51 |
+#define STACK_FROM_UCONTEXT(context) (context)->uc_mcontext.__gregs[_REG_R13] |
| 52 |
+#define FRAME_FROM_UCONTEXT(context) (context)->uc_mcontext.__gregs[_REG_R11] |
| 53 |
+#define RETURNTO_FROM_UCONTEXT(context) (context)->uc_mcontext.__gregs[_REG_R14] |
| 54 |
#elif defined(CPU_IS_IA64) |
| 55 |
#define PC_FROM_UCONTEXT(context) (context)->_u._mc.sc_ip |
| 56 |
#define STACK_FROM_UCONTEXT(context) (context)->_u._mc.sc_gr[12] //is that register 12? |