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 b19b238ae56998f47b5484ebdd5ae2c1fa7ae239..9a81acc4196ef715d4ffc5449730642c56c2366d 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 b23d5175daf76625c5c5f741dd0f512dfc65ccc4..44e08115f1b97143537384de85f05115ab2c873a 100644 (file)
@@ -1290,6 +1290,17 @@ frame_extra_info_zalloc (struct frame_info *fi, long size)
   return fi->extra_info;
 }
 
+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)
 {
index 39539492c232f3f7db3bc0933332acf13d97e64c..f54f185ac9d78a4ae92fa559462841b22b7adf68 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 b1db8cbe9121c55f2f9d83de7fed04a9cc620422..664351ef77bb632d6e273873565543540c20332e 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)
     {
This page took 0.059446 seconds and 4 git commands to generate.