summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-03-16 20:47:40 +0000
committerAndrew Cagney <cagney@redhat.com>2003-03-16 20:47:40 +0000
commitbd651217a2e9d69488b8d476e7d11e33bae4911c (patch)
tree3f9f13e2848b39ae707018c24d91b88a271b370f
parente230d24605428e7d1b329b13996ebcf9a55800be (diff)
downloadgdb-bd651217a2e9d69488b8d476e7d11e33bae4911c.tar.gz
2003-03-16 Andrew Cagney <cagney@redhat.com>
* frame.c (frame_pop): Don't call target_store_registers. Fix problem reported by Mark Kettenis.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/frame.c9
2 files changed, 13 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ff1989780fa..72733b4a158 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-16 Andrew Cagney <cagney@redhat.com>
+
+ * frame.c (frame_pop): Don't call target_store_registers. Fix
+ problem reported by Mark Kettenis.
+
2003-03-16 Mark Kettenis <kettenis@gnu.org>
* i386-tdep.c (i386_register_type): Renamed from
diff --git a/gdb/frame.c b/gdb/frame.c
index cf9349d658c..178dfdfe5d9 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -215,6 +215,14 @@ frame_pop (struct frame_info *this_frame)
struct regcache *scratch = regcache_xmalloc (current_gdbarch);
struct cleanup *cleanups = make_cleanup_regcache_xfree (scratch);
regcache_save (scratch, do_frame_unwind_register, this_frame);
+ /* FIXME: cagney/2003-03-16: It should be possible to tell the
+ target's register cache that it is about to be hit with a
+ burst register transfer and that the sequence of register
+ writes should be batched. The pair target_prepare_to_store()
+ and target_store_registers() kind of suggest this
+ functionality. Unfortunatly, they don't implement it. Their
+ lack of a formal definition can lead to targets writing back
+ bogus values (arguably a bug in the target code mind). */
/* Now copy those saved registers into the current regcache.
Here, regcache_cpy() calls regcache_restore(). */
regcache_cpy (current_regcache, scratch);
@@ -222,7 +230,6 @@ frame_pop (struct frame_info *this_frame)
}
/* We've made right mess of GDB's local state, just discard
everything. */
- target_store_registers (-1);
flush_cached_frames ();
}