Use exact match in get_var_value
authorTom Tromey <tromey@adacore.com>
Mon, 14 Dec 2020 15:14:06 +0000 (08:14 -0700)
committerTom Tromey <tromey@adacore.com>
Mon, 14 Dec 2020 15:14:06 +0000 (08:14 -0700)
get_var_value is only used when an exact match is needed.  This
changes this function to ensure this sort of matching is done.

gdb/ChangeLog
2020-12-14  Tom Tromey  <tromey@adacore.com>

* ada-lang.c (get_var_value): Only consider exact matches.

gdb/ChangeLog
gdb/ada-lang.c

index f87f6df6578d935b8aa3484c5526bbca7c71b616..21a6b9730eb8bc214981021fc1936d7488d6a514 100644 (file)
@@ -1,3 +1,7 @@
+2020-12-14  Tom Tromey  <tromey@adacore.com>
+
+       * ada-lang.c (get_var_value): Only consider exact matches.
+
 2020-12-14  Tom Tromey  <tromey@adacore.com>
 
        * dwarf2/read.c (rewrite_array_type): New function.
index b41d2bfc6145a5e44dcb2113b34ee974872d0e86..ca66642dee02d039e360f912d3ffa4092f99153a 100644 (file)
@@ -11351,14 +11351,16 @@ scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
   return 1;
 }
 
-/* Value of variable named NAME in the current environment.  If
-   no such variable found, then if ERR_MSG is null, returns 0, and
+/* Value of variable named NAME.  Only exact matches are considered.
+   If no such variable found, then if ERR_MSG is null, returns 0, and
    otherwise causes an error with message ERR_MSG.  */
 
 static struct value *
 get_var_value (const char *name, const char *err_msg)
 {
-  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+  std::string quoted_name = add_angle_brackets (name);
+
+  lookup_name_info lookup_name (quoted_name, symbol_name_match_type::FULL);
 
   std::vector<struct block_symbol> syms;
   int nsyms = ada_lookup_symbol_list_worker (lookup_name,