]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
fort_dyn_array: Fortran dynamic string support users/bheckel/fortran-vla-strings
authorBernhard Heckel <bernhard.heckel@intel.com>
Tue, 12 Jul 2016 06:19:34 +0000 (08:19 +0200)
committerBernhard Heckel <bernhard.heckel@intel.com>
Wed, 7 Sep 2016 10:19:36 +0000 (12:19 +0200)
commit0ad7d8d1a3a36c6e04e3b6d37d8825f18d595723
tree8264c5240b5d9a78908266425117ebee8123b511
parent4c60f96807d8559a56412d846b96b9cccedfa8e7
fort_dyn_array: Fortran dynamic string support

This patch changes the semantic of the Dwarf string length
attribute to reflect the standard as well as enables
correct string length calculation of dynamic strings. Add
tests for varous dynamic string evaluations.

Old:
(gdb) p my_dyn_string
Cannot access memory at address 0x605fc0

New:
(gdb) p *my_dyn_string
$1 = 'foo'

gdb/Changlog:
* dwarf2read.c (read_tag_string_type): changed
semantic of DW_AT_string_length to be able to
handle Dwarf blocks as well. Support for
DW_AT_byte_length added to get correct length
if specified in combination with
DW_AT_string_length.
(attr_to_dynamic_prop): added
functionality to add Dwarf operators to baton
data attribute. Added post values to baton
as required by the string evaluation case.
(read_subrange_type): Adapt caller.
(set_die_type): Adapt caller.
(add_post_values_to_baton): New function.
     * gdbtypes.c (resolve_dynamic_type): Add
     conditions to support string types.
     (resolve_dynamic_array): Add conditions for dynamic
     strings and create a new string type.
     (is_dynamic_type): Follow pointer if a string type
     was detected, as Fortran strings are represented
     as pointers to strings internally.

gdb/testsuite/Changelog:
* vla-strings.f90: New file.
* vla-strings.exp: New file.

Change-Id: I7d7f47c7a4900a7fdb51102032455b53d60e60d7
gdb/dwarf2read.c
gdb/gdbtypes.c
gdb/testsuite/gdb.fortran/vla-strings.exp [new file with mode: 0644]
gdb/testsuite/gdb.fortran/vla-strings.f90 [new file with mode: 0644]