aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2001-04-17 23:20:55 +0000
committerMark Kettenis <kettenis@gnu.org>2001-04-17 23:20:55 +0000
commited84f6c14944278d643810232ce167b2f0c99fea (patch)
tree1b98b343c54a2395c892c840bb94e217032a1cc6
parent514e603dc095d50008d671e6d7bbe0e975fc2aaa (diff)
downloadgdb-ed84f6c14944278d643810232ce167b2f0c99fea.zip
gdb-ed84f6c14944278d643810232ce167b2f0c99fea.tar.gz
gdb-ed84f6c14944278d643810232ce167b2f0c99fea.tar.bz2
* i386-tdep.c (i386_saved_pc_after_call): New function.
* config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Redefine in terms of i386_saved_pc_after_call. (i386_saved_pc_after_call): New prototype.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/config/i386/tm-i386.h8
-rw-r--r--gdb/i386-tdep.c8
3 files changed, 18 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f95d737..3377633 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2001-04-18 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_saved_pc_after_call): New function.
+ * config/i386/tm-i386.h (SAVED_PC_AFTER_CALL): Redefine in terms
+ of i386_saved_pc_after_call.
+ (i386_saved_pc_after_call): New prototype.
+
2001-04-16 Andrew Cagney <ac131313@redhat.com>
* configure.host (m68030-sony-*, m68*-isi-*, m68*-sony-*):
diff --git a/gdb/config/i386/tm-i386.h b/gdb/config/i386/tm-i386.h
index 8370441..c4b64a5 100644
--- a/gdb/config/i386/tm-i386.h
+++ b/gdb/config/i386/tm-i386.h
@@ -68,12 +68,10 @@ struct type;
extern int i386_skip_prologue (int);
-/* Immediately after a function call, return the saved pc. Can't always go
- through the frames for this because on some machines the new frame is not
- set up until the new function executes some instructions. */
+/* Immediately after a function call, return the saved pc. */
-#define SAVED_PC_AFTER_CALL(frame) \
- (read_memory_unsigned_integer (read_register (SP_REGNUM), 4))
+#define SAVED_PC_AFTER_CALL(frame) i386_saved_pc_after_call (frame)
+extern CORE_ADDR i386_saved_pc_after_call (struct frame_info *frame);
/* Stack grows downward. */
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index f654d6f..15b261c 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -365,6 +365,14 @@ i386_frame_chain (struct frame_info *frame)
return 0;
}
+/* Immediately after a function call, return the saved pc. */
+
+CORE_ADDR
+i386_saved_pc_after_call (struct frame_info *frame)
+{
+ return read_memory_unsigned_integer (read_register (SP_REGNUM), 4);
+}
+
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */