forked from Imagelibrary/binutils-gdb
* ada-lang.c (ada_value_slice_ptr): Rename to...
(ada_value_slice_from_ptr): ... this. Return a lazy value instead of a reference. Update comment. (ada_value_struct_elt): Ditto if arg is a pointer or a reference. Update comment as well. (ada_evaluate_subexp): Update use of ada_value_slice_ptr.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2008-12-15 Jerome Guitton <guitton@adacore.com>
|
||||||
|
|
||||||
|
* ada-lang.c (ada_value_slice_ptr): Rename to...
|
||||||
|
(ada_value_slice_from_ptr): ... this. Return a lazy value instead
|
||||||
|
of a reference. Update comment.
|
||||||
|
(ada_value_struct_elt): Ditto if arg is a pointer or a reference.
|
||||||
|
Update comment as well.
|
||||||
|
(ada_evaluate_subexp): Update use of ada_value_slice_ptr.
|
||||||
|
|
||||||
2008-12-12 Kevin Buettner <kevinb@redhat.com>
|
2008-12-12 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
* gnu-v3-abi.c (vtable_ptrdiff_type): New function.
|
* gnu-v3-abi.c (vtable_ptrdiff_type): New function.
|
||||||
|
|||||||
@@ -2346,11 +2346,11 @@ ada_value_ptr_subscript (struct value *arr, struct type *type, int arity,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
|
/* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
|
||||||
actual type of ARRAY_PTR is ignored), returns a reference to
|
actual type of ARRAY_PTR is ignored), returns the Ada slice of HIGH-LOW+1
|
||||||
the Ada slice of HIGH-LOW+1 elements starting at index LOW. The lower
|
elements starting at index LOW. The lower bound of this array is LOW, as
|
||||||
bound of this array is LOW, as per Ada rules. */
|
per Ada rules. */
|
||||||
static struct value *
|
static struct value *
|
||||||
ada_value_slice_ptr (struct value *array_ptr, struct type *type,
|
ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
|
||||||
int low, int high)
|
int low, int high)
|
||||||
{
|
{
|
||||||
CORE_ADDR base = value_as_address (array_ptr)
|
CORE_ADDR base = value_as_address (array_ptr)
|
||||||
@@ -2361,7 +2361,7 @@ ada_value_slice_ptr (struct value *array_ptr, struct type *type,
|
|||||||
low, high);
|
low, high);
|
||||||
struct type *slice_type =
|
struct type *slice_type =
|
||||||
create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
|
create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
|
||||||
return value_from_pointer (lookup_reference_type (slice_type), base);
|
return value_at_lazy (slice_type, base);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -6178,9 +6178,7 @@ ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
|
|||||||
/* Given ARG, a value of type (pointer or reference to a)*
|
/* Given ARG, a value of type (pointer or reference to a)*
|
||||||
structure/union, extract the component named NAME from the ultimate
|
structure/union, extract the component named NAME from the ultimate
|
||||||
target structure/union and return it as a value with its
|
target structure/union and return it as a value with its
|
||||||
appropriate type. If ARG is a pointer or reference and the field
|
appropriate type.
|
||||||
is not packed, returns a reference to the field, otherwise the
|
|
||||||
value of the field (an lvalue if ARG is an lvalue).
|
|
||||||
|
|
||||||
The routine searches for NAME among all members of the structure itself
|
The routine searches for NAME among all members of the structure itself
|
||||||
and (recursively) among all members of any wrapper members
|
and (recursively) among all members of any wrapper members
|
||||||
@@ -6257,8 +6255,7 @@ ada_value_struct_elt (struct value *arg, char *name, int no_err)
|
|||||||
field_type);
|
field_type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
v = value_from_pointer (lookup_reference_type (field_type),
|
v = value_at_lazy (field_type, address + byte_offset);
|
||||||
address + byte_offset);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8808,7 +8805,7 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
|
|||||||
struct type *arr_type0 =
|
struct type *arr_type0 =
|
||||||
to_fixed_array_type (TYPE_TARGET_TYPE (value_type (array)),
|
to_fixed_array_type (TYPE_TARGET_TYPE (value_type (array)),
|
||||||
NULL, 1);
|
NULL, 1);
|
||||||
return ada_value_slice_ptr (array, arr_type0,
|
return ada_value_slice_from_ptr (array, arr_type0,
|
||||||
longest_to_int (low_bound),
|
longest_to_int (low_bound),
|
||||||
longest_to_int (high_bound));
|
longest_to_int (high_bound));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user