2002-12-13 Andrew Cagney <ac131313@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Fri, 13 Dec 2002 21:57:40 +0000 (21:57 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 13 Dec 2002 21:57:40 +0000 (21:57 +0000)
* frame.c (deprecated_update_current_frame_pc_hack): New
function.
* frame.h (deprecated_update_current_frame_pc_hack): Declare.
* infrun.c (normal_stop): Use said function instead of directly
modifying the frame's PC.

gdb/ChangeLog
gdb/frame.c
gdb/frame.h
gdb/infrun.c

index b19b238..9a81acc 100644 (file)
@@ -1,3 +1,11 @@
+2002-12-13  Andrew Cagney  <ac131313@redhat.com>
+
+       * frame.c (deprecated_update_current_frame_pc_hack): New
+       function.
+       * frame.h (deprecated_update_current_frame_pc_hack): Declare.
+       * infrun.c (normal_stop): Use said function instead of directly
+       modifying the frame's PC.
+       
 2002-12-13  Alexandre Oliva  <aoliva@redhat.com>
 
        * frame.h (frame_id_unwind_ftype): Fix typo in return type.
index b23d517..44e0811 100644 (file)
@@ -1291,6 +1291,17 @@ frame_extra_info_zalloc (struct frame_info *fi, long size)
 }
 
 void
+deprecated_update_current_frame_pc_hack (CORE_ADDR pc)
+{
+  /* FIXME: cagney/2002-12-06: Has the PC in the current frame
+     changed?  "infrun.c", Thanks to DECR_PC_AFTER_BREAK, can change
+     the PC after the initial frame create.  This puts things back in
+     sync.  */
+  if (current_frame != NULL)
+    current_frame->pc = pc;
+}
+
+void
 _initialize_frame (void)
 {
   obstack_init (&frame_cache_obstack);
index 3953949..f54f185 100644 (file)
@@ -654,4 +654,9 @@ extern struct frame_extra_info *frame_extra_info_zalloc (struct frame_info *fi,
                                                         long size);
 extern struct frame_extra_info *get_frame_extra_info (struct frame_info *fi);
 
+/* FIXME: cagney/2002-12-06: Has the PC in the current frame changed?
+   "infrun.c", Thanks to DECR_PC_AFTER_BREAK, can change the PC after
+   the initial frame create.  This puts things back in sync.  */
+extern void deprecated_update_current_frame_pc_hack (CORE_ADDR pc);
+
 #endif /* !defined (FRAME_H)  */
index b1db8cb..664351e 100644 (file)
@@ -3066,8 +3066,12 @@ normal_stop (void)
   /* Make sure that the current_frame's pc is correct.  This
      is a correction for setting up the frame info before doing
      DECR_PC_AFTER_BREAK */
-  if (target_has_execution && get_current_frame ())
-    (get_current_frame ())->pc = read_pc ();
+  if (target_has_execution)
+    /* FIXME: cagney/2002-12-06: Has the PC changed?  Thanks to
+       DECR_PC_AFTER_BREAK, the program counter can change.  Ask the
+       frame code to check for this and sort out any resultant mess.
+       DECR_PC_AFTER_BREAK needs to just go away.  */
+    deprecated_update_current_frame_pc_hack (read_pc ());
 
   if (target_has_execution && breakpoints_inserted)
     {