aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1993-08-16 10:13:22 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1993-08-16 10:13:22 +0000
commitc67d08e89bf84624a016fb42b3f2e241fcf5ab07 (patch)
treecb3f84791e0abf4cce8ff54f74f4613a28285e91
parentadce2225016b5f6c7bee3473d49e839525f21807 (diff)
downloadgdb-c67d08e89bf84624a016fb42b3f2e241fcf5ab07.zip
gdb-c67d08e89bf84624a016fb42b3f2e241fcf5ab07.tar.gz
gdb-c67d08e89bf84624a016fb42b3f2e241fcf5ab07.tar.bz2
* config/m68k/tm-m68k.h (SIG_PC_FP_OFFSET, SIG_SP_FP_OFFSET):
Define for correct handling of bachtraces through _sigtramp.
-rw-r--r--gdb/config/m68k/tm-sun3.h19
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