2003-08-26 Jeff Johnston <jjohnstn@redhat.com>
authorJeff Johnston <jjohnstn@redhat.com>
Tue, 26 Aug 2003 22:24:40 +0000 (22:24 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Tue, 26 Aug 2003 22:24:40 +0000 (22:24 +0000)
        * ia64-tdep.c (examine_prologue): Only stop at predicated insns if
        we are frameless or the return address register is already known.

gdb/ChangeLog
gdb/ia64-tdep.c

index 2ea6ae5b09c50904c1161edf24446d3420213255..25bd8a16be1e18bfeb24f90dbc24d59a9a0dd1e8 100644 (file)
@@ -1,3 +1,8 @@
+2003-08-26  Jeff Johnston  <jjohnstn@redhat.com>
+
+       * ia64-tdep.c (examine_prologue): Only stop at predicated insns if
+       we are frameless or the return address register is already known. 
+
 2003-08-26  Andrew Cagney  <cagney@redhat.com>
 
        * i386-linux-nat.c (ps_get_thread_area): Make "desc" four "int"s
index 1f1eb0e4bf99aa89b17e492dad5b0a0b3c498634..323bf1c97815181ac3a4b7e479a570e9b346a3a7 100644 (file)
@@ -1143,11 +1143,18 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *next_frame,
       if (next_pc == 0)
        break;
 
-      if ((it == B && ((instr & 0x1e1f800003f) != 0x04000000000))
-          || ((instr & 0x3fLL) != 0LL))
+      if (it == B && ((instr & 0x1e1f800003f) != 0x04000000000))
        {
-         /* Exit loop upon hitting a non-nop branch instruction 
-            or a predicated instruction. */
+         /* Exit loop upon hitting a non-nop branch instruction. */ 
+         if (trust_limit)
+           lim_pc = pc;
+         break;
+       }
+      else if (((instr & 0x3fLL) != 0LL) && 
+              (frameless || ret_reg != 0))
+       {
+         /* Exit loop upon hitting a predicated instruction if
+            we already have the return register or if we are frameless.  */ 
          if (trust_limit)
            lim_pc = pc;
          break;