Use symbol search name in expand_symtabs_matching_via_partial...
We are iterating over all symbols in a partial symtab that would match a given name, so we should match the partial symbols search name against the given name rather than using the natural name. In C++, that does not make a difference, but it does in Ada, because Ada searches using the symbol encoded name... We also update the generation of the .gdb_index file to match this change in the search. Although technically an incompatible change, we do not increment the gdb_index version number, because Ada is the only language where it would make a difference - except that this feature is not supported for Ada. gdb/ChangeLog: * psymtab.c (expand_symtabs_matching_via_partial): Match the partial symbols using their SYMBOL_SEARCH_NAME. * symfile.h (struct quick_symbol_functions): Udate the documentation of expand_symtabs_matching. * dwarf2read.c (write_psymbols): Use SYMBOL_SEARCH_NAME instead of SYMBOL_NATURAL_NAME in index entry.
This commit is contained in:
parent
53907c915d
commit
bb2f58dc41
|
@ -1,3 +1,12 @@
|
||||||
|
2011-12-21 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* psymtab.c (expand_symtabs_matching_via_partial): Match
|
||||||
|
the partial symbols using their SYMBOL_SEARCH_NAME.
|
||||||
|
* symfile.h (struct quick_symbol_functions): Udate the
|
||||||
|
documentation of expand_symtabs_matching.
|
||||||
|
* dwarf2read.c (write_psymbols): Use SYMBOL_SEARCH_NAME instead
|
||||||
|
of SYMBOL_NATURAL_NAME in index entry.
|
||||||
|
|
||||||
2011-12-21 Joel Brobecker <brobecker@adacore.com>
|
2011-12-21 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* linespec.c (locate_first_half): Add handling of Ada operators
|
* linespec.c (locate_first_half): Add handling of Ada operators
|
||||||
|
|
|
@ -16890,7 +16890,7 @@ write_psymbols (struct mapped_symtab *symtab,
|
||||||
if (!*slot)
|
if (!*slot)
|
||||||
{
|
{
|
||||||
*slot = lookup;
|
*slot = lookup;
|
||||||
add_index_entry (symtab, SYMBOL_NATURAL_NAME (*psymp), cu_index);
|
add_index_entry (symtab, SYMBOL_SEARCH_NAME (*psymp), cu_index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1305,7 +1305,7 @@ expand_symtabs_matching_via_partial
|
||||||
|| (kind == TYPES_DOMAIN
|
|| (kind == TYPES_DOMAIN
|
||||||
&& SYMBOL_CLASS (*psym) == LOC_TYPEDEF))
|
&& SYMBOL_CLASS (*psym) == LOC_TYPEDEF))
|
||||||
&& (*name_matcher) (current_language,
|
&& (*name_matcher) (current_language,
|
||||||
SYMBOL_NATURAL_NAME (*psym), data))
|
SYMBOL_SEARCH_NAME (*psym), data))
|
||||||
{
|
{
|
||||||
PSYMTAB_TO_SYMTAB (ps);
|
PSYMTAB_TO_SYMTAB (ps);
|
||||||
keep_going = 0;
|
keep_going = 0;
|
||||||
|
|
|
@ -263,10 +263,9 @@ struct quick_symbol_functions
|
||||||
|
|
||||||
If even KIND matches, then NAME_MATCHER is called for each symbol
|
If even KIND matches, then NAME_MATCHER is called for each symbol
|
||||||
defined in the file. The current language, the symbol name and
|
defined in the file. The current language, the symbol name and
|
||||||
DATA are passed to NAME_MATCHER. The symbol "natural" name should
|
DATA are passed to NAME_MATCHER. The symbol "search" name should
|
||||||
be passed to NAME_MATCHER for all languages except Ada, where
|
be passed to NAME_MATCHER (see la_symbol_name_compare in struct
|
||||||
the encoded name is passed instead (see la_symbol_name_compare in
|
language_defn for more details on this).
|
||||||
struct language_defn for more details on this).
|
|
||||||
|
|
||||||
If NAME_MATCHER returns zero, then this symbol is skipped.
|
If NAME_MATCHER returns zero, then this symbol is skipped.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue