diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/ada-lang.c | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index dd8c01b..f3357d5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 2021-01-07 Tom Tromey <tromey@adacore.com> + * ada-lang.c (do_full_match): Conditionally skip "_ada_" prefix. + +2021-01-07 Tom Tromey <tromey@adacore.com> + * ada-lang.c (add_component_interval): Start loop using vector's updated size. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 4751b6e..c898ccb 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -13572,10 +13572,16 @@ do_full_match (const char *symbol_search_name, const lookup_name_info &lookup_name, completion_match_result *comp_match_res) { - if (startswith (symbol_search_name, "_ada_")) + const char *lname = lookup_name.ada ().lookup_name ().c_str (); + + /* If both symbols start with "_ada_", just let the loop below + handle the comparison. However, if only the symbol name starts + with "_ada_", skip the prefix and let the match proceed as + usual. */ + if (startswith (symbol_search_name, "_ada_") + && !startswith (lname, "_ada")) symbol_search_name += 5; - const char *lname = lookup_name.ada ().lookup_name ().c_str (); int uscore_count = 0; while (*lname != '\0') { |