* config/m68k/tm-m68k.h (SIG_PC_FP_OFFSET, SIG_SP_FP_OFFSET):
authorPeter Schauer <Peter.Schauer@mytum.de>
Mon, 16 Aug 1993 10:13:22 +0000 (10:13 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Mon, 16 Aug 1993 10:13:22 +0000 (10:13 +0000)
Define for correct handling of bachtraces through _sigtramp.

gdb/config/m68k/tm-sun3.h

index 69d10552fe2824ec67b8296f00f14691699ea685..103abfc7a4ff2435c58013594760132f59f85372 100644 (file)
@@ -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