[Dwarf-Discuss] DWARF representation for Fortran descriptors
Kendrick Wong
kendrick@ca.ibm.com
Fri Oct 29 18:07:55 GMT 2010
The descriptor for obj1 and obj2 in this example
INTEGER, POINTER :: obj1
INTEGER, ALLOCATABLE :: obj2
is similar to the array example in D.2.1. In that the we have obj1
containing the address of the descriptor, and the descriptor would carry
the address of the raw data.
According to D.2.1, the DWARF would look like this:
$1a: DW_TAG_base_type
DW_AT_name (INTEGER)
DW_AT_encoding (DW_ATE_signed)
DW_AT_data_location (...) // address of raw data
DW_AT_associated (...) // is associated?
DW_AT_allocated (...) // is allocated?
$2a: DW_TAG_variable
DW_AT_name (obj1)
DW_AT_type ($1a)
DW_AT_location (...) // address of descriptor
$3a: DW_TAG_variable
DW_AT_name (obj2)
DW_AT_type ($1a)
DW_AT_location (...) // address of descriptor
My question is: Since the type is shared by both obj1 and obj2, how would
consumer know that obj1 is a pointer and obj2 is an allocatable?
Kendrick Wong
From: John DelSignore <John.DelSignore@roguewave.com>
To: Ron Brender <ron.brender at charter.net>
Cc: Kendrick Wong/Toronto/IBM at IBMCA,
"dwarf-discuss at lists.dwarfstd.org" <dwarf-discuss at lists.dwarfstd.org>
Date: 10/28/2010 05:37 PM
Subject: Re: [Dwarf-Discuss] DWARF representation for Fortran
descriptors
Also, from the debugger implementor perspective, it would help to know how
the compiler represents the objects before giving advice on what the DWARF
should look like.
Usually, descriptors are used for array objects, but unless Kendrick's
example is incomplete, it appears that the objects are pointer/allocatable
scalars. (IIRC, that might be a Fortran 2003 extension.)
If the compiler uses a trimmed-down array descriptor object to represent
pointer/allocatable scalars, then the way it should be represented in
DWARF is probably different than if the compiler uses a C/C++ pointer
object (like an "int *").
Cheers, John D.
Ron Brender wrote:
> Kendrick,
>
> Take a look at Appendix D.2.1. Hopefully that will answer your question.
> If not, try some more specific questions...
>
> Ron
>
> -------------------------------------------
> On 10/28/2010 5:09 PM, Kendrick Wong wrote:
>> How are Fortran descriptors represented in DWARF?
>>
>> Take this program, for example:
>>
>> INTEGER, POINTER :: obj1
>> INTEGER, ALLOCATABLE :: obj2
>>
>> What is the correct way to represent obj1, obj2 and their types?
>>
>> $1a: DW_TAG_base_type
>> DW_AT_name (INTEGER)
>> DW_AT_encoding (DW_ATE_signed)
>> DW_AT_associated (...)
>> DW_AT_allocated (...)
>>
>> $2a: DW_TAG_variable
>> DW_AT_name (obj1)
>> DW_AT_type ($1a)
>> DW_AT_location (...)
>>
>> $3a: DW_TAG_variable
>> DW_AT_name (obj2)
>> DW_AT_type ($1a)
>> DW_AT_location (...)
>>
>> or
>>
>> $1b: DW_TAG_base_type
>> DW_AT_name (INTEGER)
>> DW_AT_encoding (DW_ATE_signed)
>>
>> $2b: DW_TAG_pointer_type
>> DW_AT_associated (...)
>> DW_AT_type ($1b)
>>
>> $3b: DW_TAG_pointer_type
>> DW_AT_allocated (...)
>> DW_AT_type ($1b)
>>
>> $4b: DW_TAG_variable
>> DW_AT_name (obj1)
>> DW_AT_type ($2b)
>> DW_AT_location (...)
>>
>> $5b: DW_TAG_variable
>> DW_AT_name (obj2)
>> DW_AT_type ($3b)
>> DW_AT_location (...)
>>
>> Or another way?
>>
>> Kendrick Wong
>>
>>
>>
>> _______________________________________________
>> Dwarf-Discuss mailing list
>> Dwarf-Discuss at lists.dwarfstd.org
>> http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org
>
>
> _______________________________________________
> Dwarf-Discuss mailing list
> Dwarf-Discuss at lists.dwarfstd.org
> http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dwarfstd.org/private.cgi/dwarf-discuss-dwarfstd.org/attachments/20101029/0a8dff14/attachment.htm>
More information about the Dwarf-discuss
mailing list