aboutsummaryrefslogtreecommitdiff
path: root/gdb/eval.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-05-13 16:51:52 +0000
committerTom Tromey <tromey@redhat.com>2013-05-13 16:51:52 +0000
commitac1ca910d74d5bd1d2800cb190659c9e3043a904 (patch)
treea62ca0d718e74c6dd7d0f7eca45ac3c9a1a728fe /gdb/eval.c
parentfd7b2a545d530118913b1aefbfd8526785d3c2cc (diff)
downloadgdb-ac1ca910d74d5bd1d2800cb190659c9e3043a904.zip
gdb-ac1ca910d74d5bd1d2800cb190659c9e3043a904.tar.gz
gdb-ac1ca910d74d5bd1d2800cb190659c9e3043a904.tar.bz2
PR exp/15364:
* eval.c (evaluate_subexp_standard) <STRUCTOP_STRUCT, STRUCTOP_PTR>: Return a not_lval value for EVAL_AVOID_SIDE_EFFECTS. * opencl-lang.c (evaluate_subexp_opencl): Return a not_lval value for EVAL_AVOID_SIDE_EFFECTS. gdb/testsuite * gdb.base/exprs.exp (test_expr): Add regression test. * gdb.base/exprs.c (null_t_struct): New global.
Diffstat (limited to 'gdb/eval.c')
-rw-r--r--gdb/eval.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gdb/eval.c b/gdb/eval.c
index f04baee..cf1fda9 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -1847,9 +1847,11 @@ evaluate_subexp_standard (struct type *expect_type,
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
if (noside == EVAL_SKIP)
goto nosideret;
- /* Also handle EVAL_AVOID_SIDE_EFFECTS. */
- return value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
+ arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
NULL, "structure");
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ arg3 = value_zero (value_type (arg3), not_lval);
+ return arg3;
case STRUCTOP_PTR:
tem = longest_to_int (exp->elts[pc + 1].longconst);
@@ -1899,9 +1901,11 @@ evaluate_subexp_standard (struct type *expect_type,
}
}
- /* Also handle EVAL_AVOID_SIDE_EFFECTS. */
- return value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
+ arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
NULL, "structure pointer");
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ arg3 = value_zero (value_type (arg3), not_lval);
+ return arg3;
case STRUCTOP_MEMBER:
case STRUCTOP_MPTR: