aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/corelow.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1a99b11..ecfe85a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2009-05-18 Pedro Alves <pedro@codesourcery.com>
+ * corelow.c (core_open): Flush the register cache before doing
+ anything with registers.
+
+2009-05-18 Pedro Alves <pedro@codesourcery.com>
+
* inflow.h (our_process_group): Remove declaration.
(inferior_process_group): Delete global variable declaration.
(inferior_process_group): New function declaration.
diff --git a/gdb/corelow.c b/gdb/corelow.c
index 5d6f072..ffaf04c 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -379,6 +379,14 @@ core_open (char *filename, int from_tty)
from ST to MT. */
add_thread_silent (inferior_ptid);
+ /* Need to flush the register cache (and the frame cache) from a
+ previous debug session. If inferior_ptid ends up the same as the
+ last debug session --- e.g., b foo; run; gcore core1; step; gcore
+ core2; core core1; core core2 --- then there's potential for
+ get_current_regcache to return the cached regcache of the
+ previous session, and the frame cache being stale. */
+ registers_changed ();
+
/* Build up thread list from BFD sections, and possibly set the
current thread to the .reg/NN section matching the .reg
section. */