PR 6832
authorAlan Modra <amodra@gmail.com>
Thu, 22 Jan 2009 08:54:20 +0000 (08:54 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 22 Jan 2009 08:54:20 +0000 (08:54 +0000)
* dwarf2.c (find_line): Don't update stash->sec_info_ptr until
after comp_unit_find_line call.

bfd/ChangeLog
bfd/dwarf2.c

index f6e9726..3f70af7 100644 (file)
@@ -1,3 +1,9 @@
+2009-01-22  Alan Modra  <amodra@bigpond.net.au>
+
+       PR 6832
+       * dwarf2.c (find_line): Don't update stash->sec_info_ptr until
+       after comp_unit_find_line call.
+
 2009-01-21  Nick Clifton  <nickc@redhat.com>
 
        PR 9769
index f1f6c90..4f2e38c 100644 (file)
@@ -1,6 +1,6 @@
 /* DWARF 2 support.
    Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
    Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
    (gavin@cygnus.com).
@@ -3189,13 +3189,6 @@ find_line (bfd *abfd,
            break;
          stash->info_ptr += length;
 
-         if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
-             == stash->sec->size)
-           {
-             stash->sec = find_debug_info (stash->bfd, stash->sec);
-             stash->sec_info_ptr = stash->info_ptr;
-           }
-
          if (stash->all_comp_units)
            stash->all_comp_units->prev_unit = each;
          else
@@ -3225,6 +3218,14 @@ find_line (bfd *abfd,
                                                     functionname_ptr,
                                                     linenumber_ptr,
                                                     stash));
+
+         if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
+             == stash->sec->size)
+           {
+             stash->sec = find_debug_info (stash->bfd, stash->sec);
+             stash->sec_info_ptr = stash->info_ptr;
+           }
+
          if (found)
            goto done;
        }