aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2008-01-02 12:03:06 +0000
committerJoel Brobecker <brobecker@gnat.com>2008-01-02 12:03:06 +0000
commit0a07e705b7ab3d2c4563f28feb7ebfa48b68974e (patch)
tree80230cf801daa86d185da74dbb47742af9b3bb14
parentc4359f8d005c9b4eeb15ebd0681ac876e101a6aa (diff)
downloadgdb-0a07e705b7ab3d2c4563f28feb7ebfa48b68974e.zip
gdb-0a07e705b7ab3d2c4563f28feb7ebfa48b68974e.tar.gz
gdb-0a07e705b7ab3d2c4563f28feb7ebfa48b68974e.tar.bz2
* ada-lang.c (ada_evaluate_subexp): Modify the value returned
when noside is EVAL_AVOID_SIDE_EFFECTS to be an lval_memory. This is needed to make sure that any other treatment applied to the resulting value does not fail for spurious reason, such as trying to take the address of this value.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/ada-lang.c6
2 files changed, 11 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e2784e8..e3b9714 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2008-01-02 Joel Brobecker <brobecker@adacore.com>
+ * ada-lang.c (ada_evaluate_subexp): Modify the value returned
+ when noside is EVAL_AVOID_SIDE_EFFECTS to be an lval_memory.
+ This is needed to make sure that any other treatment applied
+ to the resulting value does not fail for spurious reason,
+ such as trying to take the address of this value.
+
+2008-01-02 Joel Brobecker <brobecker@adacore.com>
+
* ada-lang.c (ada_value_equal): Dereference reference types when
comparing arrays.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index b3090a3..6db1126 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -8397,7 +8397,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
if (arity != nargs)
error (_("wrong number of subscripts; expecting %d"), arity);
if (noside == EVAL_AVOID_SIDE_EFFECTS)
- return allocate_value (ada_aligned_type (type));
+ return value_zero (ada_aligned_type (type), lval_memory);
return
unwrap_value (ada_value_subscript
(argvec[0], nargs, argvec + 1));
@@ -8409,7 +8409,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
if (type == NULL)
error (_("element type of array unknown"));
else
- return allocate_value (ada_aligned_type (type));
+ return value_zero (ada_aligned_type (type), lval_memory);
}
return
unwrap_value (ada_value_subscript
@@ -8423,7 +8423,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
if (type == NULL)
error (_("element type of array unknown"));
else
- return allocate_value (ada_aligned_type (type));
+ return value_zero (ada_aligned_type (type), lval_memory);
}
return
unwrap_value (ada_value_ptr_subscript (argvec[0], type,