diff options
author | Tom Tromey <tromey@adacore.com> | 2021-03-15 06:23:12 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2021-03-15 06:23:13 -0600 |
commit | 9863c3b5fc64eec400ed55792a49c678927a6145 (patch) | |
tree | 9d97ec4c7dac8cc8960d66e6ddbac89f15e4cc94 /gdb/ada-lang.c | |
parent | 1ac7452264fee536b0f62610e8dbe9f9e253a6f8 (diff) | |
download | gdb-9863c3b5fc64eec400ed55792a49c678927a6145.zip gdb-9863c3b5fc64eec400ed55792a49c678927a6145.tar.gz gdb-9863c3b5fc64eec400ed55792a49c678927a6145.tar.bz2 |
Fix regression in Ada ptype
This fixes PR ada/27545, which points out that a test in
gdb.ada/tagged.exp started failing due to the expression rewrite. I
didn't notice this failure because my system gcc-gnat debuginfo was
out of date, and so the test was already failing in the baseline.
Previously, the OP_VAR_VALUE case in ada_evaluate_subexp ended up
doing a recursive call:
arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
However, during the rewrite I missed this fact and had the new code
call the superclass implementation.
This patch fixes the bug by changing this code to use a recursive call
instead.
gdb/ChangeLog
2021-03-15 Tom Tromey <tromey@adacore.com>
PR ada/27545:
* ada-lang.c (ada_var_value_operation::evaluate): Use recursive
call for tagged type.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index ea43a25..07958e7 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -10320,8 +10320,7 @@ ada_var_value_operation::evaluate (struct type *expect_type, a fixed type would result in the loss of that type name, thus preventing us from printing the name of the ancestor type in the type description. */ - value *arg1 = var_value_operation::evaluate (nullptr, exp, - EVAL_NORMAL); + value *arg1 = evaluate (nullptr, exp, EVAL_NORMAL); if (type->code () != TYPE_CODE_REF) { |