diff options
author | Doug Evans <dje@google.com> | 2013-03-05 21:15:34 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2013-03-05 21:15:34 +0000 |
commit | 4eeaa230f415805552e4fdb4869c149175a6d7f0 (patch) | |
tree | 65b6e9e11c1d89a56a560461d1768d53550fca4c /gdb/symtab.c | |
parent | 62b0d0d5f3b116a7e7014ef50d3103bbef7a89de (diff) | |
download | gdb-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.c | 32 |
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); } } |