Issue 120213.1: Allow DW_AT_type with DW_TAG_string_type

Author: Tobias Burnus
Champion: Kendrick Wong
Date submitted: 2012-02-13
Date revised:
Date closed:
Type: Enhancement
Status: Replaced
DWARF Version: 5
Section 5.9 String Type Entr, pg 98
The DWARF spec currently does not allow to specify the type (DW_AT_type) for strings (DW_TAG_string_type).

That's a problem for Fortran, where different string types can exists. For instance, GCC's gfortran [since 4.4] has a kind=1 (one byte) and a kind=4 (four bytes, for UCS-4) character type. The NAG compiler (nagfor 5.3) supports besides the one-byte type also UCS-2, UCS-4, and Shift-JIS.

Note: UCS-4 is an (optional) feature of the Fortran 2003 standard (ISO/IEC 1539-1:2004; see also Fortran 2008, ISO/IEC 1539-1:2010).

Note: One could argue that "byte_size" + "DW_AT_string_length" might be sufficient, but that's not optimal.

Fortran 2003 example:

              program character_kind
                use iso_fortran_env
                implicit none
                integer, parameter :: ascii = selected_char_kind ("ascii")
                integer, parameter :: ucs4  = selected_char_kind ('ISO_10646')
                character(kind=ascii, len=26) :: alphabet
                character(kind=ucs4,  len=30) :: hello_world
                alphabet = ascii_"abcdefghijklmnopqrstuvwxyz"
                hello_world = ucs4_'Hello World and Ni Hao -- ' &
                              // char (int (z'4F60'), ucs4)     &
                              // char (int (z'597D'), ucs4)
                write (*,*) alphabet
                open (output_unit, encoding='UTF-8')
                write (*,*) trim (hello_world)
              end program character_kind


Replaced by 121221.1.