From: Tom Tromey Date: Mon, 15 Mar 2021 12:23:12 +0000 (-0600) Subject: Fix regression in Ada ptype X-Git-Tag: binutils-2_37~1445 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9863c3b5fc64eec400ed55792a49c678927a6145;p=thirdparty%2Fbinutils-gdb.git 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 PR ada/27545: * ada-lang.c (ada_var_value_operation::evaluate): Use recursive call for tagged type. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ed4da7aae93..3033d11387d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2021-03-15 Tom Tromey + + PR ada/27545: + * ada-lang.c (ada_var_value_operation::evaluate): Use recursive + call for tagged type. + 2021-03-15 Tom Tromey * ada-exp.y (exp1): Handle resolution of the right hand side of an diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index ea43a259f51..07958e7934e 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) {