aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.c
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2013-03-05 21:15:34 +0000
committerDoug Evans <dje@google.com>2013-03-05 21:15:34 +0000
commit4eeaa230f415805552e4fdb4869c149175a6d7f0 (patch)
tree65b6e9e11c1d89a56a560461d1768d53550fca4c /gdb/symtab.c
parent62b0d0d5f3b116a7e7014ef50d3103bbef7a89de (diff)
downloadgdb-4eeaa230f415805552e4fdb4869c149175a6d7f0.zip
gdb-4eeaa230f415805552e4fdb4869c149175a6d7f0.tar.gz
gdb-4eeaa230f415805552e4fdb4869c149175a6d7f0.tar.bz2
* ada-lang.c (ada_lookup_symbol_list_worker): New function, contents
of old ada_lookup_symbol_list. In !full_search case, don't search superblocks. (ada_lookup_symbol_list): Delete arg full_search, all callers updated. Call ada_lookup_symbol_list_worker. (ada_iterate_over_symbols): Call ada_lookup_symbol_list_worker. * ada-lang.h (ada_lookup_symbol_list): Update. * language.h (language_defn): Update comment for la_iterate_over_symbols. * linespec.c (iterate_over_file_blocks): New function. (iterate_over_all_matching_symtabs): Call it. (lookup_prefix_sym): Ditto. (get_current_search_block): New function. (get_search_block): Delete. (find_label_symbols): Call get_current_search_block. (add_matching_symbols_to_info): Call iterate_over_file_blocks. * symtab.c (iterate_over_symbols): Don't search superblocks.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r--gdb/symtab.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 57441c1..de2dbee 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2023,16 +2023,13 @@ lookup_block_symbol (const struct block *block, const char *name,
}
}
-/* Iterate over the symbols named NAME, matching DOMAIN, starting with
- BLOCK.
+/* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
For each symbol that matches, CALLBACK is called. The symbol and
DATA are passed to the callback.
If CALLBACK returns zero, the iteration ends. Otherwise, the
- search continues. This function iterates upward through blocks.
- When the outermost block has been finished, the function
- returns. */
+ search continues. */
void
iterate_over_symbols (const struct block *block, const char *name,
@@ -2040,24 +2037,19 @@ iterate_over_symbols (const struct block *block, const char *name,
symbol_found_callback_ftype *callback,
void *data)
{
- while (block)
- {
- struct block_iterator iter;
- struct symbol *sym;
+ struct block_iterator iter;
+ struct symbol *sym;
- for (sym = block_iter_name_first (block, name, &iter);
- sym != NULL;
- sym = block_iter_name_next (name, &iter))
+ for (sym = block_iter_name_first (block, name, &iter);
+ sym != NULL;
+ sym = block_iter_name_next (name, &iter))
+ {
+ if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
+ SYMBOL_DOMAIN (sym), domain))
{
- if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
- SYMBOL_DOMAIN (sym), domain))
- {
- if (!callback (sym, data))
- return;
- }
+ if (!callback (sym, data))
+ return;
}
-
- block = BLOCK_SUPERBLOCK (block);
}
}