* corelow.c (core_open): Flush the register cache before doing
authorPedro Alves <palves@redhat.com>
Mon, 18 May 2009 12:12:16 +0000 (12:12 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 18 May 2009 12:12:16 +0000 (12:12 +0000)
anything with registers.

gdb/ChangeLog
gdb/corelow.c

index 1a99b11..ecfe85a 100644 (file)
@@ -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.
index 5d6f072..ffaf04c 100644 (file)
@@ -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. */