aboutsummaryrefslogtreecommitdiff
path: root/gdb/ada-lang.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2012-01-26 04:20:36 +0000
committerJoel Brobecker <brobecker@gnat.com>2012-01-26 04:20:36 +0000
commit74ccd7f58b78303b1de7c7823d39821119592c20 (patch)
tree80d5cc92610d9679038af4766b25179729e3999c /gdb/ada-lang.c
parentb8b196db1ef731b7d9de7f332dd745f3240d8623 (diff)
downloadgdb-74ccd7f58b78303b1de7c7823d39821119592c20.zip
gdb-74ccd7f58b78303b1de7c7823d39821119592c20.tar.gz
gdb-74ccd7f58b78303b1de7c7823d39821119592c20.tar.bz2
Ada: allow unqualified function names in linespecs
This is the meat, where we replace the old la_symbol_name_compare language method with the new ada_get_symbol_name_match_p. It fixes the problem when trying to insert a breakpoint on "+". gdb/ChangeLog: * language.h (symbol_name_match_p_ftype): New typedef. (struct language_defn): Replace field la_symbol_name_compare by la_get_symbol_name_match_p. * ada-lang.c (ada_get_symbol_name_match_p): New function. (ada_language_defn): Use it. * linespec.c (struct symbol_matcher_data): New type. (iterate_name_matcher): Rewrite. (iterate_over_all_matching_symtabs): Pass a pointer to a symbol_matcher_data struct to expand_symtabs_matching instead of just the lookup name. * c-lang.c, d-lang.c, jv-lang.c, m2-lang.c, objc-lang.c, opencl-lang.c, p-lang.c, language.c: Delete field la_symbol_name_compare, and replace by NULL for new field la_get_symbol_name_match_p. * symfile.h (struct quick_symbol_functions): Update comment.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r--gdb/ada-lang.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 11ff73f..2f70980 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -12319,6 +12319,18 @@ static const struct exp_descriptor ada_exp_descriptor = {
ada_evaluate_subexp
};
+/* Implement the "la_get_symbol_name_match_p" language_defn method
+ for Ada. */
+
+static symbol_name_match_p_ftype
+ada_get_symbol_name_match_p (const char *lookup_name)
+{
+ if (should_use_wild_match (lookup_name))
+ return wild_match;
+ else
+ return compare_names;
+}
+
const struct language_defn ada_language_defn = {
"ada", /* Language name */
language_ada,
@@ -12355,7 +12367,7 @@ const struct language_defn ada_language_defn = {
ada_print_array_index,
default_pass_by_reference,
c_get_string,
- compare_names,
+ ada_get_symbol_name_match_p, /* la_get_symbol_name_match_p */
ada_iterate_over_symbols,
LANG_MAGIC
};