From: Jan Kratochvil Date: Sun, 13 Feb 2011 09:09:36 +0000 (+0000) Subject: gdb/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=93b55aa198d29b69a6707bcb7bc320572629bd62;p=binutils-gdb.git gdb/ * symtab.c (find_pc_sect_line): New variable objfile, initialize it from S. Iterate S using ALL_OBJFILE_SYMTABS. Verify BV for each S. * symtab.h (struct symtab) : Comment extension. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c80eddb1bbe..cd63152e68f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-02-13 Jan Kratochvil + + * symtab.c (find_pc_sect_line): New variable objfile, initialize it + from S. Iterate S using ALL_OBJFILE_SYMTABS. Verify BV for each S. + * symtab.h (struct symtab) : Comment extension. + 2011-02-12 Yao Qi * Makefile.in (CLEANDIRS): Remove duplicated common dir. diff --git a/gdb/symtab.c b/gdb/symtab.c index 68666da680f..3105327bba7 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1904,6 +1904,7 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) struct blockvector *bv; struct minimal_symbol *msymbol; struct minimal_symbol *mfunsym; + struct objfile *objfile; /* Info on best line seen so far, and where it starts, and its file. */ @@ -2031,13 +2032,17 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent) } bv = BLOCKVECTOR (s); + objfile = s->objfile; /* Look at all the symtabs that share this blockvector. They all have the same apriori range, that we found was right; but they have different line tables. */ - for (; s && BLOCKVECTOR (s) == bv; s = s->next) + ALL_OBJFILE_SYMTABS (objfile, s) { + if (BLOCKVECTOR (s) != bv) + continue; + /* Find the best line in this symtab. */ l = LINETABLE (s); if (!l) diff --git a/gdb/symtab.h b/gdb/symtab.h index e4ec4bfd973..e946c65fea3 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -738,8 +738,7 @@ struct section_offsets struct symtab { - - /* Chain of all existing symtabs. */ + /* Unordered chain of all existing symtabs of this objfile. */ struct symtab *next;