[PATCH 00/23] Fortran dynamic array support

Keven Boell
2014-06-04T05:54:37Z

This patch series add Fortran dynamic array support to gdb.

It allows the user to evaluate a dynamic array like an ordinary static array
e.g. print its elements instead of printing the pointer to the array.
In addition the size of a dynamic array can be retrieved with gdbs builtin
sizeof operator. Furthermore this series add support for Fortran stride support.

1| integer, allocatable :: ary(:)
2| allocate(ary(5))
3| ary(:) = 42

(gdb) print ary
$1 = (42, 42, 42, 42, 42)

(gdb) print sizeof (ary)
$2 = 20

(gdb) ptype ary
type = integer(kind=4) (5)

This series is a follow up for the following C99 variable length array
support series:
https://sourceware.org/ml/gdb-patches/2013-12/msg00625.html

Keven Boell (23):
dwarf: add dwarf3 DW_OP_push_object_address opcode
dwarf: add DW_AT_data_location support
vla: introduce allocated/associated flags
vla: make dynamic fortran arrays functional.
vla: make field selection work with vla
vla: reconstruct value to compute bounds of target type
vla: use value constructor instead of raw-buffer manipulation
vla: get dynamic array corner cases to work
vla: changed string length semantic.
vla: get Fortran dynamic strings working.
vla: add stride support to fortran arrays.
test: basic tests for dynamic array evaluations in Fortran.
test: evaluate Fortran dynamic arrays of types.
test: evaluate dynamic arrays using Fortran primitives.
test: dynamic arrays passed to subroutines.
test: correct ptype of dynamic arrays in Fortran.
test: evaluating allocation/association status
test: dynamic arrays passed to functions.
test: accessing dynamic array history values.
test: dynamic string evaluations.
test: basic MI test for the dynamic array support.
test: test sizeof for dynamic fortran arrays.
test: stride support for dynamic arrays.

gdb/c-valprint.c | 11 +-
gdb/dwarf2expr.c | 6 +
gdb/dwarf2expr.h | 4 -
gdb/dwarf2loc.c | 65 ++++-
gdb/dwarf2loc.h | 10 +
gdb/dwarf2read.c | 179 ++++++++++++-
gdb/f-typeprint.c | 62 +++--
gdb/f-valprint.c | 118 +++------
gdb/gdbtypes.c | 268 ++++++++++++++++++--
gdb/gdbtypes.h | 57 +++++
gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp | 65 +++++
gdb/testsuite/gdb.fortran/vla-datatypes.exp | 82 ++++++
gdb/testsuite/gdb.fortran/vla-datatypes.f90 | 51 ++++
gdb/testsuite/gdb.fortran/vla-func.exp | 61 +++++
gdb/testsuite/gdb.fortran/vla-func.f90 | 71 ++++++
gdb/testsuite/gdb.fortran/vla-history.exp | 62 +++++
gdb/testsuite/gdb.fortran/vla-ptype-sub.exp | 87 +++++++
gdb/testsuite/gdb.fortran/vla-ptype.exp | 96 +++++++
gdb/testsuite/gdb.fortran/vla-sizeof.exp | 46 ++++
gdb/testsuite/gdb.fortran/vla-stride.exp | 51 ++++
gdb/testsuite/gdb.fortran/vla-stride.f90 | 30 +++
gdb/testsuite/gdb.fortran/vla-strings.exp | 104 ++++++++
gdb/testsuite/gdb.fortran/vla-strings.f90 | 38 +++
gdb/testsuite/gdb.fortran/vla-sub.f90 | 82 ++++++
gdb/testsuite/gdb.fortran/vla-type.exp | 127 ++++++++++
gdb/testsuite/gdb.fortran/vla-type.f90 | 107 ++++++++
.../gdb.fortran/vla-value-sub-arbitrary.exp | 35 +++
gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp | 49 ++++
gdb/testsuite/gdb.fortran/vla-value-sub.exp | 90 +++++++
gdb/testsuite/gdb.fortran/vla-value.exp | 148 +++++++++++
gdb/testsuite/gdb.fortran/vla.f90 | 56 ++++
gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 182 +++++++++++++
gdb/testsuite/gdb.mi/vla.f90 | 42 +++
gdb/typeprint.c | 7 +
gdb/valarith.c | 23 +-
gdb/valprint.c | 40 +++
gdb/valprint.h | 4 +
gdb/value.c | 52 +++-
38 files changed, 2512 insertions(+), 156 deletions(-)
create mode 100644 gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-datatypes.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-datatypes.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-func.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-func.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-history.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-ptype.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-sizeof.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-stride.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-stride.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-strings.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-strings.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-sub.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-type.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-type.f90
create mode 100644 gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-value-sub.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla-value.exp
create mode 100644 gdb/testsuite/gdb.fortran/vla.f90
create mode 100644 gdb/testsuite/gdb.mi/mi-vla-fortran.exp
create mode 100644 gdb/testsuite/gdb.mi/vla.f90

--
1.7.9.5