diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-13 09:09:36 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-13 09:09:36 +0000 |
commit | 93b55aa198d29b69a6707bcb7bc320572629bd62 (patch) | |
tree | 85bf81d45ddfacbf9ff70303186eafec3b55f2a0 /gdb | |
parent | f865a34fb95761ae713ffc7778a116f694d0cc27 (diff) | |
download | gdb-93b55aa198d29b69a6707bcb7bc320572629bd62.zip gdb-93b55aa198d29b69a6707bcb7bc320572629bd62.tar.gz gdb-93b55aa198d29b69a6707bcb7bc320572629bd62.tar.bz2 |
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) <next>: Comment extension.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/symtab.c | 7 | ||||
-rw-r--r-- | gdb/symtab.h | 3 |
3 files changed, 13 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c80eddb..cd63152 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-02-13 Jan Kratochvil <jan.kratochvil@redhat.com> + + * 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) <next>: Comment extension. + 2011-02-12 Yao Qi <yao@codesourcery.com> * Makefile.in (CLEANDIRS): Remove duplicated common dir. diff --git a/gdb/symtab.c b/gdb/symtab.c index 68666da..3105327 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 e4ec4bf..e946c65 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; |