fort_dyn_array: Support evaluation of dynamic elements inside arrays.
Resolve type of an array's element to be printed in case it is dynamic. Otherwise we don't use the correct boundaries nor the right location. Before: ptype fivearr(1) type = Type five Type one integer(kind=4) :: ivla(34196784:34196832,34197072:34197120,34197360:34197408) End Type one :: tone End Type five After: ptype fivearr(1) type = Type five Type one integer(kind=4) :: ivla(2,4,6) End Type one :: tone End Type five 2016-04-26 Bernhard Heckel <bernhard.heckel@intel.com> gdb/Changelog: * valarith.c (value_address): Resolve dynamic types. gdb/testsuite/Changelog: * gdb.fortran/vla-type.f90: Add test for static and dynamic arrays of dynamic types. * gdb.fortran/vla-type.exp: Add test for static and dynamic arrays of dynamic types.
This commit is contained in:
parent
9920b4348e
commit
8f07e298b1
5 changed files with 89 additions and 2 deletions
|
@ -207,6 +207,14 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
|
|||
error (_("no such vector element"));
|
||||
}
|
||||
|
||||
if (is_dynamic_type (elt_type))
|
||||
{
|
||||
CORE_ADDR address;
|
||||
|
||||
address = value_address (array) + elt_offs;
|
||||
elt_type = resolve_dynamic_type (elt_type, NULL, address);
|
||||
}
|
||||
|
||||
if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
|
||||
v = allocate_value_lazy (elt_type);
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue