* symtab.h (lookup_type_symbol): Declare.

* symtab.c (lookup_symbol_in_language_full): Rename from
	lookup_symbol_in_language.  Add 'for_type' argument.
	(lookup_symbol_in_language): New function.
	(lookup_type_symbol): Likewise.
	(lookup_symbol_aux): Add 'for_type' argument.
	(match_symbol_aux): New function.
	(lookup_symbol_aux_symtabs): Use expand_one_symtab_matching.
	(match_transparent_type): New function.
	(basic_lookup_transparent_type): Use expand_one_symtab_matching.
	* symfile.h (struct quick_symbol_functions)
	<pre_expand_symtabs_matching>: Remove.
	<expand_one_symtab_matching>: New field.
	* psymtab.c (expand_one_symtab_matching_psymtabs): New function.
	(pre_expand_symtabs_matching_psymtabs): Remove.
	(psym_functions): Update.
	* gdbtypes.c (lookup_typename): Use lookup_type_symbol.
	* dwarf2read.c (dw2_lookup_symbol): Update comment.
	(dw2_pre_expand_symtabs_matching): Remove.
	(dw2_expand_one_symtab_matching): New function.
	(dwarf2_gdb_index_functions): Update.
This commit is contained in:
Tom Tromey
2010-09-01 21:50:26 +00:00
parent 248c9dbc16
commit faf68db746
7 changed files with 241 additions and 49 deletions

View File

@@ -171,14 +171,25 @@ struct quick_symbol_functions
int kind, const char *name,
domain_enum domain);
/* This is called to expand symbol tables before looking up a
symbol. A backend can choose to implement this and then have its
`lookup_symbol' hook always return NULL, or the reverse. (It
doesn't make sense to implement both.) The arguments are as for
`lookup_symbol'. */
void (*pre_expand_symtabs_matching) (struct objfile *objfile,
int kind, const char *name,
domain_enum domain);
/* Expand each symbol table in OBJFILE that may have items matching
KIND, NAME, and DOMAIN -- these arguments are as for
`lookup_symbol'. For each such symbol table, call MATCHER with
the symbol table and DATA arguments. If MATCHER returns NULL,
keep going. Otherwise, return the result of MATCHER. If MATCHER
never returns non-NULL, return NULL. A backend can choose to
implement this and then have its `lookup_symbol' hook always
return NULL, or the reverse. (It doesn't make sense to implement
both.) */
struct symbol *(*expand_one_symtab_matching)
(struct objfile *objfile,
int kind, const char *name,
domain_enum domain,
struct symbol *(*matcher) (struct symtab *symtab,
int kind,
const char *name,
domain_enum domain,
void *data),
void *data);
/* Print statistics about any indices loaded for OBJFILE. The
statistics should be printed to gdb_stdout. This is used for