fort_dyn_array: Enable dynamic member types inside a structure.
authorBernhard Heckel <bernhard.heckel@intel.com>
Tue, 26 Apr 2016 14:28:43 +0000 (16:28 +0200)
committerBernhard Heckel <bernhard.heckel@intel.com>
Tue, 26 Apr 2016 14:28:43 +0000 (16:28 +0200)
commit9920b4348edbdd83e3f91c85d7174cb92bba204d
treeb4bd220833e052b26207674262723ae1ab88eabd
parentd5486c43728b4fa17c111a301c30a1e072eaec6a
fort_dyn_array: Enable dynamic member types inside a structure.

Fortran supports dynamic types for which bounds, size and location
can vary during their lifetime. As a result of the dynamic
behaviour, they have to be resolved at every query.
This patch will resolve the type of a structure field when it
is dynamic.

2016-04-26  Bernhard Heckel  <bernhard.heckel@intel.com>
2016-04-26  Keven Boell  <keven.boell@intel.com>

Before:
(gdb) print threev%ivla(1)
Cannot access memory at address 0x3
(gdb) print threev%ivla(5)
no such vector element

After:
(gdb) print threev%ivla(1)
$9 = 1
(gdb) print threev%ivla(5)
$10 = 42

gdb/Changelog:

* NEWS: Add new supported features for fortran.
* gdbtypes.c (remove_dyn_prop): New.
(resolve_dynamic_struct): Keep type length for fortran structs.
* gdbtypes.h: Forward declaration of new function.
* value.c (value_address): Return dynamic resolved location of a value.
(set_value_component_location): Adjust the value address
for single value prints.
(value_primitive_field): Support value types with a dynamic location.
(set_internalvar): Remove dynamic location property of
internal variables.

gdb/testsuite/Changelog:

* gdb.fortran/vla-type.f90: New file.
* gdb.fortran/vla-type.exp: New file.
gdb/ChangeLog
gdb/NEWS
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.fortran/vla-type.exp [new file with mode: 0755]
gdb/testsuite/gdb.fortran/vla-type.f90 [new file with mode: 0755]
gdb/value.c