* frame.c (get_prev_frame_1): Also check for PC in the same register.
authorDaniel Jacobowitz <drow@false.org>
Mon, 24 Sep 2007 21:34:58 +0000 (21:34 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 24 Sep 2007 21:34:58 +0000 (21:34 +0000)
gdb/ChangeLog
gdb/frame.c

index 5e7fd7726e406d4bfdb128de53c1ce118585c0d3..5f34782573dc573d7b4aab15d178ac12bb4c5b46 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * frame.c (get_prev_frame_1): Also check for PC in the same register.
+
 2007-09-24  Vladimir Prus  <vladimir@codesourcery.com>
        
        * breakpoint.c (remove_sal): New.
index 5e9eda4f4d764ab79c9662e00d0a4be75bd9fb9b..9379c8cf0b23e8bd8babcb618ddffe099c8d3cdf 100644 (file)
@@ -1231,7 +1231,7 @@ get_prev_frame_1 (struct frame_info *this_frame)
       && get_frame_type (this_frame) == NORMAL_FRAME
       && get_frame_type (this_frame->next) == NORMAL_FRAME)
     {
-      int optimized, realnum;
+      int optimized, realnum, nrealnum;
       enum lval_type lval, nlval;
       CORE_ADDR addr, naddr;
 
@@ -1240,9 +1240,10 @@ get_prev_frame_1 (struct frame_info *this_frame)
                                      &optimized, &lval, &addr, &realnum);
       frame_register_unwind_location (get_next_frame (this_frame),
                                      gdbarch_pc_regnum (current_gdbarch),
-                                     &optimized, &nlval, &naddr, &realnum);
+                                     &optimized, &nlval, &naddr, &nrealnum);
 
-      if (lval == lval_memory && lval == nlval && addr == naddr)
+      if ((lval == lval_memory && lval == nlval && addr == naddr)
+         || (lval == lval_register && lval == nlval && realnum == nrealnum))
        {
          if (frame_debug)
            {