From: Andrew Cagney Date: Sun, 16 Mar 2003 20:47:40 +0000 (+0000) Subject: 2003-03-16 Andrew Cagney X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;ds=sidebyside;h=efd710d6563ff4fad9af26ca64748a0e3c80aeb1;p=binutils-gdb.git 2003-03-16 Andrew Cagney * frame.c (frame_pop): Don't call target_store_registers. Fix problem reported by Mark Kettenis. --- 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 + + * frame.c (frame_pop): Don't call target_store_registers. Fix + problem reported by Mark Kettenis. + 2003-03-16 Mark Kettenis * 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 (); }