aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-02-13 09:09:36 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-02-13 09:09:36 +0000
commit93b55aa198d29b69a6707bcb7bc320572629bd62 (patch)
tree85bf81d45ddfacbf9ff70303186eafec3b55f2a0
parentf865a34fb95761ae713ffc7778a116f694d0cc27 (diff)
downloadgdb-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.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/symtab.c7
-rw-r--r--gdb/symtab.h3
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;