* ia64-tdep.c (refine_prologue_limit): Make sure we don't scan
authorJoel Brobecker <brobecker@gnat.com>
Tue, 18 Sep 2007 23:46:04 +0000 (23:46 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Tue, 18 Sep 2007 23:46:04 +0000 (23:46 +0000)
        the linetable past the function end.

gdb/ChangeLog
gdb/ia64-tdep.c

index db3a8268db2f5492a1feeece72aef8f4ffee5a3c..516cc764e6b2feb5619dab876d9a96259176b77c 100644 (file)
@@ -1,3 +1,8 @@
+2007-09-18  Joel Brobecker  <brobecker@adacore.com>
+
+       * ia64-tdep.c (refine_prologue_limit): Make sure we don't scan
+       the linetable past the function end.
+
 2007-09-18  James E. Wilson  <wilson@specifix.com>
 
        * MAINTAINERS: Update my email address.
index 14e56032142f41e2f72623c9656fece51e154159..8245798d28880b1daf882f77086d5b6423a52fe0 100644 (file)
@@ -967,6 +967,12 @@ refine_prologue_limit (CORE_ADDR pc, CORE_ADDR lim_pc, int *trust_limit)
 {
   struct symtab_and_line prologue_sal;
   CORE_ADDR start_pc = pc;
+  CORE_ADDR end_pc;
+
+  /* The prologue can not possibly go past the function end itself,
+     so we can already adjust LIM_PC accordingly.  */
+  if (find_pc_partial_function (pc, NULL, NULL, &end_pc) && end_pc < lim_pc)
+    lim_pc = end_pc;
 
   /* Start off not trusting the limit.  */
   *trust_limit = 0;