gdb/
Make some lval_funcs methods to default on NULL. * valops.c (value_fetch_lazy): Check if lval_computed read method is NULL. (value_assign): Check if lval_computed write method is NULL. * value.h (struct lval_funcs): Comment NULL values for read and write methods.
This commit is contained in:
parent
e18b27534c
commit
ac71a68c85
3 changed files with 21 additions and 5 deletions
|
@ -1,3 +1,12 @@
|
|||
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Make some lval_funcs methods to default on NULL.
|
||||
* valops.c (value_fetch_lazy): Check if lval_computed read method is
|
||||
NULL.
|
||||
(value_assign): Check if lval_computed write method is NULL.
|
||||
* value.h (struct lval_funcs): Comment NULL values for read and write
|
||||
methods.
|
||||
|
||||
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Display @entry parameter values (without references).
|
||||
|
|
11
gdb/valops.c
11
gdb/valops.c
|
@ -1110,7 +1110,8 @@ value_fetch_lazy (struct value *val)
|
|||
watchpoints from trying to watch the saved frame pointer. */
|
||||
value_free_to_mark (mark);
|
||||
}
|
||||
else if (VALUE_LVAL (val) == lval_computed)
|
||||
else if (VALUE_LVAL (val) == lval_computed
|
||||
&& value_computed_funcs (val)->read != NULL)
|
||||
value_computed_funcs (val)->read (val);
|
||||
else if (value_optimized_out (val))
|
||||
/* Keep it optimized out. */;
|
||||
|
@ -1381,9 +1382,13 @@ value_assign (struct value *toval, struct value *fromval)
|
|||
{
|
||||
const struct lval_funcs *funcs = value_computed_funcs (toval);
|
||||
|
||||
funcs->write (toval, fromval);
|
||||
if (funcs->write != NULL)
|
||||
{
|
||||
funcs->write (toval, fromval);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
/* Fall through. */
|
||||
|
||||
default:
|
||||
error (_("Left operand of assignment is not an lvalue."));
|
||||
|
|
|
@ -156,13 +156,15 @@ struct lval_funcs
|
|||
{
|
||||
/* Fill in VALUE's contents. This is used to "un-lazy" values. If
|
||||
a problem arises in obtaining VALUE's bits, this function should
|
||||
call 'error'. */
|
||||
call 'error'. If it is NULL value_fetch_lazy on "un-lazy"
|
||||
non-optimized-out value is an internal error. */
|
||||
void (*read) (struct value *v);
|
||||
|
||||
/* Handle an assignment TOVAL = FROMVAL by writing the value of
|
||||
FROMVAL to TOVAL's location. The contents of TOVAL have not yet
|
||||
been updated. If a problem arises in doing so, this function
|
||||
should call 'error'. */
|
||||
should call 'error'. If it is NULL such TOVAL assignment is an error as
|
||||
TOVAL is not considered as an lvalue. */
|
||||
void (*write) (struct value *toval, struct value *fromval);
|
||||
|
||||
/* Check the validity of some bits in VALUE. This should return 1
|
||||
|
|
Loading…
Reference in a new issue