aboutsummaryrefslogtreecommitdiff
path: root/gdb/i386-tdep.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2001-04-16 13:03:15 +0000
committerMark Kettenis <kettenis@gnu.org>2001-04-16 13:03:15 +0000
commitc833a37e77135d95d62ca932c30df30d09c7a006 (patch)
tree285c6170accef3a84dd4219c98133fd701af987f /gdb/i386-tdep.c
parentd4424adaef11212e113de58b2557aa4810c41840 (diff)
downloadgdb-c833a37e77135d95d62ca932c30df30d09c7a006.zip
gdb-c833a37e77135d95d62ca932c30df30d09c7a006.tar.gz
gdb-c833a37e77135d95d62ca932c30df30d09c7a006.tar.bz2
* i386-tdep.c (i386_frame_chain): New function.
* config/i386/tm-i386.h (FRAME_CHAIN): Redefine in terms of i386_frame_chain. (i386_frame_chain): New prototype.
Diffstat (limited to 'gdb/i386-tdep.c')
-rw-r--r--gdb/i386-tdep.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 49cc796..f654d6f 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -349,6 +349,22 @@ i386_get_frame_setup (CORE_ADDR pc)
return (-1);
}
+/* Return the chain-pointer for FRAME. In the case of the i386, the
+ frame's nominal address is the address of a 4-byte word containing
+ the calling frame's address. */
+
+CORE_ADDR
+i386_frame_chain (struct frame_info *frame)
+{
+ if (frame->signal_handler_caller)
+ return frame->frame;
+
+ if (! inside_entry_file (frame->pc))
+ return read_memory_unsigned_integer (frame->frame, 4);
+
+ return 0;
+}
+
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */