mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
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.
This commit is contained in:
parent
fd7b2a545d
commit
ac1ca910d7
@ -1,3 +1,12 @@
|
||||
2013-05-13 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
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.
|
||||
|
||||
2013-05-13 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* rs6000-aix-tdep.c (rs6000_push_dummy_call): Convert
|
||||
|
12
gdb/eval.c
12
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:
|
||||
|
@ -1035,10 +1035,13 @@ Cannot perform conditional operation on vectors with different sizes"));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Also handle EVAL_AVOID_SIDE_EFFECTS. */
|
||||
return value_struct_elt (&arg1, NULL,
|
||||
&exp->elts[pc + 2].string, NULL,
|
||||
"structure");
|
||||
struct value *v = value_struct_elt (&arg1, NULL,
|
||||
&exp->elts[pc + 2].string, NULL,
|
||||
"structure");
|
||||
|
||||
if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||
v = value_zero (value_type (v), not_lval);
|
||||
return v;
|
||||
}
|
||||
}
|
||||
default:
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-05-13 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.base/exprs.exp (test_expr): Add regression test.
|
||||
* gdb.base/exprs.c (null_t_struct): New global.
|
||||
|
||||
2013-05-13 Muhammad Bilal <mbilal@codesourcery.com>
|
||||
|
||||
* gdb.base/default.exp: Disable history saving.
|
||||
|
@ -185,6 +185,7 @@ union tu_link {
|
||||
enum colors {red, green, blue} color;
|
||||
enum cars {chevy, ford, porsche} clunker;
|
||||
|
||||
struct t_struct *null_t_struct;
|
||||
|
||||
void dummy()
|
||||
{
|
||||
|
@ -273,3 +273,7 @@ gdb_test "print {short} v_short_array" "$decimal = 42"
|
||||
# Regression tests for cast to void.
|
||||
gdb_test "print (void) v_int_pointer" " = void"
|
||||
gdb_test "print & (void) v_char" "value not located in memory."
|
||||
|
||||
# Regression test for "&&".
|
||||
gdb_test "print null_t_struct && null_t_struct->v_int_member == 0" \
|
||||
" = 0"
|
||||
|
Loading…
Reference in New Issue
Block a user