diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 17d67afc73..5b894700be 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2010-12-08 Doug Evans + * symfile.h (quick_symbol_functions): Clarify usage of + expand_symtabs_with_filename. + * dwarf2read.c (dw2_expand_symtabs_with_filename): Only iterate over + comp units, ignore type units. + * dwarf2read.c (dw2_expand_symtabs_with_filename): Use FILENAME_CMP. 2010-12-07 Doug Evans diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 82cde1bf4f..8801fb18f8 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -2323,8 +2323,13 @@ dw2_expand_symtabs_with_filename (struct objfile *objfile, int i; dw2_setup (objfile); - for (i = 0; i < (dwarf2_per_objfile->n_comp_units - + dwarf2_per_objfile->n_type_comp_units); ++i) + + /* We don't need to consider type units here. + This is only called for examining code, e.g. expand_line_sal. + There can be an order of magnitude (or more) more type units + than comp units, and we avoid them if we can. */ + + for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i) { int j; struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i); diff --git a/gdb/symfile.h b/gdb/symfile.h index e989d5c042..297c181810 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -209,7 +209,10 @@ struct quick_symbol_functions void (*expand_all_symtabs) (struct objfile *objfile); /* Read all symbol tables associated with OBJFILE which have the - file name FILENAME. */ + file name FILENAME. + This is for the purposes of examining code only, e.g., expand_line_sal. + The routine may ignore debug info that is known to not be useful with + code, e.g., DW_TAG_type_unit for dwarf debug info. */ void (*expand_symtabs_with_filename) (struct objfile *objfile, const char *filename);