diff options
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/linespec.c | 32 |
2 files changed, 34 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3150826..38cfccb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,19 @@ 2017-11-08 Pedro Alves <palves@redhat.com> + * linespec.c (iterate_over_all_matching_symtabs): Add + search_domain parameter. Pass it down to expand_symtabs_matching. + (decode_objc): Request FUNCTIONS_DOMAIN symbols only. + (lookup_prefix_sym): Adjust by passing ALL_DOMAIN as + search_domain. + (add_all_symbol_names_from_pspace): Add search_domain parameter. + Pass it down. + (find_method, find_function_symbols): Request FUNCTIONS_DOMAIN + symbols. + (add_matching_symbols_to_info): Add search_domain parameter. Pass + it down. + +2017-11-08 Pedro Alves <palves@redhat.com> + * ada-lang.c (ada_make_symbol_completion_list): Remove text and text_len locals and don't pass them down. * symtab.c (completion_list_add_name): Remove diff --git a/gdb/linespec.c b/gdb/linespec.c index 05218bd..3f7f171 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -371,12 +371,14 @@ static int symbol_to_sal (struct symtab_and_line *result, static void add_matching_symbols_to_info (const char *name, symbol_name_match_type name_match_type, + enum search_domain search_domain, struct collect_info *info, struct program_space *pspace); static void add_all_symbol_names_from_pspace (struct collect_info *info, struct program_space *pspace, - VEC (const_char_ptr) *names); + VEC (const_char_ptr) *names, + enum search_domain search_domain); static VEC (symtab_ptr) * collect_symtabs_from_filename (const char *file, @@ -1106,6 +1108,7 @@ iterate_over_all_matching_symtabs (struct linespec_state *state, const lookup_name_info &lookup_name, const domain_enum name_domain, + enum search_domain search_domain, struct program_space *search_pspace, bool include_inline, gdb::function_view<symbol_found_callback_ftype> callback) { @@ -1130,7 +1133,7 @@ iterate_over_all_matching_symtabs NULL, lookup_name, NULL, NULL, - ALL_DOMAIN); + search_domain); ALL_OBJFILE_COMPUNITS (objfile, cu) { @@ -3454,7 +3457,8 @@ decode_objc (struct linespec_state *self, linespec_p ls, const char *arg) return {}; } - add_all_symbol_names_from_pspace (&info, NULL, symbol_names); + add_all_symbol_names_from_pspace (&info, NULL, symbol_names, + FUNCTIONS_DOMAIN); std::vector<symtab_and_line> values; if (!VEC_empty (symbolp, info.result.symbols) @@ -3584,11 +3588,11 @@ lookup_prefix_sym (struct linespec_state *state, VEC (symtab_ptr) *file_symtabs, if (elt == NULL) { iterate_over_all_matching_symtabs (state, lookup_name, - STRUCT_DOMAIN, NULL, false, - collector); + STRUCT_DOMAIN, ALL_DOMAIN, + NULL, false, collector); iterate_over_all_matching_symtabs (state, lookup_name, - VAR_DOMAIN, NULL, false, - collector); + VAR_DOMAIN, ALL_DOMAIN, + NULL, false, collector); } else { @@ -3672,7 +3676,8 @@ compare_msymbols (const void *a, const void *b) static void add_all_symbol_names_from_pspace (struct collect_info *info, struct program_space *pspace, - VEC (const_char_ptr) *names) + VEC (const_char_ptr) *names, + enum search_domain search_domain) { int ix; const char *iter; @@ -3680,7 +3685,7 @@ add_all_symbol_names_from_pspace (struct collect_info *info, for (ix = 0; VEC_iterate (const_char_ptr, names, ix, iter); ++ix) add_matching_symbols_to_info (iter, symbol_name_match_type::FULL, - info, pspace); + search_domain, info, pspace); } static void @@ -3787,7 +3792,8 @@ find_method (struct linespec_state *self, VEC (symtab_ptr) *file_symtabs, /* We have a list of candidate symbol names, so now we iterate over the symbol tables looking for all matches in this pspace. */ - add_all_symbol_names_from_pspace (&info, pspace, result_names); + add_all_symbol_names_from_pspace (&info, pspace, result_names, + FUNCTIONS_DOMAIN); VEC_truncate (typep, superclass_vec, 0); last_result_len = VEC_length (const_char_ptr, result_names); @@ -3947,9 +3953,10 @@ find_function_symbols (struct linespec_state *state, find_imps (name, &symbol_names); if (!VEC_empty (const_char_ptr, symbol_names)) add_all_symbol_names_from_pspace (&info, state->search_pspace, - symbol_names); + symbol_names, FUNCTIONS_DOMAIN); else add_matching_symbols_to_info (name, symbol_name_match_type::WILD, + FUNCTIONS_DOMAIN, &info, state->search_pspace); do_cleanups (cleanup); @@ -4560,6 +4567,7 @@ search_minsyms_for_name (struct collect_info *info, static void add_matching_symbols_to_info (const char *name, symbol_name_match_type name_match_type, + enum search_domain search_domain, struct collect_info *info, struct program_space *pspace) { @@ -4573,7 +4581,7 @@ add_matching_symbols_to_info (const char *name, if (elt == NULL) { iterate_over_all_matching_symtabs (info->state, lookup_name, - VAR_DOMAIN, + VAR_DOMAIN, search_domain, pspace, true, [&] (symbol *sym) { return info->add_symbol (sym); }); search_minsyms_for_name (info, lookup_name, pspace, NULL); |