[Bug fortran/59438] New: DWARF: Fortran mishandles ALLOCATABLE/ASSOCIATED in debug output
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Dec 9 20:30:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59438
Bug ID: 59438
Summary: DWARF: Fortran mishandles ALLOCATABLE/ASSOCIATED in
debug output
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
Reported by Sanimir of Intel, who is working on GDB VLA/Fortran array support.
(See various patches at gdb-patches@ or http://intel-gdb.github.io/)
(a) The DW_AT_allocated/DW_AT_associated is lacking for scalars - including
strings.
For arrays, it is handled via "struct array_descr_info", which is filled via
gfc_get_array_descr_info, via info->allocated and info->associated.
(b) Dynamic strings are wrapped within a DW_TAG_pointer_type
character(len=:), allocatable :: str
Printing 'str' yields (PTR TO -> ( character*N )) 0xdeadbeef. Unfortunately
gfortran emits a DW_TAG_pointer_type for dynamic strings, which is not the case
for allocatable arrays.
--> Drop pointer_type and add an allocatable predicate so gdb can dereference
the string if it is allowed to.
(c) Allocatable/associated bits are available after stepping over variable
declaration.
integer, allocatable :: array(:) ! attribute is missing
The above predicates will be initialized _after_ the inferior has passed the
line and thus gdb shows some random state before the line is executed.
--> Hoist the initialization of these bits (assign .False.) into the prologue,
this allows gdb to determine the correct status of the variable at any given
time.
More information about the Gcc-bugs
mailing list