From bb2f58dc41241652af78a29619c0a7986669bcd3 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Wed, 21 Dec 2011 07:34:09 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 9 +++++++++ gdb/dwarf2read.c | 2 +- gdb/psymtab.c | 2 +- gdb/symfile.h | 7 +++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b56e4e2a6c..86c47a76a7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2011-12-21 Joel Brobecker + + * 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 * linespec.c (locate_first_half): Add handling of Ada operators diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index c482c43a22..79050529aa 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -16890,7 +16890,7 @@ write_psymbols (struct mapped_symtab *symtab, if (!*slot) { *slot = lookup; - add_index_entry (symtab, SYMBOL_NATURAL_NAME (*psymp), cu_index); + add_index_entry (symtab, SYMBOL_SEARCH_NAME (*psymp), cu_index); } } } diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 74185ccb54..861b30232d 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1305,7 +1305,7 @@ expand_symtabs_matching_via_partial || (kind == TYPES_DOMAIN && SYMBOL_CLASS (*psym) == LOC_TYPEDEF)) && (*name_matcher) (current_language, - SYMBOL_NATURAL_NAME (*psym), data)) + SYMBOL_SEARCH_NAME (*psym), data)) { PSYMTAB_TO_SYMTAB (ps); keep_going = 0; diff --git a/gdb/symfile.h b/gdb/symfile.h index 44f0c01180..91605a28e1 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -263,10 +263,9 @@ struct quick_symbol_functions If even KIND matches, then NAME_MATCHER is called for each symbol defined in the file. The current language, the symbol name and - DATA are passed to NAME_MATCHER. The symbol "natural" name should - be passed to NAME_MATCHER for all languages except Ada, where - the encoded name is passed instead (see la_symbol_name_compare in - struct language_defn for more details on this). + DATA are passed to NAME_MATCHER. The symbol "search" name should + be passed to NAME_MATCHER (see la_symbol_name_compare in struct + language_defn for more details on this). If NAME_MATCHER returns zero, then this symbol is skipped.