aboutsummaryrefslogtreecommitdiff
path: root/gdb/proc-why.c
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2019-11-29 00:14:35 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2019-12-01 22:31:32 +0000
commit216a7e6b9e5d2b279276f3bd8c11145a7d9b59ac (patch)
tree9138bacbc1bf655ff3d28324a4831f89ab505acc /gdb/proc-why.c
parent11a8b1641e310f3d47173125b62ee2e2147e74f3 (diff)
downloadgdb-216a7e6b9e5d2b279276f3bd8c11145a7d9b59ac.zip
gdb-216a7e6b9e5d2b279276f3bd8c11145a7d9b59ac.tar.gz
gdb-216a7e6b9e5d2b279276f3bd8c11145a7d9b59ac.tar.bz2
gdb: Dynamic string length support
Add support for strings with dynamic length using the DWARF attribute DW_AT_string_length. Currently gFortran generates DWARF for some strings that make use of DW_AT_string_length like this: <1><2cc>: Abbrev Number: 20 (DW_TAG_string_type) <2cd> DW_AT_string_length: 5 byte block: 99 bd 1 0 0 (DW_OP_call4: <0x1bd>) <2d3> DW_AT_byte_size : 4 <2d4> DW_AT_sibling : <0x2e2> In this type entry the DW_AT_string_length attribute references a second DW_TAG_formal_parameter that contains the string length. The DW_AT_byte_size indicates that the length is a 4-byte value. This commit extends GDB's DWARF parsing for strings so that we can create dynamic types as well as static types, based on the attribute the DWARF contains. I then extend the dynamic type resolution code in gdbtypes.c to add support for resolving dynamic strings. gdb/ChangeLog: * dwarf2read.c (read_tag_string_type): Read the fields required to make a dynamic string, and possibly create a dynamic range for the string. (attr_to_dynamic_prop): Setup is_reference based on the type of attribute being processed. * gdbtypes.c (is_dynamic_type_internal): Handle TYPE_CODE_STRING. (resolve_dynamic_array): Rename to... (resolve_dynamic_array_or_string): ...this, update header comment, and accept TYPE_CODE_STRING. (resolve_dynamic_type_internal): Handle TYPE_CODE_STRING. gdb/testsuite/ChangeLog: * gdb.fortran/array-slices.exp: Add test for dynamic strings. Change-Id: I03f2d181b26156f48f27a03c8a59f9bd4d71ac17
Diffstat (limited to 'gdb/proc-why.c')
0 files changed, 0 insertions, 0 deletions