Fix thinko on dtrace-probe.c:dtrace_process_dof_probe
While investigating PR gdb/22557 ("Regression: gdb.base/dtrace-probe.exp"), I noticed that the code is wrongly declaring a new "expression_up" variable inside the TRY block in "dtrace_process_dof_probe". This causes the outter "expr" variable to be empty, which may have an impact later when evaluating the expression. This commit fixes that. Unfortunately the script used to test DTrace probes (gdb/testsuite/lib/pdtrace.in) is not very reliable so I cannot say whether this commit fixes the PR mentioned above. Nonetheless, it's an obvious fix and should go in. gdb/ChangeLog: 2017-12-08 Sergio Durigan Junior <sergiodj@redhat.com> * dtrace-probe.c (dtrace_process_dof_probe): Do not declare a new "expression_up" inside the TRY block.
This commit is contained in:
parent
f17d947477
commit
92469284a6
|
@ -1,3 +1,8 @@
|
|||
2017-12-08 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
|
||||
* dtrace-probe.c (dtrace_process_dof_probe): Do not declare a new
|
||||
"expression_up" inside the TRY block.
|
||||
|
||||
2017-12-08 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
* breakpoint.c (update_watchpoint): Call
|
||||
|
|
|
@ -486,8 +486,7 @@ dtrace_process_dof_probe (struct objfile *objfile,
|
|||
|
||||
TRY
|
||||
{
|
||||
expression_up expr
|
||||
= parse_expression_with_language (type_str.c_str (),
|
||||
expr = parse_expression_with_language (type_str.c_str (),
|
||||
language_c);
|
||||
}
|
||||
CATCH (ex, RETURN_MASK_ERROR)
|
||||
|
@ -495,8 +494,8 @@ dtrace_process_dof_probe (struct objfile *objfile,
|
|||
}
|
||||
END_CATCH
|
||||
|
||||
if (expr != NULL && expr->elts[0].opcode == OP_TYPE)
|
||||
type = expr->elts[1].type;
|
||||
if (expr != NULL && expr.get ()->elts[0].opcode == OP_TYPE)
|
||||
type = expr.get ()->elts[1].type;
|
||||
|
||||
args.emplace_back (type, std::move (type_str), std::move (expr));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue