aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/linespec.c32
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);