diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/dwarf2/read.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 049ee4d..e2f010b 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16694,9 +16694,25 @@ cooked_index_functions::expand_symtabs_matching = lookup_name_without_params.match_type (); if ((match_type == symbol_name_match_type::FULL || (lang != language_ada - && match_type == symbol_name_match_type::EXPRESSION)) - && parent != nullptr) - continue; + && match_type == symbol_name_match_type::EXPRESSION))) + { + if (parent != nullptr) + continue; + + if (entry->lang != language_unknown) + { + const language_defn *lang_def = language_def (entry->lang); + lookup_name_info last_segment_lookup_name ( + last_name.data (), symbol_name_match_type::FULL, + false, true); + symbol_name_matcher_ftype *name_matcher + = lang_def->get_symbol_name_matcher + (last_segment_lookup_name); + if (!name_matcher (entry->canonical, + last_segment_lookup_name, nullptr)) + continue; + } + } } else { |