diff options
author | Tom Tromey <tromey@adacore.com> | 2019-04-24 12:50:04 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-05-08 10:12:37 -0600 |
commit | 988915ee7b880ff059f849893b71118d9bd2c4fc (patch) | |
tree | 3977c74edfe1781a74796682348a6e4f5604e58a /gdb/dwarf2loc.c | |
parent | 2379f9c475505ecedc97607b39af7184bd67aa88 (diff) | |
download | gdb-988915ee7b880ff059f849893b71118d9bd2c4fc.zip gdb-988915ee7b880ff059f849893b71118d9bd2c4fc.tar.gz gdb-988915ee7b880ff059f849893b71118d9bd2c4fc.tar.bz2 |
Fix VLA printing for Ada
While looking at a different Ada problem, I found that printing a
record containing a VLA did not work properly.
I tracked the problem down to dwarf2_evaluate_property trying, and
failing, to compare two types that differed only in qualifiers.
This patch changes dwarf2_evaluate_property to ignore qualifiers when
comparing types.
Tested on x86-64 Fedora 29.
gdb/ChangeLog
2019-05-08 Tom Tromey <tromey@adacore.com>
* dwarf2loc.c (dwarf2_evaluate_property) <PROP_ADDR_OFFSET>:
Compare main types.
gdb/testsuite/ChangeLog
2019-05-08 Tom Tromey <tromey@adacore.com>
* gdb.ada/vla.exp: New file.
* gdb.ada/vla/vla.adb: New file.
Diffstat (limited to 'gdb/dwarf2loc.c')
-rw-r--r-- | gdb/dwarf2loc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index bd630ee..c5145af 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -2493,8 +2493,12 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop, struct value *val; for (pinfo = addr_stack; pinfo != NULL; pinfo = pinfo->next) - if (pinfo->type == baton->referenced_type) - break; + { + /* This approach lets us avoid checking the qualifiers. */ + if (TYPE_MAIN_TYPE (pinfo->type) + == TYPE_MAIN_TYPE (baton->referenced_type)) + break; + } if (pinfo == NULL) error (_("cannot find reference address for offset property")); if (pinfo->valaddr != NULL) |