Issue 050718.1: FORTRAN extensions

Author: Jim Cownie
Champion: Ron Brender
Date submitted: 2005-07-18
Date revised:
Date closed:
Type: Extension
Status: Accepted with modification
DWARF Version: 3
Problem
-------

DWARF has no way to express the "elemental", "pure" and "recursive" properties
of Fortran 95 subroutines or functions.

To allow debuggers correctly to call such subroutines/functions at least
the "elemental" property must be known to the debugger. If we're adding
one property we may as well fix all of them at one go.

Proposed Text
-------------

In section 3.3.1 ("General Subroutine and Entrypoint Information") add
(on page 44, at the end of the section)

  A subprogram entry may have the DW_AT_elemental attribute, whose value
  is a flag. If the flag is true, then the subprogram should have scalar
  formal arguments, but apply Fortran elemental conversions to allow
  it to be called with array actuals.

  A subprogram entry may have the DW_AT_pure attribute, whose value
  is a flag. If the flag is true, then the subprogram should obey the
  rules for a Fortran "pure" subprogram.

  A subprogram entry may have the DW_AT_recursive attribute, whose value
  is a flag. If the flag is true, then the subprogram is recursive, if
  the flag is false the subprogram is not recursive. If the attribute is
  not present then the recursiveness of the subprogram is determined by
  the default for the language of the compilation unit. 

  *So, in C, C++ or Java the recursive attribute would never need
  to be specified since all subprograms are recursive by default in these
  languages, whereas in Fortran the recursive attribute with flag value
  "true" should be specified for subprograms which were declared
  with the recursive keyword, since the default in Fortran is for
  subprograms not to be recursive.*

In section 2.2 (the table of attributes), the new attributes need to be
added in the appropriate places.

In the appendix "Attribute values by tag", the new attributes need to be
added to the table for DW_TAG_subprogram.

The new attributes need index entries.

The new attributes need to be added to the table on p135, and assigned
appropriate values.

==============================

Accepted with the following change:
   Replace "is recursive" with "is declared recursive" in the description of
   DW_AT_recursive.