aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-01-19 22:24:50 +0000
committerAndrew Cagney <cagney@redhat.com>2003-01-19 22:24:50 +0000
commitb7261c70f17360b2abbadbc0bbed3caabd1b23f6 (patch)
treefbd0983340015539d05a2a6dcb3bfd8128a9d267
parentdbe9fe588fc696a5d74b3a5c3208f2568b9fb7aa (diff)
downloadgdb-b7261c70f17360b2abbadbc0bbed3caabd1b23f6.zip
gdb-b7261c70f17360b2abbadbc0bbed3caabd1b23f6.tar.gz
gdb-b7261c70f17360b2abbadbc0bbed3caabd1b23f6.tar.bz2
2003-01-19 Andrew Cagney <ac131313@redhat.com>
* d10v-tdep.c (d10v_frame_saved_pc, d10v_frame_chain): Restore code handling dummy frames.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/d10v-tdep.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b383e54..8ae914e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2003-01-19 Andrew Cagney <ac131313@redhat.com>
+ * d10v-tdep.c (d10v_frame_saved_pc, d10v_frame_chain): Restore
+ code handling dummy frames.
+
+2003-01-19 Andrew Cagney <ac131313@redhat.com>
+
* frame-unwind.h (frame_unwind_pop_ftype): Declare.
(struct frame_unwind): Add field pop.
* frame.h (frame_pop): Declare.
diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c
index 63efe4c..b00cd9d 100644
--- a/gdb/d10v-tdep.c
+++ b/gdb/d10v-tdep.c
@@ -521,7 +521,12 @@ d10v_extract_struct_value_address (struct regcache *regcache)
static CORE_ADDR
d10v_frame_saved_pc (struct frame_info *frame)
{
- return (get_frame_extra_info (frame)->return_pc);
+ if (DEPRECATED_PC_IN_CALL_DUMMY (frame->pc, 0, 0))
+ return d10v_make_iaddr (deprecated_read_register_dummy (frame->pc,
+ frame->frame,
+ PC_REGNUM));
+ else
+ return ((frame)->extra_info->return_pc);
}
/* Immediately after a function call, return the saved pc. We can't
@@ -692,8 +697,10 @@ d10v_frame_chain (struct frame_info *fi)
CORE_ADDR addr;
/* A generic call dummy's frame is the same as caller's. */
- d10v_frame_init_saved_regs (fi);
+ if (DEPRECATED_PC_IN_CALL_DUMMY (fi->pc, 0, 0))
+ return fi->frame;
+ d10v_frame_init_saved_regs (fi);
if (get_frame_extra_info (fi)->return_pc == IMEM_START
|| inside_entry_file (get_frame_extra_info (fi)->return_pc))