Approved by Kevin Buettner <kevinb@redhat.com>
authorFred Fish <fnf@specifix.com>
Thu, 25 Nov 2004 02:48:27 +0000 (02:48 +0000)
committerFred Fish <fnf@specifix.com>
Thu, 25 Nov 2004 02:48:27 +0000 (02:48 +0000)
2004-11-24  Fred Fish  <fnf@specifixinc.com>
* rs6000-tdep.c (skip_prologue): Use line table info to skip over
compiler generated function calls made as part of a prologue.

gdb/ChangeLog
gdb/rs6000-tdep.c

index fcdbd92da264da62154f4be0446dccf4e9535f7f..f5f05744a6b78a2303ca666f9cbee21d7336f045 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-24  Fred Fish  <fnf@specifixinc.com>
+
+       * rs6000-tdep.c (skip_prologue): Use line table info to skip over
+       compiler generated function calls made as part of a prologue.
+
 2004-11-23  Mark Kettenis  <kettenis@gnu.org>
 
        * inf-ttrace.c: New file.
index 54842cd780dae245461f1e556d973a851e7e1578..8b341b2d5d770b4abc1c9b96cea8259c8e467f09 100644 (file)
@@ -1048,9 +1048,18 @@ skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
 
          fdata->frameless = 0;
          /* Don't skip over the subroutine call if it is not within
-            the first three instructions of the prologue.  */
+            the first three instructions of the prologue and either
+            we have no line table information or the line info tells
+            us that the subroutine call is not part of the line
+            associated with the prologue.  */
          if ((pc - orig_pc) > 8)
-           break;
+           {
+             struct symtab_and_line prologue_sal = find_pc_line (orig_pc, 0);
+             struct symtab_and_line this_sal = find_pc_line (pc, 0);
+
+             if ((prologue_sal.line == 0) || (prologue_sal.line != this_sal.line))
+               break;
+           }
 
          op = read_memory_integer (pc + 4, 4);