diff options
-rw-r--r-- | gdb/config/m68k/tm-sun3.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gdb/config/m68k/tm-sun3.h b/gdb/config/m68k/tm-sun3.h index 69d1055..103abfc 100644 --- a/gdb/config/m68k/tm-sun3.h +++ b/gdb/config/m68k/tm-sun3.h @@ -71,3 +71,22 @@ extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *)); /* The code which tries to deal with this bug is never harmful on a sun3. */ #define SUN_FIXED_LBRAC_BUG (0) + +/* On the sun3 the kernel pushes a sigcontext on the user stack and then + `calls' _sigtramp in user code. _sigtramp saves the floating point status + on the stack and calls the signal handler function. The stack does not + contain enough information to allow a normal backtrace, but sigcontext + contains the saved user pc/sp. FRAME_CHAIN and friends in tm-m68k.h and + m68k_find_saved_regs deal with this situation by manufacturing a fake frame + for _sigtramp. + SIG_PC_FP_OFFSET is the offset from the signal handler frame to the + saved pc in sigcontext. + SIG_SP_FP_OFFSET is the offset from the signal handler frame to the end + of sigcontext which is identical to the saved sp at SIG_PC_FP_OFFSET - 4. + + Please note that it is impossible to correctly backtrace from a breakpoint + in _sigtramp as _sigtramp modifies the stack pointer a few times. */ + +#undef SIG_PC_FP_OFFSET +#define SIG_PC_FP_OFFSET 324 +#define SIG_SP_FP_OFFSET 332 |