diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-05-01 22:42:21 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-06-02 13:53:10 +0100 |
commit | 4009ee92c4ec3ee63f455c5abd761e26a819ef4a (patch) | |
tree | a088ee6a463cb0735622cf690787f8df3f131b4f | |
parent | 54f4ca4610893424746e56997115b71bc31ffd8a (diff) | |
download | gdb-4009ee92c4ec3ee63f455c5abd761e26a819ef4a.zip gdb-4009ee92c4ec3ee63f455c5abd761e26a819ef4a.tar.gz gdb-4009ee92c4ec3ee63f455c5abd761e26a819ef4a.tar.bz2 |
gdb: Convert language la_iterate_over_symbols field to a method
This commit changes the language_data::la_iterate_over_symbols
function pointer member variable into a member function of
language_defn.
There should be no user visible changes after this commit.
gdb/ChangeLog:
* ada-lang.c (ada_add_all_symbols): Update comment.
(ada_iterate_over_symbols): Delete, move implementation to...
(ada_language::iterate_over_symbols): ...here, a new member
function, rewrite to use range based for loop.
(ada_language_data): Delete la_iterate_over_symbols initializer.
* c-lang.c (c_language_data): Likewise.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* f-lang.c (f_language_data): Likewise.
* go-lang.c (go_language_data): Likewise.
* language.c (unknown_language_data): Likewise.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_iterate_over_symbols field.
(language_defn::iterate_over_symbols): New member function.
(LA_ITERATE_OVER_SYMBOLS): Update.
* linespec.c (iterate_over_all_matching_symtabs): Update.
* m2-lang.c (m2_language_data): Delete la_iterate_over_symbols
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.
-rw-r--r-- | gdb/ChangeLog | 27 | ||||
-rw-r--r-- | gdb/ada-lang.c | 44 | ||||
-rw-r--r-- | gdb/c-lang.c | 4 | ||||
-rw-r--r-- | gdb/d-lang.c | 1 | ||||
-rw-r--r-- | gdb/f-lang.c | 1 | ||||
-rw-r--r-- | gdb/go-lang.c | 1 | ||||
-rw-r--r-- | gdb/language.c | 2 | ||||
-rw-r--r-- | gdb/language.h | 41 | ||||
-rw-r--r-- | gdb/linespec.c | 2 | ||||
-rw-r--r-- | gdb/m2-lang.c | 1 | ||||
-rw-r--r-- | gdb/objc-lang.c | 1 | ||||
-rw-r--r-- | gdb/opencl-lang.c | 1 | ||||
-rw-r--r-- | gdb/p-lang.c | 1 | ||||
-rw-r--r-- | gdb/rust-lang.c | 1 |
14 files changed, 70 insertions, 58 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d10a0db..34c5581 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,32 @@ 2020-06-02 Andrew Burgess <andrew.burgess@embecosm.com> + * ada-lang.c (ada_add_all_symbols): Update comment. + (ada_iterate_over_symbols): Delete, move implementation to... + (ada_language::iterate_over_symbols): ...here, a new member + function, rewrite to use range based for loop. + (ada_language_data): Delete la_iterate_over_symbols initializer. + * c-lang.c (c_language_data): Likewise. + (cplus_language_data): Likewise. + (asm_language_data): Likewise. + (minimal_language_data): Likewise. + * d-lang.c (d_language_data): Likewise. + * f-lang.c (f_language_data): Likewise. + * go-lang.c (go_language_data): Likewise. + * language.c (unknown_language_data): Likewise. + (auto_language_data): Likewise. + * language.h (language_data): Delete la_iterate_over_symbols field. + (language_defn::iterate_over_symbols): New member function. + (LA_ITERATE_OVER_SYMBOLS): Update. + * linespec.c (iterate_over_all_matching_symtabs): Update. + * m2-lang.c (m2_language_data): Delete la_iterate_over_symbols + initializer. + * objc-lang.c (objc_language_data): Likewise. + * opencl-lang.c (opencl_language_data): Likewise. + * p-lang.c (pascal_language_data): Likewise. + * rust-lang.c (rust_language_data): Likewise. + +2020-06-02 Andrew Burgess <andrew.burgess@embecosm.com> + * ada-lang.c (ada_language_data): Delete la_lookup_transparent_type initializer. * c-lang.c (c_language_data): Likewise. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 7d23fd5..762c124 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -5681,7 +5681,7 @@ ada_add_all_symbols (struct obstack *obstackp, else { /* In the !full_search case we're are being called by - ada_iterate_over_symbols, and we don't want to search + iterate_over_symbols, and we don't want to search superblocks. */ ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL); } @@ -5782,28 +5782,6 @@ ada_lookup_symbol_list (const char *name, const struct block *block, return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1); } -/* Implementation of the la_iterate_over_symbols method. */ - -static bool -ada_iterate_over_symbols - (const struct block *block, const lookup_name_info &name, - domain_enum domain, - gdb::function_view<symbol_found_callback_ftype> callback) -{ - int ndefs, i; - std::vector<struct block_symbol> results; - - ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0); - - for (i = 0; i < ndefs; ++i) - { - if (!callback (&results[i])) - return false; - } - - return true; -} - /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set to 1, but choosing the first symbol found if there are multiple choices. @@ -13999,7 +13977,6 @@ extern const struct language_data ada_language_data = ada_collect_symbol_completion_matches, ada_watch_location_expression, ada_get_symbol_name_matcher, /* la_get_symbol_name_matcher */ - ada_iterate_over_symbols, default_search_name_hash, &ada_varobj_ops, NULL, @@ -14114,6 +14091,25 @@ public: lai->bool_type_symbol = NULL; lai->bool_type_default = builtin->builtin_bool; } + + /* See language.h. */ + + bool iterate_over_symbols + (const struct block *block, const lookup_name_info &name, + domain_enum domain, + gdb::function_view<symbol_found_callback_ftype> callback) const override + { + std::vector<struct block_symbol> results; + + ada_lookup_symbol_list_worker (name, block, domain, &results, 0); + for (block_symbol &sym : results) + { + if (!callback (&sym)) + return false; + } + + return true; + } }; /* Single instance of the Ada language class. */ diff --git a/gdb/c-lang.c b/gdb/c-lang.c index aa1efa0..bfd45f4 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -922,7 +922,6 @@ extern const struct language_data c_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &c_varobj_ops, c_get_compile_context, @@ -1022,7 +1021,6 @@ extern const struct language_data cplus_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, cp_get_symbol_name_matcher, - iterate_over_symbols, cp_search_name_hash, &cplus_varobj_ops, cplus_get_compile_context, @@ -1164,7 +1162,6 @@ extern const struct language_data asm_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, @@ -1235,7 +1232,6 @@ extern const struct language_data minimal_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/d-lang.c b/gdb/d-lang.c index 8c4ee44..5732778 100644 --- a/gdb/d-lang.c +++ b/gdb/d-lang.c @@ -176,7 +176,6 @@ extern const struct language_data d_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/f-lang.c b/gdb/f-lang.c index 32435fa..ae559de 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -633,7 +633,6 @@ extern const struct language_data f_language_data = f_collect_symbol_completion_matches, c_watch_location_expression, cp_get_symbol_name_matcher, /* la_get_symbol_name_matcher */ - iterate_over_symbols, cp_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/go-lang.c b/gdb/go-lang.c index 22dd02f..c596279 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -561,7 +561,6 @@ extern const struct language_data go_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/language.c b/gdb/language.c index 227f26b..33e8b16 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -838,7 +838,6 @@ extern const struct language_data unknown_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, @@ -905,7 +904,6 @@ extern const struct language_data auto_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/language.h b/gdb/language.h index 505600a..0880ced 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -384,24 +384,6 @@ struct language_data symbol_name_matcher_ftype *(*la_get_symbol_name_matcher) (const lookup_name_info &); - /* Find all symbols in the current program space matching NAME in - DOMAIN, according to this language's rules. - - The search is done in BLOCK only. - The caller is responsible for iterating up through superblocks - if desired. - - For each one, call CALLBACK with the symbol. If CALLBACK - returns false, the iteration ends at that point. - - This field may not be NULL. If the language does not need any - special processing here, 'iterate_over_symbols' should be - used as the definition. */ - bool (*la_iterate_over_symbols) - (const struct block *block, const lookup_name_info &name, - domain_enum domain, - gdb::function_view<symbol_found_callback_ftype> callback); - /* Hash the given symbol search name. Use default_search_name_hash if no special treatment is required. */ @@ -508,6 +490,27 @@ struct language_defn : language_data return basic_lookup_transparent_type (name); } + /* Find all symbols in the current program space matching NAME in + DOMAIN, according to this language's rules. + + The search is done in BLOCK only. + The caller is responsible for iterating up through superblocks + if desired. + + For each one, call CALLBACK with the symbol. If CALLBACK + returns false, the iteration ends at that point. + + This field may not be NULL. If the language does not need any + special processing here, 'iterate_over_symbols' should be + used as the definition. */ + virtual bool iterate_over_symbols + (const struct block *block, const lookup_name_info &name, + domain_enum domain, + gdb::function_view<symbol_found_callback_ftype> callback) const + { + return ::iterate_over_symbols (block, name, domain, callback); + } + /* List of all known languages. */ static const struct language_defn *languages[nr_languages]; }; @@ -617,7 +620,7 @@ extern enum language set_language (enum language); options)) #define LA_ITERATE_OVER_SYMBOLS(BLOCK, NAME, DOMAIN, CALLBACK) \ - (current_language->la_iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK)) + (current_language->iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK)) /* Test a character to decide whether it can be printed in literal form or needs to be printed in another representation. For example, diff --git a/gdb/linespec.c b/gdb/linespec.c index c59c30e..ddca05b 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1168,7 +1168,7 @@ iterate_over_all_matching_symtabs i++) { block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), i); - state->language->la_iterate_over_symbols + state->language->iterate_over_symbols (block, lookup_name, name_domain, [&] (block_symbol *bsym) { diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c index 9ce6f2a..c83f9ef 100644 --- a/gdb/m2-lang.c +++ b/gdb/m2-lang.c @@ -386,7 +386,6 @@ extern const struct language_data m2_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c index 040226c..6cf8bbb 100644 --- a/gdb/objc-lang.c +++ b/gdb/objc-lang.c @@ -401,7 +401,6 @@ extern const struct language_data objc_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c index 1c41ffd..a548fe6 100644 --- a/gdb/opencl-lang.c +++ b/gdb/opencl-lang.c @@ -1061,7 +1061,6 @@ extern const struct language_data opencl_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/p-lang.c b/gdb/p-lang.c index d2d8b5e..7956d87 100644 --- a/gdb/p-lang.c +++ b/gdb/p-lang.c @@ -416,7 +416,6 @@ extern const struct language_data pascal_language_data = default_collect_symbol_completion_matches, c_watch_location_expression, NULL, /* la_compare_symbol_for_completion */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 65f2324..966aa14 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -2093,7 +2093,6 @@ extern const struct language_data rust_language_data = default_collect_symbol_completion_matches, rust_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ - iterate_over_symbols, default_search_name_hash, &default_varobj_ops, NULL, |