cannot be considered definitive.
In the following table,
-DECL means the declaration coordinates DW\-\_AT\-\_decl\-\_column,
-DW\-\_AT\-\_decl\-\_file, and DW\-\_AT\-\_decl\-\_line.
+DECL means the declaration coordinates \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column},
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, and \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}.
\label{tab:attributesbytag}
\endlastfoot
\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}
& DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_bit\-\_stride \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_ordering \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
&DECL \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_binary\-\_scale \\
-&DW\-\_AT\-\_bit\-\_offset \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_bit\-\_offset \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_decimal\-\_scale \\
-&DW\-\_AT\-\_decimal\-\_sign \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_digit\-\_count \\
-&DW\-\_AT\-\_encoding \\
-&DW\-\_AT\-\_endianity \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_picture\-\_string \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_small \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale} \\
+&\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} \\
+&\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count} \\
+&\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \\
+&\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} \\
\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_signature \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
&DECL \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_linkage\-\_name \\
-&DW\-\_AT\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \\
+&\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}
&DECL \\
-&DW\-\_AT\-\_common\-\_reference \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
-&DW\-\_AT\-\_base\-\_types \\
-&DW\-\_AT\-\_comp\-\_dir \\
-&DW\-\_AT\-\_identifier\-\_case \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_language \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_macro\-\_info \\
-&DW\-\_AT\-\_main\-\_subprogram \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_producer \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_stmt\-\_list \\
-&DW\-\_AT\-\_use\-\_UTF8 \\
+&\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types} \\
+&\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} \\
+&\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} \\
+&\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} \\
+&\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} \\
\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}
&DECL \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_const\-\_value \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_endianity \\
-&DW\-\_AT\-\_external \\
-&DW\-\_AT\-\_linkage\-\_name \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} \\
+&\livelink{chap:DWATexternal}{DW\-\_AT\-\_external} \\
+&\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}
-&DW\-\_AT\-\_location \\
+&\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} \\
\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}
&DECL \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_frame\-\_base \\
-&DW\-\_AT\-\_linkage\-\_name \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_return\-\_addr \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_static\-\_link \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} \\
+&\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}
DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_bit\-\_stride \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_byte\-\_stride \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_enum\-\_class \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_signature \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
&DECL \\
-&DW\-\_AT\-\_const\-\_value \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_artificial \\
-&DW\-\_AT\-\_const\-\_value \\
-&DW\-\_AT\-\_default\-\_value \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_endianity \\
-&DW\-\_AT\-\_is\-\_optional \\
-&DW\-\_AT\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_variable\-\_parameter \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} \\
+&\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} \\
+&\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} \\
+&\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional} \\
+&\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter} \\
\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_friend \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_import \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATimport}{DW\-\_AT\-\_import} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}
&DECL \\
-&DW\-\_AT\-\_import \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
+&\livelink{chap:DWATimport}{DW\-\_AT\-\_import} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
-&DW\-\_AT\-\_import \\
+&\livelink{chap:DWATimport}{DW\-\_AT\-\_import} \\
\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_data\-\_member\-\_location \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_virtuality \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} \\
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_call\-\_column \\
-&DW\-\_AT\-\_call\-\_file \\
-&DW\-\_AT\-\_call\-\_line \\
-&DW\-\_AT\-\_const\-\_expr \\
-&DW\-\_AT\-\_entry\-\_pc \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_return\-\_addr \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_trampoline \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column} \\
+&\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file} \\
+&\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line} \\
+&\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \\
+&\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline} \\
\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_bit\-\_offset \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_bit\-\_offset \\
-&DW\-\_AT\-\_data\-\_member\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_mutable \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \\
+&\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_entry\-\_pc \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_priority \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}
&DECL \\
-&DW\-\_AT\-\_namelist\-\_item \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
&DECL \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_extension \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATextension}{DW\-\_AT\-\_extension} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}
-&DW\-\_AT\-\_base\-\_types \\
-&DW\-\_AT\-\_comp\-\_dir \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_identifier\-\_case \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_language \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_macro\-\_info \\
-&DW\-\_AT\-\_main\-\_subprogram \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_producer \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_stmt\-\_list \\
-&DW\-\_AT\-\_use\-\_UTF8 \\
+&\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types} \\
+&\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} \\
+&\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} \\
+&\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} \\
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_containing\-\_type \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_use\-\_location \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type}
&DECL \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_count \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATcount}{DW\-\_AT\-\_count} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_string\-\_length \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_signature \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_artificial \\
-&DW\-\_AT\-\_calling\-\_convention \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_elemental \\
-&DW\-\_AT\-\_entry\-\_pc \\
-&DW\-\_AT\-\_explicit \\
-&DW\-\_AT\-\_external \\
-&DW\-\_AT\-\_frame\-\_base \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_inline \\
-&DW\-\_AT\-\_linkage\-\_name \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_main\-\_subprogram \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_object\-\_pointer \\
-&DW\-\_AT\-\_prototyped \\
-&DW\-\_AT\-\_pure \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_recursive \\
-&DW\-\_AT\-\_return\-\_addr \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_static\-\_link \\
-&DW\-\_AT\-\_trampoline \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
-&DW\-\_AT\-\_virtuality \\
-&DW\-\_AT\-\_vtable\-\_elem\-\_location \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} \\
+&\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental} \\
+&\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} \\
+&\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit} \\
+&\livelink{chap:DWATexternal}{DW\-\_AT\-\_external} \\
+&\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} \\
+&\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer} \\
+&\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} \\
+&\livelink{chap:DWATpure}{DW\-\_AT\-\_pure} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive} \\
+&\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} \\
+&\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
+&\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} \\
+&\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location} \\
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_bit\-\_stride \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_byte\-\_stride \\
-&DW\-\_AT\-\_count \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_lower\-\_bound \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_threads\-\_scaled \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_upper\-\_bound \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} \\
+&\livelink{chap:DWATcount}{DW\-\_AT\-\_count} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_prototyped \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_signature \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
&DECL \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}
&DECL \\
-&DW\-\_AT\-\_const\-\_value \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}
&DECL \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
-&DW\-\_AT\-\_language \\
+&\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} \\
\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_bit\-\_size \\
-&DW\-\_AT\-\_byte\-\_size \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_signature \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} \\
+&\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_artificial \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}
&DECL \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_name \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_const\-\_expr \\
-&DW\-\_AT\-\_const\-\_value \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_description \\
-&DW\-\_AT\-\_endianity \\
-&DW\-\_AT\-\_external \\
-&DW\-\_AT\-\_linkage\-\_name \\
-&DW\-\_AT\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_specification \\
-&DW\-\_AT\-\_start\-\_scope \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \\
+&\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} \\
+&\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} \\
+&\livelink{chap:DWATexternal}{DW\-\_AT\-\_external} \\
+&\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \\
+&\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} \\
+&\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}
&DECL \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_discr\-\_list \\
-&DW\-\_AT\-\_discr\-\_value \\
-&DW\-\_AT\-\_sibling \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} \\
+&\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}
&DECL \\
-&DW\-\_AT\-\_abstract\-\_origin \\
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_discr \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}
-&DW\-\_AT\-\_allocated \\
-&DW\-\_AT\-\_associated \\
-&DW\-\_AT\-\_data\-\_location \\
-&DW\-\_AT\-\_name \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
+&\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} \\
+&\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} \\
+&\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} \\
+&\livelink{chap:DWATname}{DW\-\_AT\-\_name} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}
-&DW\-\_AT\-\_accessibility \\
-&DW\-\_AT\-\_address\-\_class \\
-&DW\-\_AT\-\_declaration \\
-&DW\-\_AT\-\_high\-\_pc \\
-&DW\-\_AT\-\_location \\
-&DW\-\_AT\-\_low\-\_pc \\
-&DW\-\_AT\-\_ranges \\
-&DW\-\_AT\-\_segment \\
-&DW\-\_AT\-\_sibling \\
-&DW\-\_AT\-\_type \\
-&DW\-\_AT\-\_visibility \\
+&\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \\
+&\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} \\
+&\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} \\
+&\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \\
+&\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} \\
+&\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \\
+&\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} \\
+&\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} \\
+&\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
+&\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \\
+&\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} \\
\end{longtable}
\textbf{Use of \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}}
A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry has an
-DW\-\_AT\-\_import attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging information entry.
A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry refers
== section .debug\_info
DW.cpp.wa.h.123456.1: ! linker global symbol
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
- DW\-\_AT\-\_language(DW\-\_LANG\-\_C\-\_plus\-\_plus)
+ \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}(DW\-\_LANG\-\_C\-\_plus\-\_plus)
... ! other unit attributes
DW.cpp.wa.h.123456.2: ! linker global symbol
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("int")
DW.cpp.wa.h.123456.3: ! linker global symbol
\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_NAME("A")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("A")
DW.cpp.wa.h.123456.4: ! linker global symbol
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("i")
- DW\-\_AT\-\_type(DW\-\_FORM\-\_refn to DW.cpp.wa.h.123456.2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("i")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(DW\-\_FORM\-\_refn to DW.cpp.wa.h.123456.2)
! (This is a local reference, so the more
! compact form DW\-\_FORM\-\_refn can be used)
\end{alltt}
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
.L1: ! local (non-linker) symbol
\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
- DW\-\_AT\-\_type(reference to DW.cpp.wa.h.123456.3)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.cpp.wa.h.123456.3)
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("f")
- DW\-\_AT\-\_type(reference to DW.cpp.wa.h.123456.2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("f")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.cpp.wa.h.123456.2)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("a")
- DW\-\_AT\-\_type(reference to .L1)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("a")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to .L1)
...
\end{alltt}
DW.myf90.CommonStuff.fh.654321.1: ! linker global symbol
\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}
! ...compilation unit attributes, including...
- DW\-\_AT\-\_language(DW\-\_LANG\-\_Fortran90)
- DW\-\_AT\-\_identifier\-\_case(DW\-\_ID\-\_case\-\_insensitive)
+ \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}(DW\-\_LANG\-\_Fortran90)
+ \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}(DW\-\_ID\-\_case\-\_insensitive)
DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol
3\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! unnamed
- DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
! base type INTEGER)
- DW\-\_AT\-\_lower\-\_bound(constant 1)
- DW\-\_AT\-\_upper\-\_bound(constant 100)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(constant 1)
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(constant 100)
DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
- DW\-\_AT\-\_name("Common1")
- DW\-\_AT\-\_location(Address of common block Common1)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Common1")
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(Address of common block Common1)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("C")
- DW\-\_AT\-\_type(reference to 3\$)
- DW\-\_AT\-\_location(address of C)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("C")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(address of C)
DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol
\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}
- DW\-\_AT\-\_name("SEVEN")
- DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("SEVEN")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- DW\-\_AT\-\_const\-\_value(constant 7)
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(constant 7)
\end{alltt}
Section \refersec{app:duplicateeliminationexample2primaryunit}
== section .debug\_info
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("Foo")
- DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Foo")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
- DW\-\_AT\-\_import(reference to
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to
DW.myf90.CommonStuff.fh.654321.1)
\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! For Common1
- DW\-\_AT\-\_common\-\_reference(reference to
+ \livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}(reference to
DW.myf90.CommonStuff.fh.654321.3)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable} ! For function result
- DW\-\_AT\-\_name("Foo")
- DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Foo")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
\end{alltt}
\begin{alltt}
== section .debug\_info
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
- DW\-\_AT\-\_name(F90\$main)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}(F90\$main)
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("INTEGER")
- DW\-\_AT\-\_encoding(DW\-\_ATE\-\_signed)
- DW\-\_AT\-\_byte\-\_size(...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INTEGER")
+ \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}(DW\-\_ATE\-\_signed)
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(...)
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
...
... ! other base types
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("F90\$main")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F90\$main")
\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
- DW\-\_AT\-\_import(reference to
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to
DW.myf90.CommonStuff.fh.654321.1)
\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! for Common1
- DW\-\_AT\-\_common\-\_reference(reference to
+ \livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}(reference to
DW.myf90.CommonStuff.fh.654321.3)
...
\end{alltt}
The C++ example in this Section might appear to be equally
valid as a C example. However, it is prudent to include
a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} in the primary unit (see Figure 84)
-with an DW\-\_AT\-\_import attribute that refers to the proper unit
+with an \livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute that refers to the proper unit
in the section group.
\textit{The C rules for consistency of global (file scope) symbols
% does not result in adding : into the attribute name.
\begin{alltt}
\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
- DW\-\_AT\-\_language: DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
+ \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} : DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name : "N"
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
L1:
\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name : "C"
- DW\-\_AT\-\_byte\-\_size : 8
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 5
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "C"
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 8
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 5
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "x"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 6
- DW\-\_AT\-\_type : reference to L2
- DW\-\_AT\-\_data\-\_member\-\_location : 0
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "x"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 6
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 0
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "y"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 7
- DW\-\_AT\-\_type : reference to L2
- DW\-\_AT\-\_data\-\_member\-\_location : 4
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "y"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 7
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 4
L2:
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_byte\-\_size : 4
- DW\-\_AT\-\_encoding : DW\-\_ATE\-\_signed
- DW\-\_AT\-\_name : "int"
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 4
+ \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} : DW\-\_ATE\-\_signed
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "int"
\end{alltt}
In computing a signature for the type N::C, flatten the type
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
-// Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "C"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "C"
0x41 0x03 0x08 0x43 0x00
-// Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 8
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "x"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' DW\-\_AT\-\_type (type \#2)
+ // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "int"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' DW\-\_AT\-\_encoding DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
+ // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
// Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
// Step 7: Second child ("y")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "y"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "y"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
+ // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
// Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
0x00
\begin{alltt}
\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
- DW\-\_AT\-\_language: DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
+ \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} : DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name : "N"
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
L1:
\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
- DW\-\_AT\-\_name : "A"
- DW\-\_AT\-\_byte\-\_size : 20
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 10
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "A"
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 20
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 10
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "v\_"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 15
- DW\-\_AT\-\_type : reference to L2
- DW\-\_AT\-\_data\-\_member\-\_location : 0
- DW\-\_AT\-\_accessibility : DW\-\_ACCESS\-\_private
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "v\_"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 15
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 0
+ \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : DW\-\_ACCESS\-\_private
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "next"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 16
- DW\-\_AT\-\_type : reference to L3
- DW\-\_AT\-\_data\-\_member\-\_location : 4
- DW\-\_AT\-\_accessibility : DW\-\_ACCESS\-\_private
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "next"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 16
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 4
+ \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : DW\-\_ACCESS\-\_private
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "bp"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 17
- DW\-\_AT\-\_type : reference to L4
- DW\-\_AT\-\_data\-\_member\-\_location : 8
- DW\-\_AT\-\_accessibility : DW\-\_ACCESS\-\_private
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "bp"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 17
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L4
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 8
+ \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : DW\-\_ACCESS\-\_private
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name : "c"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 18
- DW\-\_AT\-\_type : 0xd28081e8 dcf5070a (signature for struct C)
- DW\-\_AT\-\_data\-\_member\-\_location : 12
- DW\-\_AT\-\_accessibility : DW\-\_ACCESS\-\_private
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "c"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 18
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : 0xd28081e8 dcf5070a (signature for struct C)
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 12
+ \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : DW\-\_ACCESS\-\_private
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_external : 1
- DW\-\_AT\-\_name : "A"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 12
- DW\-\_AT\-\_declaration : 1
+ \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} : 1
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "A"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 12
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_type : reference to L3
- DW\-\_AT\-\_artificial : 1
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
+ \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} : 1
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_type : reference to L2
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_external : 1
- DW\-\_AT\-\_name : "v"
- DW\-\_AT\-\_decl\-\_file : 1
- DW\-\_AT\-\_decl\-\_line : 13
- DW\-\_AT\-\_type : reference to L2
- DW\-\_AT\-\_declaration : 1
+ \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} : 1
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "v"
+ \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
+ \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 13
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_type : reference to L3
- DW\-\_AT\-\_artificial : 1
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
+ \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} : 1
L2:
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_byte\-\_size : 4
- DW\-\_AT\-\_encoding : DW\-\_ATE\-\_signed
- DW\-\_AT\-\_name : "int"
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 4
+ \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} : DW\-\_ATE\-\_signed
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "int"
L3:
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
- DW\-\_AT\-\_type : reference to L1
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L1
L4:
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
- DW\-\_AT\-\_type : reference to L5
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L5
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name : "N"
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
L5:
\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name : "B"
- DW\-\_AT\-\_declaration : 1
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "B"
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
\end{alltt}
In this example, the structure types N::A and N::C have each
\subsubsection{Type signature example 2: flattenedbytestream}
\label{app:typesignatureexample2flattenedbytestream}
-
+% DWARF4 had a DW_AT_namespace below,
+% but this error is fixed here to be DW_TAG_namespace.
\begin{alltt}
// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
0x44 0x02
-// Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "A"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "A"
0x41 0x03 0x08 0x41 0x00
-// Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 20
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 20
0x41 0x0b 0x0d 0x14
// Step 7: First child ("v\_")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "v\_"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "v\_"
0x41 0x03 0x08 0x76 0x5f 0x00
- // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' DW\-\_AT\-\_type (type \#2)
+ // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "int"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' DW\-\_AT\-\_encoding DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
+ // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
// Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
// Step 7: Second child ("next")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "next"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "next"
0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
- // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'T' DW\-\_AT\-\_type (type \#3)
+ // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#3)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x44 0x0f
- // Step 5: 'N' DW\-\_AT\-\_type
+ // Step 5: 'N' \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
0x4e 0x49
- // Step 5: 'C' DW\-\_AT\-\_namespace "N" 'E'
+ // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N" 'E'
0x43 0x39 0x4e 0x00 0x45
// Step 5: "A"
0x41 0x00
// Step 7: Third child ("bp")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "bp"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "bp"
0x41 0x03 0x08 0x62 0x70 0x00
- // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 8
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 8
0x41 0x38 0x0d 0x08
- // Step 6: 'T' DW\-\_AT\-\_type (type \#4)
+ // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#4)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x44 0x0f
- // Step 5: 'N' DW\-\_AT\-\_type
+ // Step 5: 'N' \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
0x4e 0x49
- // Step 5: 'C' DW\-\_AT\-\_namespace "N" 'E'
+ // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N" 'E'
0x43 0x39 0x4e 0x00 0x45
// Step 5: "B"
0x42 0x00
// Step 7: Fourth child ("c")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "c"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "c"
0x41 0x03 0x08 0x63 0x00
- // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 12
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 12
0x41 0x38 0x0d 0x0c
- // Step 6: 'T' DW\-\_AT\-\_type (type \#5)
+ // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#5)
0x54 0x49
// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "C"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "C"
0x41 0x03 0x08 0x43 0x00
- // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 8
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "x"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
+ // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
// Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "x"
0x00
// Step 7: Second child ("y")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "y"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "y"
0x41 0x03 0x08 0x79 0x00
- // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
+ // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
// Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
0x00
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
...
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name : "a"
- DW\-\_AT\-\_type : (signature) 0xd6d160f5 5589f6e9
- DW\-\_AT\-\_location : ...
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "a"
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : (signature) 0xd6d160f5 5589f6e9
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} : ...
...
\end{alltt}
The debugging information entry for a program variable,
formal parameter or constant may have the following attributes:
\begin{enumerate}[1.]
-\item A DW\-\_AT\-\_name attribute, whose value is a null-terminated
+\item A \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a null-terminated
string, containing the data object name as it appears in the
source program. If a variable entry describes an anonymous
union, the name attribute is omitted or consists of a single
zero byte.
-\item A DW\-\_AT\-\_external attribute, which is a flag, if the name
+\item A \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} attribute, which is a flag, if the name
of a variable is visible outside of its enclosing compilation
unit. The definitions of C++ static data members of structures
or classes are represented by variable entries flagged as
external. Both file static and local variables in C and C++
are represented by non-external variable entries.
-\item A DW\-\_AT\-\_declaration attribute, which is a flag that
+\item A \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute, which is a flag that
indicates whether this entry represents a non-defining
declaration of an object.
-\item A DW\-\_AT\-\_location attribute, whose value describes the
+\item A \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value describes the
location of a variable or parameter at run-time. In a variable
entry representing the definition of a variable (that is,
-with no DW\-\_AT\-\_declaration attribute) if no location attribute
+with no \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute) if no location attribute
is present, or if the location attribute is present but has
an empty location description (as described in Section 2.6),
the variable is assumed to exist in the source code but not
specified modifies the location specified by the defining declaration and only applies for the
scope of the variable entry; if no location is specified, then the location specified in the
defining declaration applies.
-The location of a variable may be further specified with a DW\-\_AT\-\_segment attribute, if
+The location of a variable may be further specified with a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, if
appropriate.
-\item A DW\-\_AT\-\_type attribute describing the type of the variable,
+\item A \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing the type of the variable,
constant or formal parameter.
\item If the variable entry represents the defining declaration
for a C++ static data member of a structure, class or union,
-the entry has a DW\-\_AT\-\_specification attribute, whose value is a
+the entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute, whose value is a
reference to the debugging information entry representing the
declaration of this data member. The referenced entry has the
tag \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} and will be a child of some class, structure
or union type entry. If the variable entry represents a
-non-defining declaration, DW\-\_AT\-\_specification may be used
+non-defining declaration, \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} may be used
to reference the defining declaration of the variable. If
-no DW\-\_AT\-\_specification attribute is present, the defining
+no \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute is present, the defining
declaration may be found as a global definition either in the
current compilation unit or in another compilation unit with
-the DW\-\_AT\-\_external attribute. Variable entries containing
-the DW\-\_AT\-\_specification attribute do not need to duplicate
+the \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} attribute. Variable entries containing
+the \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need to duplicate
information provided by the declaration entry referenced by
the specification attribute. In particular, such variable
entries do not need to contain attributes for the name or
type of the data member whose definition they represent.
-\item A DW\-\_AT\-\_variable\-\_parameter attribute, which is a flag,
+\item A \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter} attribute, which is a flag,
if a formal parameter entry represents a parameter whose
value in the calling function may be modified by the callee..
The absence of this attribute implies that the parameter’s
value in the calling function cannot be modified by the callee.
-\item A DW\-\_AT\-\_is\-\_optional attribute, which is a flag, if a
+\item A \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional} attribute, which is a flag, if a
parameter entry represents an optional parameter.
-\item A DW\-\_AT\-\_default\-\_value attribute for a formal parameter
+\item A \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value} attribute for a formal parameter
entry. The value of this attribute is a reference to the
debugging information entry for a variable or subroutine,
or the value may be a constant. If the attribute form is of
\textit{For a constant form there is no way to
express the absence of a default value.}
-\item A DW\-\_AT\-\_const\-\_value attribute for an entry describing a
+\item A \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute for an entry describing a
variable or formal parameter whose value is constant and not
represented by an object in the address space of the program,
or an entry describing a named constant. (Note that such
formal parameter of an inlined subprogram that corresponds
to a constant actual parameter of a call that is inlined.
-\item A DW\-\_AT\-\_start\-\_scope attribute if the scope of an
+\item A \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute if the scope of an
object is smaller than (that is, is a subset of the addresses
of) the scope most closely enclosing the object. There are
two cases:
an object may not require its own range list even when the
containing scope is non\dash contiguous.}
-\item A DW\-\_AT\-\_endianity attribute, whose value is a constant
+\item A \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute, whose value is a constant
that specifies the endianity of the object. The value of
this attribute specifies an ABI\dash defined byte ordering for
the value of the object. If omitted, the default endianity
Name&Meaning\\ \hline
DW\-\_END\-\_default & Default endian encoding
(equivalent to the absence of a
- DW\-\_AT\-\_endianity attribute) \\
+ \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute) \\
DW\-\_END\-\_big & Big\dash endian encoding \\
DW\-\_END\-\_little& Little-endian encoding \\
\end{tabular}
for different architectures.
-\item A DW\-\_AT\-\_const\-\_expr attribute, which is a flag, if a
+\item A \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} attribute, which is a flag, if a
variable entry represents a C++ object declared with the
constexpr specifier. This attributes indicates that the
variable can be evaluated as a compile\dash time constant.
\textit{In C++,
a variable declared with constexpr is implicitly const. Such a
-variable has a DW\-\_AT\-\_type attribute whose value is a reference
+variable has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose value is a reference
to a debugging information entry}
-\item A DW\-\_AT\-\_linkage\-\_name attribute for a
+\item A \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute for a
variable or constant entry as described in
Section \refersec{chap:linkagenames}.
information entry with the
tag \livetarg{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}.
The
-common block entry has a DW\-\_AT\-\_name attribute whose value
+common block entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value
is a null-terminated string containing the common block
name as it appears in the source program. It may also have a
-DW\-\_AT\-\_linkage\-\_name attribute as described in
+\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute as described in
Section \refersec{chap:linkagenames}.
It
-also has a DW\-\_AT\-\_location attribute whose value describes the
+also has a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute whose value describes the
location of the beginning of the common block. The common
block entry owns debugging information entries describing
the variables contained within the common block.
with the
tag \livetarg{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}.
If the namelist itself has a
-name, the namelist entry has a DW\-\_AT\-\_name attribute, whose
+name, the namelist entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose
value is a null-terminated string containing the namelist’s
name as it appears in the source program.
given namelist are ordered as were the list of names they
correspond to in the source program.
-Each namelist item entry contains a DW\-\_AT\-\_namelist\-\_item
+Each namelist item entry contains a \livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}
attribute whose value is a reference to the debugging
information entry representing the declaration of the item
whose name appears in the namelist.
it is an 8\dash byte unsigned offset
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-If the DW\-\_AT\-\_use\-\_UTF8 attribute is specified for the
+If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
compilation unit entry, string values are encoded using the
UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
\endfoot
\hline
\endlastfoot
-DW\-\_AT\-\_sibling&0x01&reference \\
-DW\-\_AT\-\_location&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_name&0x03&string \\
-DW\-\_AT\-\_ordering&0x09&constant \\
-DW\-\_AT\-\_byte\-\_size&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_bit\-\_offset&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_bit\-\_size&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_stmt\-\_list&0x10&\livelink{chap:lineptr}{lineptr} \\
-DW\-\_AT\-\_low\-\_pc&0x11&address \\
-DW\-\_AT\-\_high\-\_pc&0x12&address, constant \\
-DW\-\_AT\-\_language&0x13&constant \\
-DW\-\_AT\-\_discr&0x15&reference \\
-DW\-\_AT\-\_discr\-\_value&0x16&constant \\
-DW\-\_AT\-\_visibility&0x17&constant \\
-DW\-\_AT\-\_import&0x18&reference \\
-DW\-\_AT\-\_string\-\_length&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_common\-\_reference&0x1a&reference \\
-DW\-\_AT\-\_comp\-\_dir&0x1b&string \\
-DW\-\_AT\-\_const\-\_value&0x1c&block, constant, string \\
-DW\-\_AT\-\_containing\-\_type&0x1d&reference \\
-DW\-\_AT\-\_default\-\_value&0x1e&reference \\
-DW\-\_AT\-\_inline&0x20&constant \\
-DW\-\_AT\-\_is\-\_optional&0x21&flag \\
-DW\-\_AT\-\_lower\-\_bound&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_producer&0x25&string \\
-DW\-\_AT\-\_prototyped&0x27&flag \\
-DW\-\_AT\-\_return\-\_addr&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference \\
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string \\
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant \\
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr} \\
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address \\
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant \\
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant \\
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference \\
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant \\
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant \\
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference \\
+\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference \\
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string \\
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&block, constant, string \\
+\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference \\
+\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference \\
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant \\
+\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&flag \\
+\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string \\
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&flag \\
+\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
% FIXME: lower case , not Constant
-DW\-\_AT\-\_start\-\_scope&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr} \\
-DW\-\_AT\-\_bit\-\_stride&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_upper\-\_bound&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_abstract\-\_origin&0x31&reference \\
-DW\-\_AT\-\_accessibility&0x32&constant \\
-DW\-\_AT\-\_address\-\_class&0x33&constant \\
-DW\-\_AT\-\_artificial&0x34&flag \\
-DW\-\_AT\-\_base\-\_types&0x35&reference \\
-DW\-\_AT\-\_calling\-\_convention&0x36&constant \\
-DW\-\_AT\-\_count&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_data\-\_member\-\_location&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_decl\-\_column&0x39&constant \\
-DW\-\_AT\-\_decl\-\_file&0x3a&constant \\
-DW\-\_AT\-\_decl\-\_line&0x3b&constant \\
-DW\-\_AT\-\_declaration&0x3c&flag \\
-DW\-\_AT\-\_discr\-\_list&0x3d&block \\
-DW\-\_AT\-\_encoding&0x3e&constant \\
-DW\-\_AT\-\_external&0x3f&flag \\
-DW\-\_AT\-\_frame\-\_base&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_friend&0x41&reference \\
-DW\-\_AT\-\_identifier\-\_case&0x42&constant \\
-DW\-\_AT\-\_macro\-\_info&0x43&\livelink{chap:macptr}{macptr} \\
-DW\-\_AT\-\_namelist\-\_item&0x44&reference \\
-DW\-\_AT\-\_priority&0x45&reference \\
-DW\-\_AT\-\_segment&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_specification&0x47&reference \\
-DW\-\_AT\-\_static\-\_link&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_type&0x49&reference \\
-DW\-\_AT\-\_use\-\_location&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\-\_AT\-\_variable\-\_parameter&0x4b&flag \\
-DW\-\_AT\-\_virtuality&0x4c&constant \\
-DW\-\_AT\-\_vtable\-\_elem\-\_location&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-
-
-DW\-\_AT\-\_allocated&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_associated&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_data\-\_location&0x50&\livelink{chap:exprloc}{exprloc} \\
-DW\-\_AT\-\_byte\-\_stride&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\-\_AT\-\_entry\-\_pc&0x52&address \\
-DW\-\_AT\-\_use\-\_UTF8&0x53&flag \\
-DW\-\_AT\-\_extension&0x54&reference \\
-DW\-\_AT\-\_ranges&0x55&\livelink{chap:rangelistptr}{rangelistptr} \\
-DW\-\_AT\-\_trampoline&0x56&address, flag, reference, string \\
-DW\-\_AT\-\_call\-\_column&0x57&constant \\
-DW\-\_AT\-\_call\-\_file&0x58&constant \\
-DW\-\_AT\-\_call\-\_line&0x59&constant \\
-DW\-\_AT\-\_description&0x5a&string \\
-DW\-\_AT\-\_binary\-\_scale&0x5b&constant \\
-DW\-\_AT\-\_decimal\-\_scale&0x5c&constant \\
-DW\-\_AT\-\_small &0x5d&reference \\
-DW\-\_AT\-\_decimal\-\_sign&0x5e&constant \\
-DW\-\_AT\-\_digit\-\_count&0x5f&constant \\
-DW\-\_AT\-\_picture\-\_string&0x60&string \\
-DW\-\_AT\-\_mutable&0x61&flag \\
-
-
-DW\-\_AT\-\_threads\-\_scaled&0x62&flag \\
-DW\-\_AT\-\_explicit&0x63&flag \\
-DW\-\_AT\-\_object\-\_pointer&0x64&reference \\
-DW\-\_AT\-\_endianity&0x65&constant \\
-DW\-\_AT\-\_elemental&0x66&flag \\
-DW\-\_AT\-\_pure&0x67&flag \\
-DW\-\_AT\-\_recursive&0x68&flag \\
-DW\-\_AT\-\_signature \ddag &0x69&reference \\
-DW\-\_AT\-\_main\-\_subprogram \ddag &0x6a&flag \\
-DW\-\_AT\-\_data\-\_bit\-\_offset \ddag &0x6b&constant \\
-DW\-\_AT\-\_const\-\_expr \ddag &0x6c&flag \\
-DW\-\_AT\-\_enum\-\_class \ddag &0x6d&flag \\
-DW\-\_AT\-\_linkage\-\_name \ddag &0x6e&string \\
-DW\-\_AT\-\_lo\-\_user&0x2000 & --- \\
-DW\-\_AT\-\_hi\-\_user&0x3fff& --- \\
+\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr} \\
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference \\
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant \\
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant \\
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&flag \\
+\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference \\
+\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant \\
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant \\
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant \\
+\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant \\
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&flag \\
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&block \\
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant \\
+\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&flag \\
+\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference \\
+\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant \\
+\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr} \\
+\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference \\
+\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference \\
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference \\
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference \\
+\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&flag \\
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant \\
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+
+
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc} \\
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address \\
+\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&flag \\
+\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference \\
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr} \\
+\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, flag, reference, string \\
+\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant \\
+\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant \\
+\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant \\
+\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string \\
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant \\
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant \\
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference \\
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant \\
+\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant \\
+\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string \\
+\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&flag \\
+
+
+\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&flag \\
+\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&flag \\
+\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference \\
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant \\
+\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&flag \\
+\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&flag \\
+\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&flag \\
+\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference \\
+\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&flag \\
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant \\
+\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&flag \\
+\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&flag \\
+\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string \\
+\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \\
+\livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \\
\end{longtable}
\ddag Attribute new in DWARF Version 4
\section{Base Type Attribute Encodings}
\label{datarep:basetypeattributeencodings}
-The encodings of the constants used in the DW\-\_AT\-\_encoding
+The encodings of the constants used in the \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
attribute are given in
Table \refersec{tab:basetypeencodingvalues}
The encodings of the constants used in the
-DW\-\_AT\-\_decimal\-\_sign attribute
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute
are given in
Table \refersec{tab:decimalsignencodings}.
\end{centering}
The encodings of the constants used in the
-DW\-\_AT\-\_endianity attribute are given in
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute are given in
Table \refersec{tab:endianityencodings}.
\begin{centering}
\section{Accessibility Codes}
\label{datarep:accessibilitycodes}
-The encodings of the constants used in the DW\-\_AT\-\_accessibility
+The encodings of the constants used in the \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute are given in
Table \refersec{tab:accessibilityencodings}.
\section{Visibility Codes}
\label{datarep:visibilitycodes}
The encodings of the constants used in the
-DW\-\_AT\-\_visibility attribute are given in
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute are given in
Table \refersec{tab:visibilityencodings}.
\begin{centering}
\label{datarep:vitualitycodes}
The encodings of the constants used in the
-DW\-\_AT\-\_virtuality attribute are given in
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute are given in
Table \refersec{tab:virtualityencodings}.
\begin{centering}
The value
DW\-\_VIRTUALITY\-\_none is equivalent to the absence of the
-DW\-\_AT\-\_virtuality
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
attribute.
\section{Source Languages}
\label{datarep:sourcelanguages}
-The encodings of the constants used in the DW\-\_AT\-\_language
+The encodings of the constants used in the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
attribute are given in
Table \refersec{tab:languageencodings}.
Names marked with
languages they represent are not well supported.
Table \refersec{tab:languageencodings}
also shows the default lower bound, if any, assumed for
-an omitted DW\-\_AT\-\_lower\-\_bound attribute in the context of a
+an omitted \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound} attribute in the context of a
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} debugging information entry for each
defined language.
\label{datarep:identifiercase}
The encodings of the constants used in the
-DW\-\_AT\-\_identifier\-\_case attribute are given in
+\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} attribute are given in
Table \refersec{tab:identifiercaseencodings}.
\begin{centering}
\section{Calling Convention Encodings}
\label{datarep:callingconventionencodings}
The encodings of the constants used in the
-DW\-\_AT\-\_calling\-\_convention attribute are given in
+\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention} attribute are given in
Table \refersec{tab:callingconventionencodings}.
\begin{centering}
\label{datarep:inlinecodes}
The encodings of the constants used in the
-DW\-\_AT\-\_inline attribute are given in
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in
Table \refersec{tab:inlineencodings}.
\begin{centering}
\label{datarep:arrayordering}
The encodings of the constants used in the
-DW\-\_AT\-\_ordering attribute are given in
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute are given in
Table \refersec{tab:orderingencodings}.
\begin{centering}
\label{datarep:discriminantlists}
The descriptors used in the
-DW\-\_AT\-\_discr\-\_list attribute are
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are
encoded as 1\dash byte constants. The
defined values are given in
Table \refersec{tab:discriminantdescriptorencodings}.
the type’s context as follows: For each surrounding type
or namespace, beginning with the outermost such construct,
append the letter 'C', the DWARF tag of the construct, and
-the name (taken from the DW\-\_AT\-\_name attribute) of the type
+the name (taken from the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
or namespace (including its trailing null byte).
\item Append to S the letter 'D', followed by the DWARF tag of
code, and the attribute value.
\begin{itemize}
-\item DW\-\_AT\-\_name
-\item DW\-\_AT\-\_accessibility
-\item DW\-\_AT\-\_address\-\_class
-\item DW\-\_AT\-\_allocated
-\item DW\-\_AT\-\_artificial
-\item DW\-\_AT\-\_associated
-\item DW\-\_AT\-\_binary\-\_scale
-\item DW\-\_AT\-\_bit\-\_offset
-\item DW\-\_AT\-\_bit\-\_size
-\item DW\-\_AT\-\_bit\-\_stride
-\item DW\-\_AT\-\_byte\-\_size
-\item DW\-\_AT\-\_byte\-\_stride
-\item DW\-\_AT\-\_const\-\_expr
-\item DW\-\_AT\-\_const\-\_value
-\item DW\-\_AT\-\_containing\-\_type
-\item DW\-\_AT\-\_count
-\item DW\-\_AT\-\_data\-\_bit\-\_offset
-\item DW\-\_AT\-\_data\-\_location
-\item DW\-\_AT\-\_data\-\_member\-\_location
-\item DW\-\_AT\-\_decimal\-\_scale
-\item DW\-\_AT\-\_decimal\-\_sign
-\item DW\-\_AT\-\_default\-\_value
-\item DW\-\_AT\-\_digit\-\_count
-\item DW\-\_AT\-\_discr
-\item DW\-\_AT\-\_discr\-\_list
-\item DW\-\_AT\-\_discr\-\_value
-\item DW\-\_AT\-\_encoding
-\item DW\-\_AT\-\_enum\-\_class
-\item DW\-\_AT\-\_endianity
-\item DW\-\_AT\-\_explicit
-\item DW\-\_AT\-\_is\-\_optional
-\item DW\-\_AT\-\_location
-\item DW\-\_AT\-\_lower\-\_bound
-\item DW\-\_AT\-\_mutable
-\item DW\-\_AT\-\_ordering
-\item DW\-\_AT\-\_picture\-\_string
-\item DW\-\_AT\-\_prototyped
-\item DW\-\_AT\-\_small
-\item DW\-\_AT\-\_segment
-\item DW\-\_AT\-\_string\-\_length
-\item DW\-\_AT\-\_threads\-\_scaled
-\item DW\-\_AT\-\_upper\-\_bound
-\item DW\-\_AT\-\_use\-\_location
-\item DW\-\_AT\-\_use\-\_UTF8
-\item DW\-\_AT\-\_variable\-\_parameter
-\item DW\-\_AT\-\_virtuality
-\item DW\-\_AT\-\_visibility
-\item DW\-\_AT\-\_vtable\-\_elem\-\_location
+\item \livelink{chap:DWATname}{DW\-\_AT\-\_name}
+\item \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+\item \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
+\item \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}
+\item \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}
+\item \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
+\item \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
+\item \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
+\item \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+\item \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
+\item \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
+\item \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
+\item \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
+\item \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
+\item \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
+\item \livelink{chap:DWATcount}{DW\-\_AT\-\_count}
+\item \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
+\item \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
+\item \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
+\item \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
+\item \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
+\item \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
+\item \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
+\item \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}
+\item \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
+\item \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
+\item \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
+\item \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
+\item \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}
+\item \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
+\item \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
+\item \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
+\item \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
+\item \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}
+\item \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}
+\item \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
+\item \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
+\item \livelink{chap:DWATsmall}{DW\-\_AT\-\_small}
+\item \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
+\item \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
+\item \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
+\item \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
+\item \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
+\item \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
+\item \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
+\item \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
+\item \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
+\item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
\end{itemize}
-Note that except for the initial DW\-\_AT\-\_name attribute,
+Note that except for the initial \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
attributes are appended in order according to the alphabetical
spelling of their identifier.
\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type},
or \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, and the referenced
-type (via the DW\-\_AT\-\_type or
-DW\-\_AT\-\_friend attribute) has a
-DW\-\_AT\-\_name attribute, append to S the letter 'N', the DWARF
-attribute code (DW\-\_AT\-\_type or
-DW\-\_AT\-\_friend), the context of
+type (via the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) has a
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to S the letter 'N', the DWARF
+attribute code (\livelink{chap:DWATtype}{DW\-\_AT\-\_type} or
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}), the context of
the type (according to the method in Step 2), the letter 'E',
and the name of the type. For \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, if the referenced
entry is a \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}, the context is omitted and the
\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, or
\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, but has
-a DW\-\_AT\-\_type attribute, or if the referenced type (via
-the DW\-\_AT\-\_type or
-DW\-\_AT\-\_friend attribute) does not have a
-DW\-\_AT\-\_name attribute, the attribute is processed according to
+a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, or if the referenced type (via
+the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) does not have a
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, the attribute is processed according to
the method in Step 4 for an attribute that refers to another
type entry.
\item Visit each child C of the debugging information
entry as follows: If C is a nested type entry or a member
-function entry, and has a DW\-\_AT\-\_name attribute, append to
+function entry, and has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
S the letter 'S', the tag of C, and its name; otherwise,
process C recursively by performing Steps 3 through 7,
appending the result to S. Following the last child (or if
For the purposes of this algorithm, if a debugging information
entry S has a
-DW\-\_AT\-\_specification
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
attribute that refers to
another entry D (which has a
-DW\-\_AT\-\_declaration
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
attribute),
then S inherits the attributes and children of D, and S is
processed as if those attributes and children were present in
\textit{Certain attributes are not included in the type signature:}
\begin{itemize}
-\item \textit{The DW\-\_AT\-\_declaration attribute is not included because it
+\item \textit{The \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute is not included because it
indicates that the debugging information entry represents an
incomplete declaration, and incomplete declarations should
not be placed in separate type units.}
-\item \textit{The DW\-\_AT\-\_description attribute is not included because
+\item \textit{The \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute is not included because
it does not provide any information unique to the defining
declaration of the type.}
-\item \textit{The DW\-\_AT\-\_decl\-\_file, DW\-\_AT\-\_decl\-\_line, and
-DW\-\_AT\-\_decl\-\_column attributes are not included because they
+\item \textit{The \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}, and
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attributes are not included because they
may vary from one source file to the next, and would prevent
two otherwise identical type declarations from producing the
same hash.}
\put(300,-150){\line(4,-1){40}}
\put(90,-195){\line(7,2){95}}
- \put(190,-180){\framebox(110,20){DW\-\_AT\-\_location(f)} }
+ \put(190,-180){\framebox(110,20){\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(f)} }
\put(300,-180){\vector(1,0){40}}
\put(90,-195){\line(7,-2){95}}
- \put(190,-230){\framebox(110,20){DW\-\_AT\-\_ranges (g)} }
+ \put(190,-230){\framebox(110,20){\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} (g)} }
\put(300,-230){\vector(4,-3){40}}
\put(85,-200){\line(3,-2){95}}
- \put(180,-270){\framebox(110,20){DW\-\_AT\-\_macinfo (h)} }
+ \put(180,-270){\framebox(110,20){\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} (h)} }
\put(230,-270){\vector(3,-2){110}}
\put(85,-200){\line(1,-1){80}}
- \put(120,-300){\framebox(110,20){DW\-\_AT\-\_stmt\-\_list (i)} }
+ \put(120,-300){\framebox(110,20){\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} (i)} }
\put(180,-300){\vector(1,-2){10}}
\put(40,-250){\vector(0,1){15}}
\begin{alltt}
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
DW\-\_CHILDREN\-\_yes
-DW\-\_AT\-\_name DW\-\_FORM\-\_string
-DW\-\_AT\-\_producer DW\-\_FORM\-\_string
-DW\-\_AT\-\_comp\-\_dir DW\-\_FORM\-\_string
-DW\-\_AT\-\_language DW\-\_FORM\-\_data1
-DW\-\_AT\-\_low\-\_pc DW\-\_FORM\-\_addr
-DW\-\_AT\-\_high\-\_pc DW\-\_FORM\-\_data1
-DW\-\_AT\-\_stmt\-\_list DW\-\_FORM\-\_indirect
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
+\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} DW\-\_FORM\-\_string
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} DW\-\_FORM\-\_string
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} DW\-\_FORM\-\_data1
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} DW\-\_FORM\-\_addr
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} DW\-\_FORM\-\_data1
+\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} DW\-\_FORM\-\_indirect
0 0
\vspace{0.01cm}
\hrule
2
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
DW\-\_CHILDREN\-\_no
-DW\-\_AT\-\_name DW\-\_FORM\-\_string
-DW\-\_AT\-\_encoding DW\-\_FORM\-\_data1
-DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_data1
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_data1
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_data1
0
\vspace{0.01cm}
\hrule
3
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
DW\-\_CHILDREN\-\_no
-DW\-\_AT\-\_type DW\-\_FORM\-\_ref4
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} DW\-\_FORM\-\_ref4
0
\vspace{0.01cm}
\hrule
4
\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}
DW\-\_CHILDREN\-\_no
-DW\-\_AT\-\_name DW\-\_FORM\-\_string
-DW\-\_AT\-\_type DW\-\_FORM\-\_ref\-\_addr
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} DW\-\_FORM\-\_ref\-\_addr
0
\vspace{0.01cm}
\hrule
that can be the object).
If an object has a descriptor, then the DWARF type for that
-object will have a DW\-\_AT\-\_data\-\_location attribute. If an object
+object will have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. If an object
does not have a descriptor, then usually the DWARF type for the
-object will not have a DW\-\_AT\-\_data\-\_location. (See the following
+object will not have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}. (See the following
Ada example for a case where the type for an object without
-a descriptor does have a DW\-\_AT\-\_data\-\_location attribute. In
+a descriptor does have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. In
that case the object doubles as its own descriptor.)
The Fortran 90 derived type array\_ptr can now be redescribed
1\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Fortran) ordering, default stride
- DW\-\_AT\-\_type(reference to REAL)
- DW\-\_AT\-\_associated(expression= ! Test 'ptr\_assoc' flag
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to REAL)
+ \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}(expression= ! Test 'ptr\_assoc' flag
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n == offset(ptr\_assoc)
DW\-\_OP\-\_plus
DW\-\_OP\-\_deref
DW\-\_OP\-\_lit1 ! mask for 'ptr\_assoc' flag
DW\-\_OP\-\_and)
- DW\-\_AT\-\_data\-\_location(expression= ! Get raw data address
+ \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}(expression= ! Get raw data address
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n == offset(base)
DW\-\_OP\-\_plus
DW\-\_OP\-\_deref) ! Type of index of array 'ap'
2\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
! No name, default stride
- DW\-\_AT\-\_type(reference to INTEGER)
- DW\-\_AT\-\_lower\-\_bound(expression=
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(expression=
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n ==
! offset(desc, dims) +
! offset(dims\_str, lower\_bound)
DW\-\_OP\-\_plus
DW\-\_OP\-\_deref)
- DW\-\_AT\-\_upper\-\_bound(expression=
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(expression=
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n ==
! offset(desc, dims) +
! successive dimension (other than to express the larger
! offsets involved).
3\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("array\_ptr")
- DW\-\_AT\-\_byte\-\_size(constant sizeof(REAL) + sizeof(desc<1>))
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("array\_ptr")
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(constant sizeof(REAL) + sizeof(desc<1>))
4\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("myvar")
- DW\-\_AT\-\_type(reference to REAL)
- DW\-\_AT\-\_data\-\_member\-\_location(constant 0)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("myvar")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to REAL)
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}(constant 0)
5\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("ap");
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_data\-\_member\-\_location(constant sizeof(REAL))
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("ap");
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}(constant sizeof(REAL))
6\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Fortran) ordering, default stride
- DW\-\_AT\-\_type(reference to 3\$)
- DW\-\_AT\-\_allocated(expression=
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
+ \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}(expression=
! Test 'ptr\_alloc' flag
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n == offset(ptr\_alloc)
DW\-\_OP\-\_lit2
! mask for 'ptr\_alloc' flag
DW\-\_OP\-\_and)
- DW\-\_AT\-\_data\-\_location(expression= ! Get raw data address
+ \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}(expression= ! Get raw data address
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n = offset(base)
DW\-\_OP\-\_plus
7\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
! No name, default stride
- DW\-\_AT\-\_type(reference to INTEGER)
- DW\-\_AT\-\_lower\-\_bound(expression=
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(expression=
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n == ...
DW\-\_OP\-\_plus
DW\-\_OP\-\_deref)
- DW\-\_AT\-\_upper\-\_bound(expression=
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(expression=
DW\-\_OP\-\_push\-\_object\-\_address
DW\-\_OP\-\_lit<n> ! where n == ...
DW\-\_OP\-\_plus
DW\-\_OP\-\_deref)
8\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("arrays")
- DW\-\_AT\-\_type(reference to 6\$)
- DW\-\_AT\-\_location(expression=
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("arrays")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 6\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(expression=
...as appropriate...) ! Assume static allocation
\end{alltt}
\end{enumerate}
-For a), check for a DW\-\_AT\-\_data\-\_location attribute. Since
+For a), check for a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. Since
there is one, go execute the expression, whose result is
the address needed. The object address used in this case
is the object we are working on, namely the variable named
arrays , whose address was found in step 1. (Had there been
-no DW\-\_AT\-\_data\-\_location attribute, the desired address would
+no \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute, the desired address would
be the same as the address from step 1.)
For b), for each dimension of the array (only one
any indexing yet.
For c), the default stride applies. Since there is no
-DW\-\_AT\-\_byte\-\_stride attribute, use the size of the array element
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} attribute, use the size of the array element
type, which is the size of type array\_ptr (at 3\$).
Having acquired all the necessary data, perform the indexing
\end{enumerate}
This is just like step 2), so the details are omitted. Recall
-that because the DWARF type 1\$ has a DW\-\_AT\-\_data\-\_location,
+that because the DWARF type 1\$ has a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location},
the address that results from step 4) is that of a
descriptor, and that address is the address pushed by the
DW\-\_OP\-\_push\-\_object\-\_address operations in 1\$ and 2\$.
\begin{enumerate}[1)]
\item The array VEC2 is ``immediately'' contained within structure
REC2 (there is no intermediate descriptor or indirection),
-which is reflected in the absence of a DW\-\_AT\-\_data\-\_location
+which is reflected in the absence of a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
attribute on the array type at 28\$.
\item One of the bounds of VEC2 is nonetheless dynamic and part of
\begin{alltt}
11\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("M")
- DW\-\_AT\-\_type(reference to INTEGER)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("M")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
12\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Ada) order, default stride
- DW\-\_AT\-\_type(reference to INTEGER)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
13\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_type(reference to INTEGER)
- DW\-\_AT\-\_lower\-\_bound(constant 1)
- DW\-\_AT\-\_upper\-\_bound(reference to variable M at 11\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(constant 1)
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(reference to variable M at 11\$)
14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("VEC1")
- DW\-\_AT\-\_type(reference to array type at 12\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("VEC1")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to array type at 12\$)
. . .
21\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_name("TEENY")
- DW\-\_AT\-\_type(reference to INTEGER)
- DW\-\_AT\-\_lower\-\_bound(constant 1)
- DW\-\_AT\-\_upper\-\_bound(constant 100)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("TEENY")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(constant 1)
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(constant 100)
. . .
26\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("REC2")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("REC2")
27\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("N")
- DW\-\_AT\-\_type(reference to subtype TEENY at 21\$)
- DW\-\_AT\-\_data\-\_member\-\_location(constant 0)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("N")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to subtype TEENY at 21\$)
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}(constant 0)
28\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Ada) order, default stride
! Default data location
- DW\-\_AT\-\_TYPE(reference to INTEGER)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
29\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_type(reference to subrange TEENY at 21\$)
- DW\-\_AT\-\_lower\-\_bound(constant 1)
- DW\-\_AT\-\_upper\-\_bound(reference to member N at 27\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to subrange TEENY at 21\$)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(constant 1)
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(reference to member N at 27\$)
30\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("VEC2")
- DW\-\_AT\-\_type(reference to array “subtype” at 28\$)
- DW\-\_AT\-\_data\-\_member\-\_location(machine=
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("VEC2")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to array “subtype” at 28\$)
+ \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}(machine=
DW\-\_OP\-\_lit<n> ! where n == offset(REC2, VEC2)
DW\-\_OP\-\_plus)
. . .
41\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("OBJ2B")
- DW\-\_AT\-\_type(reference to REC2 at 26\$)
- DW\-\_AT\-\_location(...as appropriate...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OBJ2B")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to REC2 at 26\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...as appropriate...)
\end{alltt}
\subsection{Packed record example: DWARF description}
\label{app:packedrecordexampledwarfdescription}
+% DWARF4 had some entries here as DW_AT_member .
+% Those are fixed here to DW_TAG_member
\begin{alltt}
21\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} ! anonymous type for F2
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("F3")
- DW\-\_AT\-\_type(reference to 11\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F3")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
22\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} ! anonymous type for F4
- DW\-\_AT\-\_type(reference to 20\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 20\$)
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_type(reference to 11\$)
- DW\-\_AT\-\_lower\-\_bound(0)
- DW\-\_AT\-\_upper\-\_bound(1)
- DW\-\_AT\-\_bit\-\_stride(2)
- DW\-\_AT\-\_bit\-\_size(4)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
+ \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(0)
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(1)
+ \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}(2)
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(4)
23\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} ! anonymous type for V
- DW\-\_AT\-\_bit\-\_size(39)
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(39)
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("F1")
- DW\-\_AT\-\_type(reference to 10\$)
- DW\-\_AT\-\_data\-\_bit\-\_offset(0)! may be omitted
- DW\-\_AT\-\_bit\-\_size(1) ! may be omitted
- DW\-\_AT\-\_member
- DW\-\_AT\-\_name("F2")
- DW\-\_AT\-\_type(reference to 21\$)
- DW\-\_AT\-\_data\-\_bit\-\_offset(1)
- DW\-\_AT\-\_bit\-\_size(32) ! may be omitted
- DW\-\_AT\-\_member
- DW\-\_AT\-\_name("F4")
- DW\-\_AT\-\_type(reference to 22\$)
- DW\-\_AT\-\_data\-\_bit\-\_offset(33)
- DW\-\_AT\-\_bit\-\_size(4) ! may be omitted
- DW\-\_AT\-\_member
- DW\-\_AT\-\_name("F7")
- DW\-\_AT\-\_type(reference to 20\$) ! type T
- DW\-\_AT\-\_data\-\_bit\-\_offset(37)
- DW\-\_AT\-\_bit\-\_size(2) ! may be omitted
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F1")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 10\$)
+ \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}(0)! may be omitted
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(1) ! may be omitted
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F2")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 21\$)
+ \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}(1)
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(32) ! may be omitted
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F4")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 22\$)
+ \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}(33)
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(4) ! may be omitted
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F7")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 20\$) ! type T
+ \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}(37)
+ \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}(2) ! may be omitted
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("V")
- DW\-\_AT\-\_type(reference to 23\$)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("V")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 23\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
...
\end{alltt}
\begin{alltt}
1\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("int")
...
2\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("float")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("float")
...
6\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- ! no DW\-\_AT\-\_name attribute
+ ! no \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
7\$:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("i")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("i")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
10\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name("A")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("A")
20\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name("B")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("B")
30\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("j")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("j")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
34\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("myfunc")
- DW\-\_AT\-\_type(reference to 1\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("myfunc")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
...
36\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("myfunc")
- DW\-\_AT\-\_type(reference to 2\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("myfunc")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 2\$)
...
38\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("myfunc2")
- DW\-\_AT\-\_low\-\_pc ...
- DW\-\_AT\-\_high\-\_pc ...
- DW\-\_AT\-\_type(reference to 1\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("myfunc2")
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} ...
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} ...
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
...
40\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_name("Y")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Y")
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (1) using-declaration
- DW\-\_AT\-\_import(reference to 30\$)
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 30\$)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("foo")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("foo")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (2) using declaration
- DW\-\_AT\-\_import(reference to 30\$)
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 30\$)
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (3) namespace alias
- DW\-\_AT\-\_name("Foo")
- DW\-\_AT\-\_import(reference to 20\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Foo")
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 20\$)
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (4) using declaration
- DW\-\_AT\-\_import(reference to 34\$) ! - part 1
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 34\$) ! - part 1
\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (4) using declaration
- DW\-\_AT\-\_import(reference to 36\$) ! - part 2
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 36\$) ! - part 2
\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module} ! (5) using directive
- DW\-\_AT\-\_import(reference to 20\$)
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 20\$)
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_extension(reference to 10\$)
+ \livelink{chap:DWATextension}{DW\-\_AT\-\_extension}(reference to 10\$)
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
- DW\-\_AT\-\_extension(reference to 20\$)
+ \livelink{chap:DWATextension}{DW\-\_AT\-\_extension}(reference to 20\$)
\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module} ! (6) using directive
- DW\-\_AT\-\_import(reference to 40\$)
+ \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to 40\$)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("k")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("k")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
60\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_specification(reference to 34\$)
- DW\-\_AT\-\_low\-\_pc ...
- DW\-\_AT\-\_high\-\_pc ...
+ \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}(reference to 34\$)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} ...
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} ...
...
\end{alltt}
\begin{alltt}
1\$: \livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}
- DW\-\_AT\-\_name("void")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("void")
...
2\$ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("int")
...
3\$: \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
- DW\-\_AT\-\_name("A")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("A")
...
4\$: \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
- DW\-\_AT\-\_type(reference to 3\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
...
5\$: \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
- DW\-\_AT\-\_type(reference to 3\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
...
6\$: \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
- DW\-\_AT\-\_type(reference to 5\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 5\$)
...
7\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_declaration
- DW\-\_AT\-\_name("func1")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_object\-\_pointer(reference to 8\$)
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("func1")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 8\$)
! References a formal parameter in this
! member function
...
8\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_artificial(true)
- DW\-\_AT\-\_name("this")
- DW\-\_AT\-\_type(reference to 4\$)
+ \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}(true)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("this")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 4\$)
! Makes type of 'this' as 'A*' =>
! func1 has not been marked const
! or volatile
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
9\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name(x1)
- DW\-\_AT\-\_type(reference to 2\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}(x1)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 2\$)
...
10\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_declaration
- DW\-\_AT\-\_name("func2")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_object\-\_pointer(reference to 11\$)
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("func2")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 11\$)
! References a formal parameter in this
! member function
...
11\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_artificial(true)
- DW\-\_AT\-\_name("this")
- DW\-\_AT\-\_type(reference to 6\$)
+ \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}(true)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("this")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 6\$)
! Makes type of 'this' as 'A const*' =>
! func2 marked as const
- DW\-\_AT\-\_location ...
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} ...
...
12\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_declaration
- DW\-\_AT\-\_name("func3")
- DW\-\_AT\-\_type(reference to 1\$)
+ \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("func3")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
...
! No object pointer reference formal parameter
! implies func3 is static
13\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name(x3)
- DW\-\_AT\-\_type(reference to 2\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}(x3)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 2\$)
...
\end{alltt}
!
OUTER.AI.1.1:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("OUTER")
- DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER")
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.1.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("OUTER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
OUTER.AI.1.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("OUTER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
!
! Abstract instance for INNER
!
INNER.AI.1.1:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("INNER")
- DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER")
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
INNER.AI.1.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("INNER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
INNER.AI.1.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("INNER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
...
0
OUTER.CI.1.1:
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.1)
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.1.1)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
OUTER.CI.1.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.2)
- DW\-\_AT\-\_const\-\_value(7)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.1.2)
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(7)
OUTER.CI.1.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.3)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.1.3)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
!
! No \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} (abstract instance) for INNER
!
INNER.CI.1.1:
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.1)
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
- DW\-\_AT\-\_static\-\_link(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to INNER.AI.1.1)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
+ \livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}(...)
INNER.CI.1.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.2)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to INNER.AI.1.2)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
INNER.CI.1.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.3)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to INNER.AI.1.3)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
...
0
! Another concrete instance of INNER within OUTER
Note that the debugging information in this Figure differs from
that in
Section \refersec{app:inliningexample1abstractinstance}
-in that INNER lacks a DW\-\_AT\-\_inline attribute
+in that INNER lacks a \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute
and therefore is not a distinct abstract instance. INNER
is merely an out\dash of\dash line routine that is part of OUTER’s
abstract instance. This is reflected in the Figure 70 by
concrete out\dash of\dash line subprogram. Because INNER is cloned
for each inline expansion of OUTER, only the invariant
attributes of INNER
-(for example, DW\-\_AT\-\_name) are specified
+(for example, \livelink{chap:DWATname}{DW\-\_AT\-\_name}) are specified
in the abstract instance of OUTER, and the low\dash level,
instance\dash specific attributes of INNER (for example,
-DW\-\_AT\-\_low\-\_pc) are specified in each concrete instance of OUTER.
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}) are specified in each concrete instance of OUTER.
The several calls of INNER within OUTER are compiled as normal
calls to the instance of INNER that is specific to the same
!
OUTER.AI.2.1:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("OUTER")
- DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER")
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.2.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("OUTER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
OUTER.AI.2.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("OUTER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
!
! Nested out-of-line INNER subprogram
!
OUTER.AI.2.4:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("INNER")
- ! No DW\-\_AT\-\_inline
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER")
+ ! No \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}
! No low/high PCs, frame\_base, etc.
OUTER.AI.2.5:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("INNER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
OUTER.AI.2.6:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("INNER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
...
0
OUTER.CI.2.1:
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.1)
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.2.1)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
OUTER.CI.2.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.2)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.2.2)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
OUTER.CI.2.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.3)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.2.3)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
!
! Nested out-of-line INNER subprogram
!
OUTER.CI.2.4:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.4)
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
- DW\-\_AT\-\_frame\-\_base(...)
- DW\-\_AT\-\_static\-\_link(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.2.4)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
+ \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}(...)
+ \livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}(...)
OUTER.CI.2.5:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.5)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.2.5)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
OUTER.CI.2.6:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AT.2.6)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AT.2.6)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
...
0
...
and not in OUTER’s concrete instance. In the abstract
instance of OUTER, the description of INNER has the full
complement of attributes that would be expected for a
-normal subprogram. While attributes such as DW\-\_AT\-\_low\-\_pc,
-DW\-\_AT\-\_high\-\_pc, DW\-\_AT\-\_location, and so on, typically are omitted
+normal subprogram. While attributes such as \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc},
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}, \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}, and so on, typically are omitted
from an abstract instance because they are not invariant across
instances of the containing abstract instance, in this case
those same attributes are included precisely because they are
!
OUTER.AI.3.1:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("OUTER")
- DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER")
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.3.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("OUTER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
OUTER.AI.3.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("OUTER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("OUTER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
! No location
!
! Normal INNER
!
OUTER.AI.3.4:
\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("INNER")
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
- DW\-\_AT\-\_frame\-\_base(...)
- DW\-\_AT\-\_static\-\_link(...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER")
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
+ \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}(...)
+ \livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}(...)
OUTER.AI.3.5:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("INNER\_FORMAL")
- DW\-\_AT\-\_type(reference to integer)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_FORMAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
OUTER.AI.3.6:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("INNER\_LOCAL")
- DW\-\_AT\-\_type(reference to integer)
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INNER\_LOCAL")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to integer)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
...
0
...
OUTER.CI.3.1:
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.1)
- DW\-\_AT\-\_low\-\_pc(...)
- DW\-\_AT\-\_high\-\_pc(...)
- DW\-\_AT\-\_frame\-\_base(...)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.3.1)
+ \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}(...)
+ \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}(...)
+ \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}(...)
OUTER.CI.3.2:
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.2)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.3.2)
! No type
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
OUTER.CI.3.3:
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.3)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to OUTER.AI.3.3)
! No type
- DW\-\_AT\-\_location(...)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(...)
! No \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} for "INNER"
...
0
! For variable mass
!
1\$: \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
- DW\-\_AT\-\_type(reference to "double")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "double")
2\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("mass")
- DW\-\_AT\-\_type(reference to 1\$)
- DW\-\_AT\-\_const\-\_expr(true)
- DW\-\_AT\-\_const\-\_value(9.8)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("mass")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
+ \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}(true)
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(9.8)
! Abstract instance for square
!
10\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("square")
- DW\-\_AT\-\_type(reference to "int")
- DW\-\_AT\-\_inline(DW\-\_INL\-\_inlined)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("square")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}(DW\-\_INL\-\_inlined)
11\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("x")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("x")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
! Concrete instance for square(9)
!
20\$: \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
- DW\-\_AT\-\_abstract\-\_origin(reference to 10\$)
- DW\-\_AT\-\_const\-\_expr(present)
- DW\-\_AT\-\_const\-\_value(81)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to 10\$)
+ \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}(present)
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(81)
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_abstract\-\_origin(reference to 11\$)
- DW\-\_AT\-\_const\-\_value(9)
+ \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}(reference to 11\$)
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(9)
! Anonymous array type for arr
!
30\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
- DW\-\_AT\-\_type(reference to "float")
- DW\-\_AT\-\_byte\-\_size(324) ! 81*4
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "float")
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(324) ! 81*4
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
- DW\-\_AT\-\_type(reference to "int")
- DW\-\_AT\-\_upper\-\_bound(reference to 20\$)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
+ \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(reference to 20\$)
! Variable arr
!
40\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("arr")
- DW\-\_AT\-\_type(reference to 30\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("arr")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 30\$)
\end{alltt}
! DWARF description
!
1\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("char16\_t")
- DW\-\_AT\-\_encoding(DW\-\_ATE\-\_UTF)
- DW\-\_AT\-\_byte\-\_size(2)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("char16\_t")
+ \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}(DW\-\_ATE\-\_UTF)
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(2)
2\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
- DW\-\_AT\-\_name("char32\_t")
- DW\-\_AT\-\_encoding(DW\-\_ATE\-\_UTF)
- DW\-\_AT\-\_byte\-\_size(4)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("char32\_t")
+ \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}(DW\-\_ATE\-\_UTF)
+ \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(4)
3\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("chr\_a")
- DW\-\_AT\-\_type(reference to 1\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("chr\_a")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
4\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("chr\_b")
- DW\-\_AT\-\_type(reference to 2\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("chr\_b")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 2\$)
\end{alltt}
! DWARF description
!
11\$: \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}
- DW\-\_AT\-\_name("E")
- DW\-\_AT\-\_type(reference to "int")
- DW\-\_AT\-\_enum\-\_class(present)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("E")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
+ \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}(present)
12\$: \livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
- DW\-\_AT\-\_name("E1")
- DW\-\_AT\-\_const\-\_value(0)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("E1")
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(0)
13\$:
\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
- DW\-\_AT\-\_name("E2")
- DW\-\_AT\-\_const\-\_value(100)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("E2")
+ \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(100)
14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("e1")
- DW\-\_AT\-\_type(reference to 11\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("e1")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
\end{alltt}
\section{Template Example}
! DWARF description
!
11\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("wrapper")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("wrapper")
12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("T")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("T")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
13\$ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("comp")
- DW\-\_AT\-\_type(reference to 12\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("comp")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 12\$)
14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("obj")
- DW\-\_AT\-\_type(reference to 11\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("obj")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
\end{alltt}
The actual type of the component comp is int, but in the DWARF
! DWARF description
!
11\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("wrapper")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("wrapper")
12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("T")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("T")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
13\$ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("comp")
- DW\-\_AT\-\_type(reference to 12\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("comp")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 12\$)
14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("obj")
- DW\-\_AT\-\_type(reference to 11\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("obj")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
21\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
- DW\-\_AT\-\_name("consume")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("consume")
22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("U")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("U")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
23\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
- DW\-\_AT\-\_name("formal")
- DW\-\_AT\-\_type(reference to 11\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("formal")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 11\$)
\end{alltt}
In the \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} entry for the instance of consume,
\begin{alltt}
wrapper<U>,
\end{alltt}
-in the DW\-\_AT\-\_type attribute at
+in the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute at
23\$.
There is no
description of the relationship between template type parameter
! DWARF representation for variable 'b'
!
20\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("Alpha")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Alpha")
21\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("T")
- DW\-\_AT\-\_type(reference to "long")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("T")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "long")
22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("U")
- DW\-\_AT\-\_type(reference to "long")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("U")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "long")
23\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("tango")
- DW\-\_AT\-\_type(reference to 21\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("tango")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 21\$)
24\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
- DW\-\_AT\-\_name("uniform")
- DW\-\_AT\-\_type(reference to 22\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("uniform")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 22\$)
25\$: \livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
- DW\-\_AT\-\_name("Beta")
- DW\-\_AT\-\_type(reference to 20\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Beta")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 20\$)
26\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("V")
- DW\-\_AT\-\_type(reference to "long")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("V")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "long")
27\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("b")
- DW\-\_AT\-\_type(reference to 25\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("b")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 25\$)
\end{alltt}
! DWARF representation for X<Y<int>>
!
30\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("Y")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Y")
31\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("TY")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("TY")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
32\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("X")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("X")
33\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("TX")
- DW\-\_AT\-\_type(reference to 30\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("TX")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 30\$)
! DWARF representation for X<Z<int>>
!
40\$: \livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
using Z = Y<int>;
- DW\-\_AT\-\_name("Z")
- DW\-\_AT\-\_type(reference to 30\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Z")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 30\$)
41\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("T")
- DW\-\_AT\-\_type(reference to "int")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("T")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to "int")
42\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
- DW\-\_AT\-\_name("X")
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("X")
43\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
- DW\-\_AT\-\_name("TX")
- DW\-\_AT\-\_type(reference to 40\$)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("TX")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 40\$)
! Note that 32\$ and 42\$ are actually the same type
!
50\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("y")
- DW\-\_AT\-\_type(reference to \$32)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("y")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to \$32)
51\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
- DW\-\_AT\-\_name("z")
- DW\-\_AT\-\_type(reference to \$42)
+ \livelink{chap:DWATname}{DW\-\_AT\-\_name}("z")
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to \$42)
\end{alltt}
debugging information entries, are described in
this section and not necessarily mentioned in all
contexts where they may be appropriate.
-Examples include DW\-\_AT\-\_artificial, the declaration
-coordinates, and DW\-\_AT\-\_description, among others.
+Examples include \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}, the declaration
+coordinates, and \livelink{chap:DWATdescription}{DW\-\_AT\-\_description}, among others.
The debugging information entries are contained
in the .debug\_info and .debug\_types
\endfoot
\hline
\endlastfoot
-DW\-\_AT\-\_abstract\-\_origin
+\livetarg{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}
&Inline instances of inline subprograms \\
&Out\dash{} of\dash{} line instances of inline subprograms \\
-DW\-\_AT\-\_accessibility
+\livetarg{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
&C++ and Ada declarations \\
&C++ base classes \\
&C++ inherited members \\
-DW\-\_AT\-\_address\-\_class
+\livetarg{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
&Pointer or reference types \\
&Subroutine or subroutine type \\
-DW\-\_AT\-\_allocated
+\livetarg{chap:DWATallocated}{DW\-\_AT\-\_allocated}
&Allocation status of types \\
-DW\-\_AT\-\_artificial
+\livetarg{chap:DWATartificial}{DW\-\_AT\-\_artificial}
&Objects or types that are not
actually declared in the source \\
-DW\-\_AT\-\_associated
+\livetarg{chap:DWATassociated}{DW\-\_AT\-\_associated}
&Association status of types \\
-DW\-\_AT\-\_base\-\_types
+\livetarg{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}
&Primitive data types of compilation unit \\
-DW\-\_AT\-\_binary\-\_scale
+\livetarg{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
&Binary scale factor for fixed\dash point type \\
-DW\-\_AT\-\_bit\-\_offset
+\livetarg{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
&Base type bit location \\
&Data member bit location \\
-DW\-\_AT\-\_bit\-\_size
+\livetarg{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
&Base type bit size \\
&Data member bit size \\
-DW\-\_AT\-\_bit\-\_stride
+\livetarg{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
&Array element stride (of array type) \\
&Subrange stride (dimension of array type) \\
&Enumeration stride (dimension of array type) \\
-DW\-\_AT\-\_byte\-\_size
+\livetarg{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
&Data object or data type size \\
-DW\-\_AT\-\_byte\-\_stride
+\livetarg{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
&Array element stride (of array type) \\
&Subrange stride (dimension of array type) \\
&Enumeration stride (dimension of array type) \\
-DW\-\_AT\-\_call\-\_column
+\livetarg{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}
&Column position of inlined subroutine call \\
-DW\-\_AT\-\_call\-\_file
+\livetarg{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}
&File containing inlined subroutine call \\
-DW\-\_AT\-\_call\-\_line
+\livetarg{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}
&Line number of inlined subroutine call \\
-DW\-\_AT\-\_calling\-\_convention
+\livetarg{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}
&Subprogram calling convention \\
-&DW\-\_AT\-\_common\-\_reference \\
+&\livetarg{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference} \\
&Common block usage \\
-DW\-\_AT\-\_comp\-\_dir
+\livetarg{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}
&Compilation directory \\
-DW\-\_AT\-\_const\-\_value
+\livetarg{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
&Constant object \\
-DW\-\_AT\-\_const\-\_value
+\livetarg{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
&Enumeration literal value \\
&Template value parameter \\
-DW\-\_AT\-\_const\-\_expr
+\livetarg{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
&Compile\dash time constant object \\
&Compile\dash time constant function \\
-DW\-\_AT\-\_containing\-\_type
+\livetarg{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
&Containing type of pointer to member type \\
-DW\-\_AT\-\_count
+\livetarg{chap:DWATcount}{DW\-\_AT\-\_count}
&Elements of subrange type \\
-DW\-\_AT\-\_data\-\_bit\-\_offset
+\livetarg{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
&Base type bit location \\
&Data member bit location \\
-DW\-\_AT\-\_data\-\_location
+\livetarg{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
&Indirection to actual data \\
-DW\-\_AT\-\_data\-\_member\-\_location
+\livetarg{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
&Data member location \\
&Inherited member location \\
-DW\-\_AT\-\_decimal\-\_scale
+\livetarg{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
&Decimal scale factor \\
-DW\-\_AT\-\_decimal\-\_sign
+\livetarg{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
&Decimal sign representation \\
-DW\-\_AT\-\_decl\-\_column
+\livetarg{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
&Column position of source declaration \\
-DW\-\_AT\-\_decl\-\_file
+\livetarg{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}
&File containing source declaration \\
-DW\-\_AT\-\_decl\-\_line
+\livetarg{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}
&Line number of source declaration \\
-DW\-\_AT\-\_declaration
+\livetarg{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
&Incomplete, non\dash defining, or separate entity declaration \\
-DW\-\_AT\-\_default\-\_value
+\livetarg{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
&Default value of parameter \\
-DW\-\_AT\-\_description
+\livetarg{chap:DWATdescription}{DW\-\_AT\-\_description}
& Artificial name or description \\
-DW\-\_AT\-\_digit\-\_count
+\livetarg{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
&Digit count for packed decimal or numeric string type\\
-DW\-\_AT\-\_discr
+\livetarg{chap:DWATdiscr}{DW\-\_AT\-\_discr}
&Discriminant of variant part\\
-DW\-\_AT\-\_discr\-\_list
+\livetarg{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
&List of discriminant values\\
-DW\-\_AT\-\_discr\-\_value
+\livetarg{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
&Discriminant value\\
-DW\-\_AT\-\_elemental
+\livetarg{chap:DWATelemental}{DW\-\_AT\-\_elemental}
&Elemental property of a subroutine\\
-DW\-\_AT\-\_encoding
+\livetarg{chap:DWATencoding}{DW\-\_AT\-\_encoding}
&Encoding of base type\\
-DW\-\_AT\-\_endianity
+\livetarg{chap:DWATendianity}{DW\-\_AT\-\_endianity}
&Endianity of data\\
-DW\-\_AT\-\_entry\-\_pc
+\livetarg{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
&Entry address of module initialization\\
&Entry address of subprogram\\
&Entry address of inlined subprogram\\
-DW\-\_AT\-\_enum\-\_class
+\livetarg{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
&Type safe enumeration definition\\
-DW\-\_AT\-\_explicit
+\livetarg{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
&Explicit property of member function\\
-DW\-\_AT\-\_extension
+\livetarg{chap:DWATextension}{DW\-\_AT\-\_extension}
&Previous namespace extension or original namespace\\
-DW\-\_AT\-\_external
+\livetarg{chap:DWATexternal}{DW\-\_AT\-\_external}
&External subroutine\\
&External variable\\
-DW\-\_AT\-\_frame\-\_base
+\livetarg{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}
&Subroutine frame base address\\
-DW\-\_AT\-\_friend
+\livetarg{chap:DWATfriend}{DW\-\_AT\-\_friend}
&Friend relationship\\
-DW\-\_AT\-\_high\-\_pc
+\livetarg{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}
&Contiguous range of code addresses\\
-DW\-\_AT\-\_identifier\-\_case
+\livetarg{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}
&Identifier case rule \\
-DW\-\_AT\-\_import
+\livetarg{chap:DWATimport}{DW\-\_AT\-\_import}
&Imported declaration \\
&Imported unit \\
&Namespace alias \\
&Namespace using declaration \\
&Namespace using directive \\
-DW\-\_AT\-\_inline
+\livetarg{chap:DWATinline}{DW\-\_AT\-\_inline}
&Abstract instance\\
&Inlined subroutine\\
-DW\-\_AT\-\_is\-\_optional
+\livetarg{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
&Optional parameter\\
-DW\-\_AT\-\_language
+\livetarg{chap:DWATlanguage}{DW\-\_AT\-\_language}
&Programming language\\
-DW\-\_AT\-\_linkage\-\_name
+\livetarg{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name}
&Object file linkage name of an entity\\
-DW\-\_AT\-\_location
+\livetarg{chap:DWATlocation}{DW\-\_AT\-\_location}
&Data object location\\
-DW\-\_AT\-\_low\-\_pc
+\livetarg{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}
&Code address or range of addresses\\
-DW\-\_AT\-\_lower\-\_bound
+\livetarg{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
&Lower bound of subrange\\
-DW\-\_AT\-\_macro\-\_info
+\livetarg{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}
&Macro information (\#define, \#undef)\\
-DW\-\_AT\-\_main\-\_subprogram
+\livetarg{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}
&Main or starting subprogram\\
&Unit containing main or starting subprogram\\
-DW\-\_AT\-\_mutable
+\livetarg{chap:DWATmutable}{DW\-\_AT\-\_mutable}
&Mutable property of member data\\
-DW\-\_AT\-\_name
+\livetarg{chap:DWATname}{DW\-\_AT\-\_name}
&Name of declaration\\
&Path name of compilation source\\
-DW\-\_AT\-\_namelist\-\_item
+\livetarg{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}
&Namelist item\\
-DW\-\_AT\-\_object\-\_pointer
+\livetarg{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
&Object (this, self) pointer of member function\\
-DW\-\_AT\-\_ordering
+\livetarg{chap:DWATordering}{DW\-\_AT\-\_ordering}
&Array row/column ordering\\
-DW\-\_AT\-\_picture\-\_string
+\livetarg{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
&Picture string for numeric string type\\
-DW\-\_AT\-\_priority
+\livetarg{chap:DWATpriority}{DW\-\_AT\-\_priority}
&Module priority\\
-DW\-\_AT\-\_producer
+\livetarg{chap:DWATproducer}{DW\-\_AT\-\_producer}
&Compiler identification\\
-DW\-\_AT\-\_prototyped
+\livetarg{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
&Subroutine prototype\\
-DW\-\_AT\-\_pure
+\livetarg{chap:DWATpure}{DW\-\_AT\-\_pure}
&Pure property of a subroutine\\
-DW\-\_AT\-\_ranges
+\livetarg{chap:DWATranges}{DW\-\_AT\-\_ranges}
&Non\dash contiguous range of code addresses\\
-DW\-\_AT\-\_recursive
+\livetarg{chap:DWATrecursive}{DW\-\_AT\-\_recursive}
&Recursive property of a subroutine\\
-DW\-\_AT\-\_return\-\_addr
+\livetarg{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
&Subroutine return address save location\\
-DW\-\_AT\-\_segment
+\livetarg{chap:DWATsegment}{DW\-\_AT\-\_segment}
&Addressing information\\
-DW\-\_AT\-\_sibling
+\livetarg{chap:DWATsibling}{DW\-\_AT\-\_sibling}
&Debugging information entry relationship\\
-DW\-\_AT\-\_small
+\livetarg{chap:DWATsmall}{DW\-\_AT\-\_small}
&Scale factor for fixed\dash point type\\
-DW\-\_AT\-\_signature
+\livetarg{chap:DWATsignature}{DW\-\_AT\-\_signature}
&Type signature\\
-DW\-\_AT\-\_specification
+\livetarg{chap:DWATspecification}{DW\-\_AT\-\_specification}
&Incomplete, non\dash defining, or separate declaration
corresponding to a declaration\\
-DW\-\_AT\-\_start\-\_scope
+\livetarg{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
&Object declaration\\
&Type declaration\\
-DW\-\_AT\-\_static\-\_link
+\livetarg{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
&Location of uplevel frame\\
-DW\-\_AT\-\_stmt\-\_list
+\livetarg{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}
&Line number information for unit\\
-DW\-\_AT\-\_string\-\_length
+\livetarg{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
&String length of string type\\
-DW\-\_AT\-\_threads\-\_scaled
+\livetarg{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
&UPC array bound THREADS scale factor\\
-DW\-\_AT\-\_trampoline
+\livetarg{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}
&Target subroutine\\
-DW\-\_AT\-\_type
+\livetarg{chap:DWATtype}{DW\-\_AT\-\_type}
&Type of declaration\\
&Type of subroutine return\\
-DW\-\_AT\-\_upper\-\_bound
+\livetarg{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
&Upper bound of subrange\\
-DW\-\_AT\-\_use\-\_location
+\livetarg{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
&Member location for pointer to member type\\
-DW\-\_AT\-\_use\-\_UTF8
+\livetarg{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
&Compilation unit uses UTF\dash 8 strings \\
-DW\-\_AT\-\_variable\-\_parameter
+\livetarg{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
&Non\dash constant parameter flag \\
-DW\-\_AT\-\_virtuality
+\livetarg{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
&Virtuality indication \\
&Virtuality of base class \\
&Virtuality of function \\
-DW\-\_AT\-\_visibility
+\livetarg{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
&Visibility of declaration\\
-DW\-\_AT\-\_vtable\-\_elem\-\_location
+\livetarg{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
&Virtual function vtable slot\\
\end{longtable}
it will be important for consumers of that information to
quickly scan chains of sibling entries, while ignoring the
children of individual siblings, that producer may attach a
-DW\-\_AT\-\_sibling attribute to any debugging information entry.
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} attribute to any debugging information entry.
The
value of this attribute is a reference to the sibling entry
of the entry to which the attribute is attached.
\item DW\-\_OP\-\_fbreg \\
The DW\-\_OP\-\_fbreg operation provides a signed LEB128 offset
from the address specified by the location description in the
-DW\-\_AT\-\_frame\-\_base attribute of the current function. (This
+\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute of the current function. (This
is typically a “stack pointer” register plus or minus
some offset. On more sophisticated systems it might be a
location list that adjusts the offset according to changes
evaluation. This operator provides explicit functionality
(especially for arrays involving descriptors) that is analogous
to the implicit push of the base address of a structure prior
-to evaluation of a DW\-\_AT\-\_data\-\_member\-\_location to access a
+to evaluation of a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} to access a
data member of a structure. For an example, see
Appendix \refersec{app:aggregateexamples}.
The DW\-\_OP\-\_call\-\_frame\-\_cfa operation pushes the value of the
CFA, obtained from the Call Frame Information
(see Section \refersec{chap:callframeinformation}).
-Although the value of DW\-\_AT\-\_frame\-\_base
+Although the value of \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}
can be computed using other DWARF expression operators,
in some cases this would require an extensive location list
because the values of the registers used in computing the
These operations transfer
control of DWARF expression evaluation to the
-DW\-\_AT\-\_location
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
attribute of the referenced debugging information entry. If
there is no such attribute, then there is no effect. Execution
-of the DWARF expression of a DW\-\_AT\-\_location attribute may add
+of the DWARF expression of a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute may add
to and/or remove from values on the stack. Execution returns
to the point following the call when the end of the attribute
is reached. Values on the stack at the time of the call may be
DW\-\_OP\-\_fbreg -50
\begin{myindentpara}{1cm}
-Given a DW\-\_AT\-\_frame\-\_base value of ``DW\-\_OP\-\_breg31 64,''this example
+Given a \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} value of ``DW\-\_OP\-\_breg31 64,''this example
computes the address of a local variable that is -50 bytes from a
logical frame pointer that is computed by adding 64 to the current
stack pointer (register 31).
\section{Types of Program Entities}
\label{chap:typesofprogramentities}
Any debugging information entry describing a declaration that
-has a type has a DW\-\_AT\-\_type attribute, whose value is a
+has a type has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, whose value is a
reference to another debugging information entry. The entry
referenced may describe a base type, that is, a type that is
not defined in terms of other data types, or it may describe a
Alternatively, the entry referenced may describe a type
modifier, such as constant, packed, pointer, reference or
volatile, which in turn will reference another entry describing
-a type or type modifier (using a DW\-\_AT\-\_type attribute of its
+a type or type modifier (using a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute of its
own). See
Section \refersec{chap:typeentries}
for descriptions of the entries describing
entity. The accessibility specifies which classes of other
program objects are permitted access to the object in question.}
-The accessibility of a declaration is represented by a DW\-\_AT\-\_accessibility attribute, whose
+The accessibility of a declaration is represented by a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} attribute, whose
value is a constant drawn from the set of codes listed in Figure
\ref{fig:accessibilitycodes}.
declared.}
The visibility of a declaration is represented
-by a DW\-\_AT\-\_visibility attribute, whose value is a
+by a \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute, whose value is a
constant drawn from the set of codes listed in
Figure \ref{fig:visibilitycodes}.
member functions and for virtual base classes.}
The virtuality of a declaration is represented by a
-DW\-\_AT\-\_virtuality attribute, whose value is a constant drawn
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute, whose value is a constant drawn
from the set of codes listed in
Figure \ref{fig:virtualitycodes}.
Any debugging information entry representing the
declaration of an object or type artificially generated by
a compiler and not explicitly declared by the source program
-may have a DW\-\_AT\-\_artificial attribute, which is a flag.
+may have a \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} attribute, which is a flag.
\section{Segmented Addresses}
\label{chap:segmentedaddresses}
Any debugging information entry that contains a description
of the location of an object or subroutine may have
-a DW\-\_AT\-\_segment attribute, whose value is a location
+a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, whose value is a location
description. The description evaluates to the segment selector
of the item being described. If the entry containing the
-DW\-\_AT\-\_segment attribute has a DW\-\_AT\-\_low\-\_pc, DW\-\_AT\-\_high\-\_pc,
-DW\-\_AT\-\_ranges or DW\-\_AT\-\_entry\-\_pc attribute, or a location
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}, \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc},
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} or \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute, or a location
description that evaluates to an address, then those address
values represent the offset portion of the address within
-the segment specified by DW\-\_AT\-\_segment.
+the segment specified by \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}.
-If an entry has no DW\-\_AT\-\_segment attribute, it inherits
+If an entry has no \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, it inherits
the segment value from its parent entry. If none of the
entries in the chain of parents for this entry back to
-its containing compilation unit entry have DW\-\_AT\-\_segment
+its containing compilation unit entry have \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
attributes, then the entry is assumed to exist within a flat
-address space. Similarly, if the entry has a DW\-\_AT\-\_segment
+address space. Similarly, if the entry has a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
attribute containing an empty location description, that
entry is assumed to exist within a flat address space.
Any debugging information entry representing a pointer or
reference type or a subroutine or subroutine type may have
-a DW\-\_AT\-\_address\-\_class attribute, whose value is an integer
+a \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} attribute, whose value is an integer
constant. The set of permissible values is specific to
each target architecture. The value DW\-\_ADDR\-\_none, however,
is common to all encodings, and means that no address class
Any debugging information entry representing the
declaration of an object, module, subprogram or type may have
-DW\-\_AT\-\_decl\-\_file, DW\-\_AT\-\_decl\-\_line and DW\-\_AT\-\_decl\-\_column
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} and \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
attributes each of whose value is an unsigned integer constant.
-The value of the DW\-\_AT\-\_decl\-\_file attribute corresponds to
+The value of the \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} attribute corresponds to
a file number from the line number information table for the
compilation unit containing the debugging information entry and
represents the source file in which the declaration appeared
(see Section 6.2). The value 0 indicates that no source file
has been specified.
-The value of the DW\-\_AT\-\_decl\-\_line attribute represents
+The value of the \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} attribute represents
the source line number at which the first character of
the identifier of the declared object appears. The value 0
indicates that no source line has been specified.
-The value of the DW\-\_AT\-\_decl\-\_column attribute represents
+The value of the \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attribute represents
the source column number at which the first character of
the identifier of the declared object appears. The value 0
indicates that no column has been specified.
\section{Identifier Names}
\label{chap:identifiernames}
Any debugging information entry representing a program entity
-that has been given a name may have a DW\-\_AT\-\_name attribute,
+that has been given a name may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
whose value is a string representing the name as it appears in
the source program. A debugging information entry containing
no name attribute, or containing a name attribute whose value
names as they appear in the source program, implementations
of language translators that use some form of mangled name
(as do many implementations of C++) should use the unmangled
-form of the name in the DWARF DW\-\_AT\-\_name attribute,
+form of the name in the DWARF \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
including the keyword operator (in names such as “operator
+”), if present. See also
Section \refersec{chap:linkagenames} regarding the use
-of DW\-\_AT\-\_linkage\-\_name for mangled names. Sequences of
+of \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} for mangled names. Sequences of
multiple whitespace characters may be compressed.}
\section{Data Locations and DWARF Procedures}
Any debugging information entry describing a data object (which
includes variables and parameters) or common block may have a
-DW\-\_AT\-\_location attribute, whose value is a location description
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value is a location description
(see Section 2.6).
A DWARF procedure is represented by any
-kind of debugging information entry that has a DW\-\_AT\-\_location
+kind of debugging information entry that has a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
attribute. If a suitable entry is not otherwise available,
a DWARF procedure can be represented using a debugging
information entry with the
tag \livetarg{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}
-together with a DW\-\_AT\-\_location attribute.
+together with a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute.
A DWARF procedure
is called by a DW\-\_OP\-\_call2,
the like, may have
\begin{itemize}
-\item A DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of
+\item A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
attributes for a single contiguous range of
addresses, or
-\item A DW\-\_AT\-\_ranges attribute for a non-contiguous range of addresses.
+\item A \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute for a non-contiguous range of addresses.
\end{itemize}
In addition, a non-contiguous range of
addresses may also be specified for the
-DW\-\_AT\-\_start\-\_scope attribute.
+\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute.
If an entity has no associated machine code,
none of these attributes are specified.
\subsection{Single Address}
When there is a single address associated with an entity,
such as a label or alternate entry point of a subprogram,
-the entry has a DW\-\_AT\-\_low\-\_pc attribute whose value is the
-relocated address for the entity. While the DW\-\_AT\-\_entry\-\_pc
+the entry has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute whose value is the
+relocated address for the entity. While the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
attribute might also seem appropriate for this purpose,
-historically the DW\-\_AT\-\_low\-\_pc attribute was used before the
-DW\-\_AT\-\_entry\-\_pc was introduced (in DWARF Version 3). There is
+historically the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute was used before the
+\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} was introduced (in DWARF Version 3). There is
insufficient reason to change this.
\subsection{Continuous Address Range}
\label{chap:contiguousaddressranges}
When the set of addresses of a debugging information entry can
be described as a single continguous range, the entry may have
-a DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of attributes. The value
-of the DW\-\_AT\-\_low\-\_pc attribute is the relocated address of the
+a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes. The value
+of the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute is the relocated address of the
first instruction associated with the entity. If the value of
-the DW\-\_AT\-\_high\-\_pc is of class address, it is the relocated
+the \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} is of class address, it is the relocated
address of the first location past the last instruction
associated with the entity; if it is of class constant, the
value is an unsigned integer offset which when added to the
\label{chap:noncontiguousaddressranges}
When the set of addresses of a debugging information entry
cannot be described as a single contiguous range, the entry has
-a DW\-\_AT\-\_ranges attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
+a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
and indicates the beginning of a range list. Similarly,
-a DW\-\_AT\-\_start\-\_scope attribute may have a value of class
+a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute may have a value of class
\livelink{chap:rangelistptr}{rangelistptr} for the same reason.
Range lists are contained
in a separate object file section called .debug\_ranges. A
-range list is indicated by a DW\-\_AT\-\_ranges attribute whose
+range list is indicated by a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose
value is represented as an offset from the beginning of the
.debug\_ranges section to the beginning of the range list.
Any debugging information entry describing an entity that has
a range of code addresses, which includes compilation units,
module initialization, subroutines, ordinary blocks, try/catch
-blocks, and the like, may have a DW\-\_AT\-\_entry\-\_pc attribute to
+blocks, and the like, may have a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute to
indicate the first executable instruction within that range
-of addresses. The value of the DW\-\_AT\-\_entry\-\_pc attribute is a
-relocated address. If no DW\-\_AT\-\_entry\-\_pc attribute is present,
+of addresses. The value of the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute is a
+relocated address. If no \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute is present,
then the entry address is assumed to be the same as the
-value of the DW\-\_AT\-\_low\-\_pc attribute, if present; otherwise,
+value of the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute, if present; otherwise,
the entry address is unknown.
\section{Static and Dynamic Values of Attributes}
}
\textit{The applicable attributes include:
-DW\-\_AT\-\_allocated,
-DW\-\_AT\-\_associated,
-DW\-\_AT\-\_bit\-\_offset,
-DW\-\_AT\-\_bit\-\_size,
-DW\-\_AT\-\_byte\-\_size,
-DW\-\_AT\-\_count,
-DW\-\_AT\-\_lower\-\_bound,
-DW\-\_AT\-\_byte\-\_stride,
-DW\-\_AT\-\_bit\-\_stride,
-DW\-\_AT\-\_upper\-\_bound (and
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated},
+\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated},
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size},
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count},
+\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound},
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride},
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride},
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound} (and
possibly others).}
``access typename'' parameters. }
Generally, any debugging information
-entry that has, or may have, a DW\-\_AT\-\_name attribute, may
-also have a DW\-\_AT\-\_description attribute whose value is a
+entry that has, or may have, a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, may
+also have a \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute whose value is a
null-terminated string providing a description of the entity.
\label{chap:byteandbitsizes}
% Some trouble here with hbox full, so we try optional word breaks.
Many debugging information entries allow either a
-DW\-\_AT\-\_byte\-\_size attribute or a DW\-\_AT\-\_bit\-\_size attribute,
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute,
whose integer constant value
(see \refersec{chap:staticanddynamicvaluesofattributes})
specifies an
-amount of storage. The value of the DW\-\_AT\-\_byte\-\_size attribute
-is interpreted in bytes and the value of the DW\-\_AT\-\_bit\-\_size
+amount of storage. The value of the \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute
+is interpreted in bytes and the value of the \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
attribute is interpreted in bits.
Similarly, the integer
-constant value of a DW\-\_AT\-\_byte\-\_stride attribute is interpreted
-in bytes and the integer constant value of a DW\-\_AT\-\_bit\-\_stride
+constant value of a \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} attribute is interpreted
+in bytes and the integer constant value of a \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
attribute is interpreted in bits.
\section{Linkage Names}
% Some trouble maybe with hbox full, so we try optional word breaks.
A debugging
-information entry may have a DW\-\_AT\-\_linkage\-\_name attribute
+information entry may have a \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute
whose value is a null-terminated string describing the object
file linkage name associated with the corresponding entity.
% Some trouble here with hbox full, so we try optional word breaks.
-\textit{Debugging information entries to which DW\-\_AT\-\_linkage\-\_name
+\textit{Debugging information entries to which \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name}
may apply include: \livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}, \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant},
\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}, \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
and \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}.
occupy a whole number of bytes.
\item Add a new attribute form for section offsets, DW\-\_FORM\-\_sec\-\_offset, to replace the use
of DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 for section offsets.
-\item Add an attribute, DW\-\_AT\-\_main\-\_subprogram, to identify the main subprogram of a
+\item Add an attribute, \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}, to identify the main subprogram of a
program.
\item Define default array lower bound values for each supported language.
\item Add a new technique using separate type units, type signatures and COMDAT sections to
beginning of the compilation unit corresponding to the current
set to the debugging information entry for the given object,
followed by a null\dash terminated character string representing
-the name of the object as given by the DW\-\_AT\-\_name attribute
+the name of the object as given by the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
of the referenced debugging information entry. Each set of
names is terminated by an offset field containing zero (and
no following string).
In the case of the name of a function member or static data
member of a C++ structure, class or union, the name presented
in the .debug\_pubnames section is not the simple name given
-by the DW\-\_AT\-\_name attribute of the referenced debugging
+by the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute of the referenced debugging
information entry, but rather the fully qualified name of
the data or function member.
path name of a source file. If the entry contains a file
name or relative path name, the file is located relative
to either the compilation directory (as specified by the
-DW\-\_AT\-\_comp\-\_dir attribute given in the compilation unit) or one
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} attribute given in the compilation unit) or one
of the directories listed in the include\_directories section.
\item An unsigned LEB128 number representing the directory
names that represent full path names.
The primary source file is described by an entry whose path
-name exactly matches that given in the DW\-\_AT\-\_name attribute
+name exactly matches that given in the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
in the compilation unit, and whose directory is understood
to be given by the implicit entry with index 0.
path name of a source file. If the entry contains a file
name or a relative path name, the file is located relative
to either the compilation directory (as specified by the
-DW\-\_AT\-\_comp\-\_dir attribute given in the compilation unit)
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} attribute given in the compilation unit)
or one of the directories in the include\_directories section.
\item An unsigned LEB128 number representing the directory index
path names.
The primary source file is described by an entry whose path
-name exactly matches that given in the DW\-\_AT\-\_name attribute
+name exactly matches that given in the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
in the compilation unit, and whose directory index is 0. The
files are numbered, starting at 1, in the order in which they
appear; the names in the header come before names defined by
Compilation unit entries may have the following attributes:
\begin{enumerate}[1]
-\item Either a DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of
-attributes or a DW\-\_AT\-\_ranges attribute whose values encode the
+\item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
+attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose values encode the
contiguous or non\dash contiguous address ranges, respectively,
of the machine instructions generated for the compilation
unit (see Section {chap:codeaddressesandranges}).
-A DW\-\_AT\-\_low\-\_pc attribute may also
-be specified in combination with DW\-\_AT\-\_ranges to specify the
+A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute may also
+be specified in combination with \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} to specify the
default base address for use in location lists (see Section
\refersec{chap:locationlists}) and range lists
(see Section \refersec{chap:noncontiguousaddressranges}).
-\item A DW\-\_AT\-\_name attribute whose value is a null\dash terminated
+\item A \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated
string containing the full or relative path name of the primary
source file from which the compilation unit was derived.
-\item A DW\-\_AT\-\_language attribute whose constant value is an
+\item A \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} attribute whose constant value is an
integer code indicating the source language of the compilation
unit. The set of language names and their meanings are given
in
\end{tabular}
\end{figure}
-\item A DW\-\_AT\-\_stmt\-\_list attribute whose value is a section
+\item A \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} attribute whose value is a section
offset to the line number information for this compilation
unit. This information is placed in a separate object file
section from the debugging information entries themselves. The
information for this compilation unit
(see Section \refersec{chap:linenumberinformation}).
-\item A DW\-\_AT\-\_macro\-\_info attribute whose value is a section
+\item A \livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} attribute whose value is a section
offset to the macro information for this compilation unit.
This information is placed in a separate object file section
from the debugging information entries themselves. The
information for this compilation unit
(see Section \refersec{chap:macroinformation}).
-\item A DW\-\_AT\-\_comp\-\_dir attribute whose value is a
+\item A \livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} attribute whose value is a
null\dash terminated string containing the current working directory
of the compilation command that produced this compilation
unit in whatever form makes sense for the host system.
-\item A DW\-\_AT\-\_producer attribute whose value is a null\dash
+\item A \livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} attribute whose value is a null\dash
terminated string containing information about the compiler
that produced the compilation unit. The actual contents of
the string will be specific to each producer, but should
with other producer values.
-\item A DW\-\_AT\-\_identifier\-\_case attribute whose integer
+\item A \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} attribute whose integer
constant value is a code describing the treatment
of identifiers within this compilation unit. The
set of identifier case codes is given in Figure
DW\-\_ID\-\_case\-\_sensitive is the default for all compilation units
that do not have this attribute. It indicates that names given
-as the values of DW\-\_AT\-\_name attributes in debugging information
+as the values of \livelink{chap:DWATname}{DW\-\_AT\-\_name} attributes in debugging information
entries for the compilation unit reflect the names as they
appear in the source program. The debugger should be sensitive
to the case of identifier names when doing identifier lookups.
program but that a case insensitive lookup should be used to
access those names.
-\item A DW\-\_AT\-\_base\-\_types attribute whose value is a reference.
+\item A \livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types} attribute whose value is a reference.
This attribute points to a debugging information entry
representing another compilation unit. It may be used
contain such definitions. This allows a consumer, for example,
to interpret a type conversion to a base type correctly.
-\item A DW\-\_AT\-\_use\-\_UTF8 attribute, which is a flag whose
+\item A \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute, which is a flag whose
presence indicates that all strings (such as the names of
declared entities in the source program) are represented
using the UTF\dash 8 representation
(see Section \refersec{datarep:attributeencodings}).
-\item A DW\-\_AT\-\_main\-\_subprogram attribute, which is a flag
+\item A \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} attribute, which is a flag
whose presence indicates that the compilation unit contains a
subprogram that has been identified as the starting function
of the program. If more than one compilation unit contains
\end{enumerate}
The base address of a compilation unit is defined as the
-value of the DW\-\_AT\-\_low\-\_pc attribute, if present; otherwise,
+value of the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute, if present; otherwise,
it is undefined. If the base address is undefined, then any
DWARF entry or structure defined in terms of the base address
of that compilation unit is not valid.
represented by a debugging information entry with the
tag \livetarg{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}.
An imported unit entry contains a
-DW\-\_AT\-\_import attribute whose value is a reference to the
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute whose value is a reference to the
normal or partial compilation unit whose declarations logically
belong at the place of the imported unit entry.
type, plus additional debugging information entries that may
be necessary to include as part of the definition of the type.
-A type unit entry may have a DW\-\_AT\-\_language attribute, whose
+A type unit entry may have a \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} attribute, whose
constant value is an integer code indicating the source
language used to define the type. The set of language names
and their meanings are given in Figure \refersec{fig:languagenames}.
\label{chap:moduleentries}
\textit{Several languages have the concept of a ``module.''
A Modula\dash 2 definition module may be represented by a module
-entry containing a declaration attribute (DW\-\_AT\-\_declaration). A
+entry containing a declaration attribute (\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}). A
Fortran 90 module may also be represented by a module entry
(but no declaration attribute is warranted because Fortran
has no concept of a corresponding module body).}
debugging information entries describing program entities
whose declaration scopes end at the end of the module itself.
-If the module has a name, the module entry has a DW\-\_AT\-\_name
+If the module has a name, the module entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name}
attribute whose value is a null\dash terminated string containing
the module name as it appears in the source program.
-The module entry may have either a DW\-\_AT\-\_low\-\_pc and
-DW\-\_AT\-\_high\-\_pc pair of attributes or a DW\-\_AT\-\_ranges attribute
+The module entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
whose values encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated for
the module initialization code
(see Section \refersec{chap:codeaddressesandranges}).
It may also
-have a DW\-\_AT\-\_entry\-\_pc attribute whose value is the address of
+have a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute whose value is the address of
the first executable instruction of that initialization code
(see Section \refersec{chap:entryaddress}).
If the module has been assigned a priority, it may have a
-DW\-\_AT\-\_priority attribute. The value of this attribute is a
+\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority} attribute. The value of this attribute is a
reference to another debugging information entry describing
a variable with a constant value. The value of this variable
is the actual constant value of the module’s priority,
tag \livetarg{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}.
A namespace extension is
represented by a \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry
-with a DW\-\_AT\-\_extension
+with a \livelink{chap:DWATextension}{DW\-\_AT\-\_extension}
attribute referring to the previous extension, or if there
is no previous extension, to the original
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
information in a previous extension entry of the namespace
nor need it duplicate information in the original namespace
entry. (Thus, for a namespace with a name,
-a DW\-\_AT\-\_name
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name}
attribute need only be attached directly to the original
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry.)
If a type, variable, or function declared in a namespace is
defined outside of the body of the namespace declaration,
that type, variable, or function definition entry has a
-DW\-\_AT\-\_specification attribute whose value is a reference to the
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute whose value is a reference to the
debugging information entry representing the declaration of
the type, variable or function. Type, variable, or function
-entries with a DW\-\_AT\-\_specification attribute do not need
+entries with a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need
to duplicate information provided by the declaration entry
referenced by the specification attribute.
When an overloaded entity
is imported, there is one imported declaration entry for
each overloading. Each imported declaration entry has a
-DW\-\_AT\-\_import attribute, whose value is a reference to the
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute, whose value is a reference to the
debugging information entry representing the declaration that
is being imported.
-An imported declaration may also have a DW\-\_AT\-\_name attribute
+An imported declaration may also have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
whose value is a null\dash terminated string containing the
name, as it appears in the source program, by which the
imported entity is to be known in the context of the imported
information entry with the
tag \livetarg{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}.
An
-imported module entry contains a DW\-\_AT\-\_import attribute
+imported module entry contains a \livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute
whose value is a reference to the module or namespace entry
containing the definition and/or declaration entries for
the entities that are to be imported into the context of the
\subsection{General Subroutine and Entry Point Information}
\label{chap:generalsubroutineandentrypointinformation}
-It may also have a DW\-\_AT\-\_linkage\-\_name attribute as
+It may also have a \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute as
described in Section \refersec{chap:linkagenames}.
If the name of the subroutine described by an entry with the
tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} is visible outside of its containing
-compilation unit, that entry has a DW\-\_AT\-\_external attribute,
+compilation unit, that entry has a \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} attribute,
which is a flag.
\textit{Additional attributes for functions that are members of a
Section \refersec{chap:memberfunctionentries}.
}
-A subroutine entry may contain a DW\-\_AT\-\_main\-\_subprogram
+A subroutine entry may contain a \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}
attribute which is a flag whose presence indicates that the
subroutine has been identified as the starting function of
the program. If more than one subprogram contains this flag,
and will therefore not be safe to call from within a debugger.
}
-A subroutine entry may contain a DW\-\_AT\-\_calling\-\_convention
+A subroutine entry may contain a \livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}
attribute, whose value is an integer constant. The set of
calling convention codes is given in
Figure \refersec{fig:callingconventioncodes}.
A subroutine entry declared with a function prototype style
declaration may have a
-DW\-\_AT\-\_prototyped attribute, which is
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
a flag.
\textit{The Fortran language allows the keywords elemental, pure
and recursive to be included as part of the declaration of
a subroutine; these attributes reflect that usage. These
attributes are not relevant for languages that do not support
-similar keywords or syntax. In particular, the DW\-\_AT\-\_recursive
+similar keywords or syntax. In particular, the \livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}
attribute is neither needed nor appropriate in languages such
as C where functions support recursion by default.
}
-A subprogram entry may have a DW\-\_AT\-\_elemental attribute, which
+A subprogram entry may have a \livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental} attribute, which
is a flag. The attribute indicates whether the subroutine
or entry point was declared with the ``elemental'' keyword
or property.
-A subprogram entry may have a DW\-\_AT\-\_pure attribute, which is
+A subprogram entry may have a \livelink{chap:DWATpure}{DW\-\_AT\-\_pure} attribute, which is
a flag. The attribute indicates whether the subroutine was
declared with the ``pure'' keyword or property.
-A subprogram entry may have a DW\-\_AT\-\_recursive attribute, which
+A subprogram entry may have a \livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive} attribute, which
is a flag. The attribute indicates whether the subroutine
or entry point was declared with the ``recursive'' keyword
or property.
\label{chap:subroutineandentrypointreturntypes}
If the subroutine or entry point is a function that returns a
-value, then its debugging information entry has a DW\-\_AT\-\_type
+value, then its debugging information entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
attribute to denote the type returned by that function.
\textit{Debugging information entries for C void functions should
\subsection{Subroutine and Entry Point Locations}
\label{chap:subroutineandentrypointlocations}
-A subroutine entry may have either a DW\-\_AT\-\_low\-\_pc and
-DW\-\_AT\-\_high\-\_pc pair of attributes or a DW\-\_AT\-\_ranges attribute
+A subroutine entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
whose values encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated
for the subroutine (see
Section \refersec{chap:codeaddressesandranges}).
-A subroutine entry may also have a DW\-\_AT\-\_entry\-\_pc attribute
+A subroutine entry may also have a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute
whose value is the address of the first executable instruction
of the subroutine (see
Section \refersec{chap:entryaddress}).
-An entry point has a DW\-\_AT\-\_low\-\_pc attribute whose value is the
+An entry point has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute whose value is the
relocated address of the first machine instruction generated
for the entry point.
-\textit{While the DW\-\_AT\-\_entry\-\_pc attribute might also seem appropriate
-for this purpose, historically the DW\-\_AT\-\_low\-\_pc attribute
-was used before the DW\-\_AT\-\_entry\-\_pc was introduced (in DWARF
+\textit{While the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute might also seem appropriate
+for this purpose, historically the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute
+was used before the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} was introduced (in DWARF
Version 3). There is insufficient reason to change this.}
-Subroutines and entry points may also have DW\-\_AT\-\_segment and
-DW\-\_AT\-\_address\-\_class attributes, as appropriate, to specify
+Subroutines and entry points may also have \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} and
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class} attributes, as appropriate, to specify
which segments the code for the subroutine resides in and
the addressing mode to be used in calling that subroutine.
tag \livetarg{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}.
The
common inclusion entry has a
-DW\-\_AT\-\_common\-\_reference attribute
+\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference} attribute
whose value is a reference to the debugging information entry
for the common block being included
(see Section \refersec{chap:commonblockentries}).
\subsection{Low-Level Information}
\label{chap:lowlevelinformation}
-A subroutine or entry point entry may have a DW\-\_AT\-\_return\-\_addr
+A subroutine or entry point entry may have a \livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
attribute, whose value is a location description. The location
calculated is the place where the return address for the
subroutine or entry point is stored.
A subroutine or entry point entry may also have a
-DW\-\_AT\-\_frame\-\_base attribute, whose value is a location
+\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute, whose value is a location
description that computes the “frame base” for the
subroutine or entry point. If the location description is
a simple register location description, the given register
\textit{The frame base for a procedure is typically an address fixed
relative to the first unit of storage allocated for the
-procedure’s stack frame. The DW\-\_AT\-\_frame\-\_base attribute
+procedure’s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
can be used in several ways:}
\begin{enumerate}[1.]
\item \textit{In procedures that need location lists to locate local
-variables, the DW\-\_AT\-\_frame\-\_base can hold the needed location
+variables, the \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} can hold the needed location
list, while all variables’ location descriptions can be
simpler ones involving the frame base.}
\item \textit{It can be used in resolving ``up\dash level'' addressing
within nested routines.
-(See also DW\-\_AT\-\_static\-\_link, below)}
+(See also \livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}, below)}
%The -See also- here is ok, the DW\-\_AT should be
%a hyperref to the def itself, which is earlier in this document.
\end{enumerate}
\textit{Some languages support nested subroutines. In such languages,
it is possible to reference the local variables of an
outer subroutine from within an inner subroutine. The
-DW\-\_AT\-\_static\-\_link and DW\-\_AT\-\_frame\-\_base attributes allow
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} and \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attributes allow
debuggers to support this same kind of referencing.}
If a subroutine or entry point is nested, it may have a
-DW\-\_AT\-\_static\-\_link attribute, whose value is a location
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} attribute, whose value is a location
description that computes the frame base of the relevant
instance of the subroutine that immediately encloses the
subroutine or entry point.
In the context of supporting nested subroutines, the
-DW\-\_AT\-\_frame\-\_base attribute value should obey the following
+\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute value should obey the following
constraints:
\begin{enumerate}[1.]
life of the procedure, and
\item The computed value should be unique among instances of
-the same subroutine. (For typical DW\-\_AT\-\_frame\-\_base use, this
+the same subroutine. (For typical \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} use, this
means that a recursive subroutine’s stack frame must have
non\dash zero size.)
\end{enumerate}
\textit{If a debugger is attempting to resolve an up\dash level reference
to a variable, it uses the nesting structure of DWARF to
determine which subroutine is the lexical parent and the
-DW\-\_AT\-\_static\-\_link value to identify the appropriate active
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} value to identify the appropriate active
frame of the parent. It can then attempt to find the reference
within the context of the parent.}
\livetarg{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}.
Each such entry is a child of the entry
representing the subroutine that may throw this type. Each
-thrown type entry contains a DW\-\_AT\-\_type attribute, whose
+thrown type entry contains a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, whose
value is a reference to an entry describing the type of the
exception that may be thrown.
entry with the
tag \livetarg{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}.
Each
-such entry has a DW\-\_AT\-\_name attribute, whose value is a
+such entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a
null\dash terminated string containing the name of the formal
type parameter as it appears in the source program. The
-template type parameter entry also has a DW\-\_AT\-\_type attribute
+template type parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
describing the actual type by which the formal is replaced
for this instantiation.
tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}. The entry for a subroutine that is
explicitly declared to be available for inline expansion or
that was expanded inline implicitly by the compiler has a
-DW\-\_AT\-\_inline attribute whose value is an integer constant. The
-set of values for the DW\-\_AT\-\_inline attribute is given in
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is an integer constant. The
+set of values for the \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute is given in
Figure \refersec{fig:inlinecodes}.
\begin{figure}[here]
Name&Meaning\\ \hline
DW\-\_INL\-\_not\-\_inlined & Not delared inline nor inlined by the
compiler(equivalent to the absense of the containing
- DW\-\_AT\-\_linline attribute) \\
+ \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute) \\
DW\-\_INL\-\_inlined & Not declared inline but inlined by the compiler \\
DW\-\_INL\-\_declared\-\_not\-\_inlined & Declared inline but
not inlined by the compiler \\
constexpr is implicitly declared inline. The abstract inline
instance (see below) is represented by a debugging information
entry with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}. Such an entry has a
-DW\-\_AT\-\_inline attribute whose value is DW\-\_INL\-\_inlined.}
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is DW\-\_INL\-\_inlined.}
\paragraph{Abstract Instances}
\label{chap:abstractinstances}
Any debugging information entry that is owned (either
directly or indirectly) by a debugging information entry
-that contains the DW\-\_AT\-\_inline attribute is referred to
+that contains the \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute is referred to
as an “abstract instance entry.” Any subroutine entry
-that contains a DW\-\_AT\-\_inline attribute whose value is other
+that contains a \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is other
than DW\-\_INL\-\_not\-\_inlined is known as an “abstract instance
root.” Any set of abstract instance entries that are all
children (either directly or indirectly) of some abstract
Each abstract instance root is either part of a larger
tree (which gives a context for the root) or uses
-DW\-\_AT\-\_specification to refer to the declaration in context.
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} to refer to the declaration in context.
\textit{For example, in C++ the context might be a namespace
declaration or a class declaration.}
instance tree should not contain any attributes which describe
aspects of the subroutine which vary between distinct inlined
expansions or distinct out\dash of\dash line expansions. For example,
-the DW\-\_AT\-\_low\-\_pc,
-DW\-\_AT\-\_high\-\_pc, DW\-\_AT\-\_ranges,
-DW\-\_AT\-\_entry\-\_pc, DW\-\_AT\-\_location,
-DW\-\_AT\-\_return\-\_addr, DW\-\_AT\-\_start\-\_scope, and
-DW\-\_AT\-\_segment
+the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc},
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}, \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges},
+\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}, \livelink{chap:DWATlocation}{DW\-\_AT\-\_location},
+\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}, \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}, and
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
attributes typically should be omitted; however, this list
is not exhaustive.
child of the entry that represents the scope within which
the inlining occurs.
-Each inlined subroutine entry may have either a DW\-\_AT\-\_low\-\_pc
-and DW\-\_AT\-\_high\-\_pc pair of attributes or a DW\-\_AT\-\_ranges
+Each inlined subroutine entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}
+and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}
attribute whose values encode the contiguous or non\dash contiguous
address ranges, respectively, of the machine instructions
generated for the inlined subroutine (see
Section \refersec{chap:codeaddressesandranges}). An
-inlined subroutine entry may also contain a DW\-\_AT\-\_entry\-\_pc
+inlined subroutine entry may also contain a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
attribute, representing the first executable instruction of
the inline expansion (see
Section \refersec{chap:entryaddress}).
-An inlined subroutine entry may also have DW\-\_AT\-\_call\-\_file,
-DW\-\_AT\-\_call\-\_line and DW\-\_AT\-\_call\-\_column attributes,
+An inlined subroutine entry may also have \livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file},
+\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line} and \livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column} attributes,
each of whose
value is an integer constant. These attributes represent the
source file, source line number, and source column number,
describe the coordinates of the subroutine declaration that
was inlined, rather they describe the coordinates of the call.
-An inlined subroutine entry may have a DW\-\_AT\-\_const\-\_expr
+An inlined subroutine entry may have a \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
attribute, which is a flag whose presence indicates that the
subroutine has been evaluated as a compile\dash time constant. Such
-an entry may also have a DW\-\_AT\-\_const\-\_value attribute,
+an entry may also have a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute,
whose value may be of any form that is appropriate for the
representation of the subroutine's return value. The value of
this attribute is the actual return value of the subroutine,
\textit{In C++, if a function or a constructor declared with constexpr
is called with constant expressions, then the corresponding
-concrete inlined instance has a DW\-\_AT\-\_const\-\_expr attribute,
-as well as a DW\-\_AT\-\_const\-\_value attribute whose value represents
+concrete inlined instance has a \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} attribute,
+as well as a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute whose value represents
the actual return value of the concrete inlined instance.}
Any debugging information entry that is owned (either
the abstract instance) and need include only attributes that
are specific to the concrete instance (but omitted in the
abstract instance). In place of these omitted attributes, each
-concrete inlined instance entry has a DW\-\_AT\-\_abstract\-\_origin
+concrete inlined instance entry has a \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}
attribute that may be used to obtain the missing information
(indirectly) from the associated abstract instance entry. The
value of the abstract origin attribute is a reference to the
origin attribute.
For each pair of entries that are associated via a
-DW\-\_AT\-\_abstract\-\_origin attribute, both members of the pair
+\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} attribute, both members of the pair
have the same tag. So, for example, an entry with the tag
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable} can only be associated with another entry
that also has the tag \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}. The only exception
\begin{enumerate}[1.]
\item An entry in the concrete instance tree may be omitted if
-it contains only a DW\-\_AT\-\_abstract\-\_origin attribute and either
+it contains only a \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} attribute and either
has no children, or its children are omitted. Such entries
would provide no useful information. In C\dash like languages,
such entries frequently include types, including structure,
\item Entries in the concrete instance tree which are associated
with entries in the abstract instance tree such that neither
-has a DW\-\_AT\-\_name attribute, and neither is referenced by
+has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, and neither is referenced by
any other debugging information entry, may be omitted. This
may happen for debugging information entries in the abstract
instance trees that became unnecessary in the concrete instance
to describe new entities that are specific to a particular
inlined expansion. In that case, they will not have associated
entries in the abstract instance tree, should not contain
-DW\-\_AT\-\_abstract\-\_origin attributes, and must contain all their
+\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin} attributes, and must contain all their
own attributes directly. This allows an abstract instance tree
to omit debugging information entries for anonymous entities
that are unlikely to be needed in most inlined expansions. In
of an inlined subroutine is essentially the same as for a
concrete inlined instance of that subroutine (as described in
the preceding section). The representation of such a concrete
-out\dash of\dash line instance makes use of DW\-\_AT\-\_abstract\-\_origin
+out\dash of\dash line instance makes use of \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}
attributes in exactly the same way as they are used for
a concrete inlined instance (that is, as references to
corresponding entries within the associated abstract instance
A trampoline is represented by a debugging information entry
with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} or \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
-that has a DW\-\_AT\-\_trampoline attribute. The value of that
+that has a \livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline} attribute. The value of that
attribute indicates the target subroutine of the trampoline,
that is, the subroutine to which the trampoline passes
control. (A trampoline entry may but need not also have a
-DW\-\_AT\-\_artificial attribute.)
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} attribute.)
The value of the trampoline attribute may be represented
using any of the following forms, which are listed in order
entry with the
tag \livetarg{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}.
-The lexical block entry may have either a DW\-\_AT\-\_low\-\_pc and
-DW\-\_AT\-\_high\-\_pc pair of attributes or a DW\-\_AT\-\_ranges attribute
+The lexical block entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
whose values encode the contiguous or non-contiguous address
ranges, respectively, of the machine instructions generated
for the lexical block
If a name has been given to the lexical block in the source
program, then the corresponding lexical block entry has a
-DW\-\_AT\-\_name attribute whose value is a null-terminated string
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null-terminated string
containing the name of the lexical block as it appears in
the source program.
which the name of the label could be legally referenced within
the source program.
-The label entry has a DW\-\_AT\-\_low\-\_pc attribute whose value
+The label entry has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute whose value
is the relocated address of the first machine instruction
generated for the statement identified by the label in
-the source program. The label entry also has a DW\-\_AT\-\_name
+the source program. The label entry also has a \livelink{chap:DWATname}{DW\-\_AT\-\_name}
attribute whose value is a null-terminated string containing
the name of the label as it appears in the source program.
A with statement is represented by a debugging information
entry with the tag \livetarg{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}.
-A with statement entry may have either a DW\-\_AT\-\_low\-\_pc and
-DW\-\_AT\-\_high\-\_pc pair of attributes or a DW\-\_AT\-\_ranges attribute
+A with statement entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
whose values encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated
for the with statement
(see Section \refersec{chap:codeaddressesandranges}).
-The with statement entry has a DW\-\_AT\-\_type attribute, denoting
+The with statement entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, denoting
the type of record whose fields may be referenced without full
qualification within the body of the statement. It also has
-a DW\-\_AT\-\_location attribute, describing how to find the base
+a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, describing how to find the base
address of the record object referenced within the body of
the with statement.
the tag \livetarg{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}.
Both try and catch block entries may have either a
-DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of attributes or a
-DW\-\_AT\-\_ranges attribute whose values encode the contiguous
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose values encode the contiguous
or non- contiguous address ranges, respectively, of the
machine instructions generated for the block (see Section
\refersec{chap:codeaddressesandranges}).
If the scope of the declaration of a named type begins after
the low pc value for the scope most closely enclosing the
-declaration, the declaration may have a DW\-\_AT\-\_start\-\_scope
+declaration, the declaration may have a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
attribute as described for objects in
Section \refersec{chap:dataobjectentries}.
with the tag
\livetarg{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}.
-A base type entry has a DW\-\_AT\-\_name attribute whose value is
+A base type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is
a null\dash terminated string containing the name of the base type
as recognized by the programming language of the compilation
unit containing the base type entry.
-A base type entry has a DW\-\_AT\-\_encoding attribute describing
+A base type entry has a \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute describing
how the base type is encoded and is to be interpreted. The
value of this attribute is an integer constant. The set of
-values and their meanings for the DW\-\_AT\-\_encoding attribute
+values and their meanings for the \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute
is given in
Figure \refersec{fig:encodingattributevalues}
and following text.
A base type entry
-may have a DW\-\_AT\-\_endianity attribute as described in
+may have a \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute as described in
Section \refersec{chap:dataobjectentries}.
If omitted, the encoding assumes the representation that
is the default for the target architecture.
-A base type entry has either a DW\-\_AT\-\_byte\-\_size attribute
-or a DW\-\_AT\-\_bit\-\_size attribute whose integer constant value
+A base type entry has either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute
+or a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute whose integer constant value
(see Section \refersec{chap:byteandbitsizes})
is the amount of storage needed to hold
a value of the type.
If the value of an object of the given type does not fully
occupy the storage described by a byte size attribute,
-the base type entry may also have a DW\-\_AT\-\_bit\-\_size and a
-DW\-\_AT\-\_data\-\_bit\-\_offset attribute, both of whose values are
+the base type entry may also have a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and a
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} attribute, both of whose values are
integer constant values (
see Section \refersec{chap:staticanddynamicvaluesofattributes}).
The bit size
value. If this attribute is omitted a default data bit offset
of zero is assumed.
-\textit{Attribute DW\-\_AT\-\_data\-\_bit\-\_offset is new in DWARF Version 4 and
+\textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} is new in DWARF Version 4 and
is also used for bit field members
(see Section \refersec{chap:datamemberentries}).
It
-replaces the attribute DW\-\_AT\-\_bit\-\_offset when used for base
+replaces the attribute \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} when used for base
types as defined in DWARF V3 and earlier. The earlier attribute
is defined in a manner suitable for bit field members on
big\dash endian architectures but which is wasteful for use on
little\dash endian architectures.}
-\textit{The attribute DW\-\_AT\-\_bit\-\_offset is deprecated in DWARF Version
+\textit{The attribute \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} is deprecated in DWARF Version
4 for use in base types, but implementations may continue to
support its use for compatibility.}
\textit{The DWARF Version 3 definition of these attributes is as follows.}
\begin{myindentpara}{1cm}
-\textit{A base type entry has a DW\-\_AT\-\_byte\-\_size attribute, whose value
+\textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute, whose value
(see Section 2.19) is the size in bytes of the storage unit
used to represent an object of the given type.}
\textit{If the value of an object of the given type does not fully
occupy the storage unit described by the byte size attribute,
-the base type entry may have a DW\-\_AT\-\_bit\-\_size attribute and a
-DW\-\_AT\-\_bit\-\_offset attribute, both of whose values (see Section
+the base type entry may have a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute and a
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute, both of whose values (see Section
2.19) are integers. The bit size attribute describes the actual
size in bits used to represent a value of the given type.
The bit offset attribute describes the offset in bits of the
\begin{itemize}
\item \textit{DW\-\_AT\-\_byte\-\_size}
\item \textit{DW\-\_AT\-\_bit\-\_size}
-\item \textit{DW\-\_AT\-\_byte\-\_size, DW\-\_AT\-\_bit\-\_size
-and optionally DW\-\_AT\-\_data\-\_bit\-\_offset}
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+and optionally \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}}
\end{itemize}
DWARF V3 defines the following combinations:
% FIXME: the figure below interferes with the following
% bullet list, which looks horrible as a result.
\begin{itemize}
\item \textit{DW\-\_AT\-\_byte\-\_size}
-\item \textit{DW\-\_AT\-\_byte\-\_size, DW\-\_AT\-\_bit\-\_size and DW\-\_AT\-\_bit\-\_offset}
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}}
\end{itemize}
\begin{figure}[!here]
represent packed and unpacked decimal string numeric data
types, respectively, either of which may be either signed
or unsigned. These base types are used in combination with
-DW\-\_AT\-\_decimal\-\_sign, DW\-\_AT\-\_digit\-\_count and DW\-\_AT\-\_decimal\-\_scale
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}, \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count} and \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
attributes.
-A DW\-\_AT\-\_decimal\-\_sign attribute is an integer constant that
+A \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute is an integer constant that
conveys the representation of the sign of the decimal type
(see Figure \refersec{fig:decimalsignattributevalues}).
Its integer constant value is interpreted to
leading separate or trailing separate sign representation or,
alternatively, no sign at all.
-The DW\-\_AT\-\_digit\-\_count attribute is an integer constant
+The \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count} attribute is an integer constant
value that represents the number of digits in an instance of
the type.
-The DW\-\_AT\-\_decimal\-\_scale attribute is an integer constant value
+The \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} attribute is an integer constant value
that represents the exponent of the base ten scale factor to
be applied to an instance of the type. A scale of zero puts the
decimal point immediately to the right of the least significant
The DW\-\_ATE\-\_edited base type is used to represent an edited
numeric or alphanumeric data type. It is used in combination
-with an DW\-\_AT\-\_picture\-\_string attribute whose value is a
+with an \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string} attribute whose value is a
null\dash terminated string containing the target\dash dependent picture
string associated with the type.
If the edited base type entry describes an edited numeric
-data type, the edited type entry has a DW\-\_AT\-\_digit\-\_count and a
-DW\-\_AT\-\_decimal\-\_scale attribute. These attributes have the same
+data type, the edited type entry has a \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count} and a
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} attribute. These attributes have the same
interpretation as described for the DW\-\_ATE\-\_packed\-\_decimal and
DW\-\_ATE\-\_numeric\-\_string base types. If the edited type entry
describes an edited alphanumeric data type, the edited type
entry does not have these attributes.
-\textit{The presence or absence of the DW\-\_AT\-\_digit\-\_count and
-DW\-\_AT\-\_decimal\-\_scale attributes allows a debugger to easily
+\textit{The presence or absence of the \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count} and
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} attributes allows a debugger to easily
distinguish edited numeric from edited alphanumeric, although
in principle the digit count and scale are derivable by
interpreting the picture string.}
describe signed and unsigned fixed\dash point binary data types,
respectively.
-The fixed binary type entries have a DW\-\_AT\-\_digit\-\_count
+The fixed binary type entries have a \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
attribute with the same interpretation as described for the
DW\-\_ATE\-\_packed\-\_decimal and DW\-\_ATE\-\_numeric\-\_string base types.
For a data type with a decimal scale factor, the fixed binary
-type entry has a DW\-\_AT\-\_decimal\-\_scale attribute with the same
+type entry has a \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} attribute with the same
interpretation as described for the DW\-\_ATE\-\_packed\-\_decimal
and DW\-\_ATE\-\_numeric\-\_string base types.
For a data type with a binary scale factor, the fixed
-binary type entry has a DW\-\_AT\-\_binary\-\_scale attribute. The
-DW\-\_AT\-\_binary\-\_scale attribute is an integer constant value
+binary type entry has a \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale} attribute. The
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale} attribute is an integer constant value
that represents the exponent of the base two scale factor to
be applied to an instance of the type. Zero scale puts the
binary point immediately to the right of the least significant
bits on the left are not stored in an instance of the type.
For a data type with a non\dash decimal and non\dash binary scale factor,
-the fixed binary type entry has a DW\-\_AT\-\_small attribute which
+the fixed binary type entry has a \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute which
references a \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The scale factor value
is interpreted in accordance with the value defined by the
\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The value represented is the product
of the integer value in memory and the associated constant
entry for the type.
-\textit{The DW\-\_AT\-\_small attribute is defined with the Ada small
+\textit{The \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute is defined with the Ada small
attribute in mind.}
\begin{figure}[here]
the tag \livetarg{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}.
If a name has been given
to the type, then the corresponding unspecified type entry
-has a DW\-\_AT\-\_name attribute whose value is a null\dash terminated
+has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated
string containing the name as it appears in the source program.
The interpretation of this debugging information entry is
If a name has been given to the modified type in the source
program, then the corresponding modified type entry has
-a DW\-\_AT\-\_name attribute whose value is a null-terminated
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null-terminated
string containing the modified type name as it appears in
the source program.
-Each of the type modifier entries has a DW\-\_AT\-\_type attribute,
+Each of the type modifier entries has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute,
whose value is a reference to a debugging information entry
describing a base type, a user-defined type or another type
modifier.
A modified type entry describing a pointer or reference
type (using \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}, \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type} or
-\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type}) may have a DW\-\_AT\-\_address\-\_class
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type}) may have a \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
attribute to describe how objects having the given pointer
or reference type ought to be dereferenced.
A modified type entry describing a shared qualified type
-(using \livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}) may have a DW\-\_AT\-\_count attribute
+(using \livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}) may have a \livelink{chap:DWATcount}{DW\-\_AT\-\_count} attribute
whose value is a constant expressing the blocksize of the
type. If no count attribute is present, then the “infinite”
blocksize is assumed.
A named type that is defined in terms of another type
definition is represented by a debugging information entry with
the tag \livetarg{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}.
-The typedef entry has a DW\-\_AT\-\_name
+The typedef entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name}
attribute whose value is a null-terminated string containing
the name of the typedef as it appears in the source program.
-The typedef entry may also contain a DW\-\_AT\-\_type attribute whose
+The typedef entry may also contain a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose
value is a reference to the type named by the typedef. If
the debugging information entry for a typedef represents
a declaration of the type that is not also a definition,
with the tag \livetarg{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}.
If a name has been given to
the array type in the source program, then the corresponding
-array type entry has a DW\-\_AT\-\_name attribute whose value is a
+array type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a
null-terminated string containing the array type name as it
appears in the source program.
The array type entry describing a multidimensional array may
-have a DW\-\_AT\-\_ordering attribute whose integer constant value is
+have a \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute whose integer constant value is
interpreted to mean either row-major or column-major ordering
of array elements. The set of values and their meanings
for the ordering attribute are listed in
Figure \refersec{fig:arrayordering}.
If no
ordering attribute is present, the default ordering for the
-source language (which is indicated by the DW\-\_AT\-\_language
+source language (which is indicated by the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
attribute of the enclosing compilation unit entry) is assumed.
\begin{figure}[here]
The ordering attribute may optionally appear on one-dimensional
arrays; it will be ignored.
-An array type entry has a DW\-\_AT\-\_type attribute describing
+An array type entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing
the type of each element of the array.
If the amount of storage allocated to hold each element of an
object of the given array type is different from the amount
of storage that is normally allocated to hold an individual
object of the indicated element type, then the array type
-entry has either a DW\-\_AT\-\_byte\-\_stride or a DW\-\_AT\-\_bit\-\_stride
+entry has either a \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} or a \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
attribute, whose value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the size of each
element of the array.
-The array type entry may have either a DW\-\_AT\-\_byte\-\_size or a
-DW\-\_AT\-\_bit\-\_size attribute
+The array type entry may have either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or a
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
(see Section \refersec{chap:byteandbitsizes}),
whose value is the
amount of storage needed to hold an instance of the array type.
multidimensional array.
Other attributes especially applicable to arrays are
-DW\-\_AT\-\_allocated, DW\-\_AT\-\_associated and DW\-\_AT\-\_data\-\_location,
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}, \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} and \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location},
which are described in
Section \refersec{chap:dynamictypeproperties}.
For relevant examples,
respectively. If a name has been given to the structure,
union, or class in the source program, then the corresponding
structure type, union type, or class type entry has a
-DW\-\_AT\-\_name attribute whose value is a null\dash terminated string
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated string
containing the type name as it appears in the source program.
The members of a structure, union, or class are represented
in the source program.
A structure type, union type or class type entry may have
-either a DW\-\_AT\-\_byte\-\_size or a DW\-\_AT\-\_bit\-\_size attribute
+either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
(see Section \refersec{chap:byteandbitsizes}),
whose value is the amount of storage needed
to hold an instance of the structure, union or class type,
including any padding. An incomplete structure, union or
class type is represented by a structure, union or class
entry that does not have a byte size attribute and that has
-a DW\-\_AT\-\_declaration attribute.
+a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute.
If the complete declaration of a type has been placed in
a separate type unit
(see Section \refersec{chap:separatetypeunitentries}),
an incomplete
declaration of that type in the compilation unit may provide
-the unique 64\dash bit signature of the type using a DW\-\_AT\-\_signature
+the unique 64\dash bit signature of the type using a \livelink{chap:DWATsignature}{DW\-\_AT\-\_signature}
attribute.
If a structure, union or class entry represents the definition
of a structure, class or union member corresponding to a prior
incomplete structure, class or union, the entry may have a
-DW\-\_AT\-\_specification attribute whose value is a reference to
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute whose value is a reference to
the debugging information entry representing that incomplete
declaration.
Structure, union and class entries containing the
-DW\-\_AT\-\_specification attribute do not need to duplicate
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need to duplicate
information provided by the declaration entry referenced by the
specification attribute. In particular, such entries do not
need to contain an attribute for the name of the structure,
If the definition for a given member of the structure, union
or class does not appear within the body of the declaration,
that member also has a debugging information entry describing
-its definition. That latter entry has a DW\-\_AT\-\_specification
+its definition. That latter entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
attribute referencing the debugging information entry
owned by the body of the structure, union or class entry and
representing a non\dash defining declaration of the data, function
or type member. The referenced entry will not have information
about the location of that member (low and high pc attributes
for function members, location descriptions for data members)
-and will have a DW\-\_AT\-\_declaration attribute.
+and will have a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute.
\textit{Consider a nested class whose
definition occurs outside of the containing class definition, as in:}
entries with the
tag \livetarg{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}.
-An interface type entry has a DW\-\_AT\-\_name attribute, whose
+An interface type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose
value is a null-terminated string containing the type name
as it appears in the source program.
such entry has the
tag \livetarg{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}.
-An inheritance entry has a DW\-\_AT\-\_type attribute whose value is
+An inheritance entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose value is
a reference to the debugging information entry describing the
class or interface from which the parent class or structure
of the inheritance entry is derived, extended or implementing.
An inheritance entry for a class that derives from or extends
-another class or struct also has a DW\-\_AT\-\_data\-\_member\-\_location
+another class or struct also has a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
attribute, whose value describes the location of the beginning
of the inherited type relative to the beginning address of the
derived class. If that value is a constant, it is the offset
(see Section \refersec{chap:datamemberentries}). }
An inheritance entry may have a
-DW\-\_AT\-\_accessibility attribute. If no accessibility attribute
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} attribute. If no accessibility attribute
is present, private access is assumed for an entry of a class
and public access is assumed for an entry of an interface,
struct or union.
If the class referenced by the inheritance entry serves
as a C++ virtual base class, the inheritance entry has a
-DW\-\_AT\-\_virtuality attribute.
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute.
\textit{For a C++ virtual base, the data member location attribute
will usually consist of a non-trivial location description.}
Each
such entry is a child of the class or structure type entry.
-An access declaration entry has a DW\-\_AT\-\_name attribute, whose
+An access declaration entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose
value is a null-terminated string representing the name used
in the declaration in the source program, including any class
or structure qualifiers.
-An access declaration entry also has a DW\-\_AT\-\_accessibility
+An access declaration entry also has a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute describing the declared accessibility of the named
entities.
the friend entry has the
tag \livetarg{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}.
-A friend entry has a DW\-\_AT\-\_friend attribute, whose value is
+A friend entry has a \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute, whose value is
a reference to the debugging information entry describing
the declaration of the friend.
represented by a debugging information entry with the
tag \livetarg{chap:DWTAGmember}{DW\-\_TAG\-\_member}.
The member entry for a named member has
-a DW\-\_AT\-\_name attribute whose value is a null-terminated
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null-terminated
string containing the member name as it appears in the source
program. If the member entry describes an anonymous union, the
name attribute is omitted or consists of a single zero byte.
-The data member entry has a DW\-\_AT\-\_type attribute to denote
+The data member entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to denote
the type of that member.
-A data member entry may have a DW\-\_AT\-\_accessibility
+A data member entry may have a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute. If no accessibility attribute is present, private
access is assumed for an entry of a class and public access
is assumed for an entry of a structure, union, or interface.
-A data member entry may have a DW\-\_AT\-\_mutable attribute,
+A data member entry may have a \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable} attribute,
which is a flag. This attribute indicates whether the data
member was declared with the mutable storage class specifier.
The member entry corresponding to a data member that is
defined in a structure, union or class may have either a
-DW\-\_AT\-\_data\-\_member\-\_location attribute or a DW\-\_AT\-\_data\-\_bit\-\_offset
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute or a \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
attribute. If the beginning of the data member is the same as
the beginning of the containing entity then neither attribute
is required.
-For a DW\-\_AT\-\_data\-\_member\-\_location attribute there are two cases:
+For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute there are two cases:
\begin{enumerate}[1.]
result of the evaluation is a location--either an address or
the name of a register, not an offset to the member.}
-\textit{A DW\-\_AT\-\_data\-\_member\-\_location attribute that has the form of a
+\textit{A \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute that has the form of a
location description is not valid for a data member contained
in an entity that is not byte aligned because DWARF operations
do not allow for manipulating or computing bit offsets.}
\end{enumerate}
-For a DW\-\_AT\-\_data\-\_bit\-\_offset attribute, the value is an integer
+For a \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} attribute, the value is an integer
constant
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
that specifies the number of bits
If the size of a data member is not the same as the size
of the type given for the data member, the data member has
-either a DW\-\_AT\-\_byte\-\_size or a DW\-\_AT\-\_bit\-\_size attribute whose
+either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute whose
integer constant value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the amount
of storage needed to hold the value of the data member.
\textit{C and C++ bit fields typically require the use of the
-DW\-\_AT\-\_data\-\_bit\-\_offset and DW\-\_AT\-\_bit\-\_size attributes.}
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} and \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attributes.}
\textit{This Standard uses the following bit numbering and direction
conventions in examples. These conventions are for illustrative
and arrays, see
Appendix \refersec{app:pascalexample}.}
-\textit{Attribute DW\-\_AT\-\_data\-\_bit\-\_offset is new in DWARF Version 4 and
+\textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} is new in DWARF Version 4 and
is also used for base types
(see Section \refersec{chap:basetypeentries}).
It replaces the
-attributes DW\-\_AT\-\_bit\-\_offset and DW\-\_AT\-\_byte\-\_size when used to
+attributes \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} and \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} when used to
identify the beginning of bit field data members as defined
in DWARF V3 and earlier. The earlier attributes are defined
in a manner suitable for bit field members on big-endian
architectures but which is either awkward or incomplete for
-use on little-endian architectures. (DW\-\_AT\-\_byte\-\_size also
+use on little-endian architectures. (\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} also
has other uses that are not affected by this change.)}
-\textit{The DW\-\_AT\-\_byte\-\_size, DW\-\_AT\-\_bit\-\_size and
-DW\-\_AT\-\_bit\-\_offset
+\textit{The \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
attribute combination is deprecated for data members in DWARF
Version 4, but implementations may continue to support this
use for compatibility.}
entry has the following attributes:}
\begin{itemize}
-\item \textit{A DW\-\_AT\-\_byte\-\_size attribute whose value (see Section
+\item \textit{A \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute whose value (see Section
2.19) is the number of bytes that contain an instance of the
bit field and any padding bits.}
object containing the bit field can be inferred from the type
attribute of the data member containing the bit field.}
-\item \textit{A DW\-\_AT\-\_bit\-\_offset attribute whose value (see Section
+\item \textit{A \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute whose value (see Section
2.19) is the number of bits to the left of the leftmost
(most significant) bit of the bit field value.}
-\item \textit{A DW\-\_AT\-\_bit\-\_size attribute whose value (see Section
+\item \textit{A \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute whose value (see Section
2.19) is the number of bits occupied by the bit field value.}
\end{itemize}
\textit{Diagrams similar to the above that show the use of the
-DW\-\_AT\-\_byte\-\_size, DW\-\_AT\-\_bit\-\_size and DW\-\_AT\-\_bit\-\_offset attribute
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute
combination may be found in the DWARF Version 3 Standard.}
\textit{In comparing DWARF Versions 3 and 4, note that DWARF V4
defines the following combinations of attributes:}
\begin{itemize}
-\item \textit{either DW\-\_AT\-\_data\-\_member\-\_location or
-DW\-\_AT\-\_data\-\_bit\-\_offset (to specify the beginning of the
+\item \textit{either \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} or
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} (to specify the beginning of the
data member)}
% FIXME: the indentation of the following line is suspect.
\textit{optionally together with}
-\item \textit{either DW\-\_AT\-\_byte\-\_size or DW\-\_AT\-\_bit\-\_size (to
+\item \textit{either \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} (to
specify the size of the data member)}
\end{itemize}
\textit{DWARF V3 defines the following combinations}
\begin{itemize}
-\item \textit{DW\-\_AT\-\_data\-\_member\-\_location (to specify the beginning
+\item \textit{\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} (to specify the beginning
of the data member, except this specification is only partial
in the case of a bit field) }
% FIXME: the indentation of the following line is suspect.
\textit{optionally together with}
-\item \textit{DW\-\_AT\-\_byte\-\_size, DW\-\_AT\-\_bit\-\_size and DW\-\_AT\-\_bit\-\_offset
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
(to further specify the beginning of a bit field data member
as well as specify the size of the data member) }
\end{itemize}
as non\dash member global subroutine entries
(see Section \refersec{chap:subroutineandentrypointentries}).
-A member function entry may have a DW\-\_AT\-\_accessibility
+A member function entry may have a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute. If no accessibility attribute is present, private
access is assumed for an entry of a class and public access
is assumed for an entry of a structure, union or interface.
If the member function entry describes a virtual function,
-then that entry has a DW\-\_AT\-\_virtuality attribute.
+then that entry has a \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute.
If the member function entry describes an explicit member
-function, then that entry has a DW\-\_AT\-\_explicit attribute.
+function, then that entry has a \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit} attribute.
An entry for a virtual function also has a
-DW\-\_AT\-\_vtable\-\_elem\-\_location attribute whose value contains
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location} attribute whose value contains
a location description yielding the address of the slot
for the function within the virtual function table for the
enclosing class. The address of an object of the enclosing
description is evaluated.
If the member function entry describes a non\dash static member
-function, then that entry has a DW\-\_AT\-\_object\-\_pointer attribute
+function, then that entry has a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer} attribute
whose value is a reference to the formal parameter entry
that corresponds to the object for which the function is
called. The name attribute of that formal parameter is defined
by the current language (for example, this for C++ or self
for Objective C and some other languages). That parameter
-also has a DW\-\_AT\-\_artificial attribute whose value is true.
+also has a \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} attribute whose value is true.
Conversely, if the member function entry describes a static
-member function, the entry does not have a DW\-\_AT\-\_object\-\_pointer
+member function, the entry does not have a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
attribute.
If the member function entry describes a non\dash static member
If a subroutine entry represents the defining declaration
of a member function and that definition appears outside of
the body of the enclosing class declaration, the subroutine
-entry has a DW\-\_AT\-\_specification attribute, whose value is
+entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute, whose value is
a reference to the debugging information entry representing
the declaration of this function member. The referenced entry
will be a child of some class (or structure) type entry.
-Subroutine entries containing the DW\-\_AT\-\_specification
+Subroutine entries containing the \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
attribute do not need to duplicate information provided
by the declaration entry referenced by the specification
attribute. In particular, such entries do not need to contain
\item Each formal parameterized type declaration appearing in the
template definition is represented by a debugging information
entry with the tag \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each
-such entry may have a DW\-\_AT\-\_name attribute, whose value is
+such entry may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is
a null\dash terminated string containing the name of the formal
type parameter as it appears in the source program. The
-template type parameter entry also has a DW\-\_AT\-\_type attribute
+template type parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
describing the actual type by which the formal is replaced
for this instantiation.
entry with the
tag \livetarg{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}.
Each
-such entry may have a DW\-\_AT\-\_name attribute, whose value is
+such entry may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is
a null\dash terminated string containing the name of the formal
value parameter as it appears in the source program. The
-template value parameter entry also has a DW\-\_AT\-\_type attribute
+template value parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
describing the type of the parameterized value. Finally,
-the template value parameter entry has a DW\-\_AT\-\_const\-\_value
+the template value parameter entry has a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
attribute, whose value is the actual constant value of the
value parameter for this instantiation as represented on the
target architecture.
represented by a separate debugging information entry which
is a child of the variant part entry. This entry has the form
of a structure data member entry. The variant part entry will
-have a DW\-\_AT\-\_discr attribute whose value is a reference to
+have a \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr} attribute whose value is a reference to
the member entry for the discriminant.
If the variant part does not have a discriminant (tag field),
-the variant part entry has a DW\-\_AT\-\_type attribute to represent
+the variant part entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to represent
the tag type.
Each variant of a particular variant part is represented by
tag \livetarg{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}
and is a child of the variant part entry. The value that
selects a given variant may be represented in one of three
-ways. The variant entry may have a DW\-\_AT\-\_discr\-\_value attribute
+ways. The variant entry may have a \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} attribute
whose value represents a single case label. The value of this
attribute is encoded as an LEB128 number. The number is signed
if the tag type for the variant part containing this variant
is a signed type. The number is unsigned if the tag type is
an unsigned type.
-Alternatively, the variant entry may contain a DW\-\_AT\-\_discr\-\_list
+Alternatively, the variant entry may contain a \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
attribute, whose value represents a list of discriminant
values. This list is represented by any of the block forms and
may contain a mixture of case labels and label ranges. Each
descriptor that determines whether the list item represents
a single label or a label range. A single case label is
represented as an LEB128 number as defined above for the
-DW\-\_AT\-\_discr\-\_value attribute. A label range is represented by
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} attribute. A label range is represented by
two LEB128 numbers, the low value of the range followed by the
high value. Both values follow the rules for signedness just
described. The discriminant value descriptor is an integer
\caption{Discriminant descriptor values}\label{fig:discriminantdescriptorvalues}
\end{figure}
-If a variant entry has neither a DW\-\_AT\-\_discr\-\_value
-attribute nor a DW\-\_AT\-\_discr\-\_list attribute, or if it has
-a DW\-\_AT\-\_discr\-\_list attribute with 0 size, the variant is a
+If a variant entry has neither a \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
+attribute nor a \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute, or if it has
+a \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute with 0 size, the variant is a
default variant.
The components selected by a particular variant are represented
logical condition that tests whether a given data item’s
value matches one of a set of constant values. If a name
has been given to the condition, the condition entry has a
-DW\-\_AT\-\_name attribute whose value is a null\dash terminated string
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated string
giving the condition name as it appears in the source program.
The condition entry's parent entry describes the conditional
The condition entry owns \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} and/or
\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} entries that describe the constant
values associated with the condition. If any child entry has
-a DW\-\_AT\-\_type attribute, that attribute should describe a type
+a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, that attribute should describe a type
compatible with the comparison type (according to the source
language); otherwise the child’s type is the same as the
comparison type.
If a name has been given to the enumeration type in the source
program, then the corresponding enumeration type entry has
-a DW\-\_AT\-\_name attribute whose value is a null\dash terminated
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated
string containing the enumeration type name as it appears
-in the source program. This entry also has a DW\-\_AT\-\_byte\-\_size
+in the source program. This entry also has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
attribute whose integer constant value is the number of bytes
required to hold an instance of the enumeration.
-The enumeration type entry may have a DW\-\_AT\-\_type attribute
+The enumeration type entry may have a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
which refers to the underlying data type used to implement
the enumeration.
\item Enumerators are not implicitly converted to another type
\end{enumerate}
-then the enumeration type entry may have a DW\-\_AT\-\_enum\-\_class
+then the enumeration type entry may have a \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
attribute, which is a flag. In a language that offers only
one kind of enumeration declaration, this attribute is not
required.
the enumeration literal values. A C++ type declaration written
using enum class declares a strongly typed enumeration and
is represented using \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type} in combination
-with DW\-\_AT\-\_enum\-\_class.}
+with \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}.}
Each enumeration literal is represented by a debugging
information entry with the
enumerator entries appear in the same order as the declarations
of the enumeration literals in the source program.
-Each enumerator entry has a DW\-\_AT\-\_name attribute, whose
+Each enumerator entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose
value is a null\dash terminated string containing the name of the
enumeration literal as it appears in the source program. Each
-enumerator entry also has a DW\-\_AT\-\_const\-\_value attribute,
+enumerator entry also has a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute,
whose value is the actual numeric value of the enumerator as
represented on the target system.
If the enumeration type occurs as the description of a
dimension of an array type, and the stride for that dimension
is different than what would otherwise be determined, then
-the enumeration type entry has either a DW\-\_AT\-\_byte\-\_stride
-or DW\-\_AT\-\_bit\-\_stride attribute which specifies the separation
+the enumeration type entry has either a \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
+or \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} attribute which specifies the separation
between successive elements along the dimension as described
in
Section \refersec{chap:visibilityofdeclarations}.
-The value of the DW\-\_AT\-\_bit\-\_stride attribute
-is interpreted as bits and the value of the DW\-\_AT\-\_byte\-\_stride
+The value of the \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} attribute
+is interpreted as bits and the value of the \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
attribute is interpreted as bytes.
tag \livetarg{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}.
If a name has
been given to the subroutine type in the source program,
-then the corresponding subroutine type entry has a DW\-\_AT\-\_name
+then the corresponding subroutine type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name}
attribute whose value is a null\dash terminated string containing
the subroutine type name as it appears in the source program.
If the subroutine type describes a function that returns
-a value, then the subroutine type entry has a DW\-\_AT\-\_type
+a value, then the subroutine type entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
attribute to denote the type returned by the subroutine. If
the types of the arguments are necessary to describe the
subroutine type, then the corresponding subroutine type
those declared using non\dash prototype declarations.
A subroutine entry declared with a function prototype style
-declaration may have a DW\-\_AT\-\_prototyped attribute, which is
+declaration may have a \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
a flag.
Each debugging information entry owned by a subroutine
\item The formal parameters of a parameter list (that have a
specific type) are represented by a debugging information entry
with the tag \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}. Each formal parameter
-entry has a DW\-\_AT\-\_type attribute that refers to the type of
+entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute that refers to the type of
the formal parameter.
\item The unspecified parameters of a variable parameter list
with the tag \livetarg{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}.
If a name has been given to
the string type in the source program, then the corresponding
-string type entry has a DW\-\_AT\-\_name attribute whose value is
+string type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is
a null\dash terminated string containing the string type name as
it appears in the source program.
-The string type entry may have a DW\-\_AT\-\_string\-\_length attribute
+The string type entry may have a \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length} attribute
whose value is a location description yielding the location
where the length of the string is stored in the program. The
-string type entry may also have a DW\-\_AT\-\_byte\-\_size attribute
-or DW\-\_AT\-\_bit\-\_size attribute, whose value
+string type entry may also have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute
+or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute, whose value
(see Section \refersec{chap:byteandbitsizes})
is the size of the data to be retrieved from the location
referenced by the string length attribute. If no (byte or bit)
is the same as the size of an address on the target machine.
If no string length attribute is present, the string type
-entry may have a DW\-\_AT\-\_byte\-\_size attribute or DW\-\_AT\-\_bit\-\_size
+entry may have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
attribute, whose value
(see Section \refersec{chap:byteandbitsizes})
is the amount of
A set is represented by a debugging information entry with
the tag \livetarg{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}.
If a name has been given to the
-set type, then the set type entry has a DW\-\_AT\-\_name attribute
+set type, then the set type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
whose value is a null\dash terminated string containing the
set type name as it appears in the source program.
-The set type entry has a DW\-\_AT\-\_type attribute to denote the
+The set type entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to denote the
type of an element of the set.
If the amount of storage allocated to hold each element of an
object of the given set type is different from the amount of
storage that is normally allocated to hold an individual object
of the indicated element type, then the set type entry has
-either a DW\-\_AT\-\_byte\-\_size attribute, or DW\-\_AT\-\_bit\-\_size attribute
+either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute, or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
whose value (see Section \refersec{chap:byteandbitsizes}) is
the amount of storage needed to hold a value of the set type.
tag \livetarg{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}.
If a name has been
given to the subrange type, then the subrange type entry
-has a DW\-\_AT\-\_name attribute whose value is a null\dash terminated
+has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated
string containing the subrange type name as it appears in
the source program.
-The subrange entry may have a DW\-\_AT\-\_type attribute to describe
+The subrange entry may have a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to describe
the type of object, called the basis type, of whose values
this subrange is a subset.
object of the given subrange type is different from the amount
of storage that is normally allocated to hold an individual
object of the indicated element type, then the subrange
-type entry has a DW\-\_AT\-\_byte\-\_size attribute or DW\-\_AT\-\_bit\-\_size
+type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
attribute, whose value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the amount of
storage needed to hold a value of the subrange type.
-The subrange entry may have a DW\-\_AT\-\_threads\-\_scaled attribute,
+The subrange entry may have a \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled} attribute,
which is a flag. If present, this attribute indicates whether
this subrange represents a UPC array bound which is scaled
by the runtime THREADS value (the number of UPC threads in
int shared foo[34*THREADS][10][20];
\end{lstlisting}
-The subrange entry may have the attributes DW\-\_AT\-\_lower\-\_bound
-and DW\-\_AT\-\_upper\-\_bound to specify, respectively, the lower
-and upper bound values of the subrange. The DW\-\_AT\-\_upper\-\_bound
-attribute may be replaced by a DW\-\_AT\-\_count attribute, whose
+The subrange entry may have the attributes \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
+and \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound} to specify, respectively, the lower
+and upper bound values of the subrange. The \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
+attribute may be replaced by a \livelink{chap:DWATcount}{DW\-\_AT\-\_count} attribute, whose
value describes the number of elements in the subrange rather
than the value of the last element. The value of each of
these attributes is determined as described in
If the subrange type occurs as the description of a dimension
of an array type, and the stride for that dimension is
different than what would otherwise be determined, then
-the subrange type entry has either a DW\-\_AT\-\_byte\-\_stride or
-DW\-\_AT\-\_bit\-\_stride attribute which specifies the separation
+the subrange type entry has either a \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} or
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} attribute which specifies the separation
between successive elements along the dimension as described
in
Section \refersec{chap:byteandbitsizes}.
the tag \livetarg{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}.
If the pointer to member type has a name, the pointer to
-member entry has a DW\-\_AT\-\_name attribute, whose value is a
+member entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a
null\dash terminated string containing the type name as it appears
in the source program.
-The pointer to member entry has a DW\-\_AT\-\_type attribute to
+The pointer to member entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to
describe the type of the class or structure member to which
objects of this type may point.
-The pointer to member entry also has a DW\-\_AT\-\_containing\-\_type
+The pointer to member entry also has a \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
attribute, whose value is a reference to a debugging
information entry for the class or structure to whose members
objects of this type may point.
-The pointer to member entry has a DW\-\_AT\-\_use\-\_location attribute
+The pointer to member entry has a \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} attribute
whose value is a location description that computes the
address of the member of the class to which the pointer to
member entry points.
type. The method is thus associated with the type entry,
rather than with each instance of the type.}
-The DW\-\_AT\-\_use\-\_location description is used in conjunction
+The \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description is used in conjunction
with the location descriptions for a particular object of the
given pointer to member type and for a particular structure or
-class instance. The DW\-\_AT\-\_use\-\_location attribute expects two
+class instance. The \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} attribute expects two
values to be pushed onto the DWARF expression stack before
-the DW\-\_AT\-\_use\-\_location description is evaluated. The first
+the \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description is evaluated. The first
value pushed is the value of the pointer to member object
itself. The second value pushed is the base address of the
entire structure or union instance containing the member
\textit{2. Push the base address of object onto the DWARF expression stack.}
-\textit{3. Evaluate the DW\-\_AT\-\_use\-\_location description
+\textit{3. Evaluate the \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description
given in the type of mbr\_ptr.}
\section{File Type Entries}
with the
\livetarg{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}.
If the file type has a name,
-the file type entry has a DW\-\_AT\-\_name attribute, whose value
+the file type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value
is a null\dash terminated string containing the type name as it
appears in the source program.
-The file type entry has a DW\-\_AT\-\_type attribute describing
+The file type entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing
the type of the objects contained in the file.
-The file type entry also has a DW\-\_AT\-\_byte\-\_size or
-DW\-\_AT\-\_bit\-\_size attribute, whose value
+The file type entry also has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute, whose value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the amount of storage need to hold a value of the file type.
information, including a location and/or run\dash time parameters,
about the data that represents the value for that object.}
-The DW\-\_AT\-\_data\-\_location attribute may be used with any
+The \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute may be used with any
type that provides one or more levels of hidden indirection
and/or run\dash time parameters in its representation. Its value
is a location description. The result of evaluating this
\textit{This location description will typically begin with
DW\-\_OP\-\_push\-\_object\-\_address which loads the address of the
object which can then serve as a descriptor in subsequent
-calculation. For an example using DW\-\_AT\-\_data\-\_location for a
+calculation. For an example using \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} for a
Fortran 90 array, see
Appendix \refersec{app:fortran90example}.}
may be dynamically allocated or associated with a variable
under explicit program control.}
-The DW\-\_AT\-\_allocated attribute may optionally be used with any
+The \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} attribute may optionally be used with any
type for which objects of the type can be explicitly allocated
and deallocated. The presence of the attribute indicates that
objects of the type are allocatable and deallocatable. The
integer value of the attribute (see below) specifies whether
an object of the type is currently allocated or not.
-The DW\-\_AT\-\_associated attribute may optionally be used with
+The \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} attribute may optionally be used with
any type for which objects of the type can be dynamically
associated with other objects. The presence of the attribute
indicates that objects of the type can be associated. The
A non\dash zero value is interpreted as allocated or associated,
and zero is interpreted as not allocated or not associated.
-\textit{For Fortran 90, if the DW\-\_AT\-\_associated attribute is present,
+\textit{For Fortran 90, if the \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} attribute is present,
the type has the POINTER property where either the parent
variable is never associated with a dynamic object or the
implementation does not track whether the associated object
-is static or dynamic. If the DW\-\_AT\-\_allocated attribute is
-present and the DW\-\_AT\-\_associated attribute is not, the type
+is static or dynamic. If the \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} attribute is
+present and the \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} attribute is not, the type
has the ALLOCATABLE property. If both attributes are present,
then the type should be assumed to have the POINTER property
-(and not ALLOCATABLE); the DW\-\_AT\-\_allocated attribute may then
+(and not ALLOCATABLE); the \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} attribute may then
be used to indicate that the association status of the object
resulted from execution of an ALLOCATE statement rather than
pointer assignment.}
-\textit{For examples using DW\-\_AT\-\_allocated for Ada and Fortran 90
+\textit{For examples using \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} for Ada and Fortran 90
arrays,
see Appendix \refersec{app:aggregateexamples}.}
by a debugging information entry with the tag
\livetarg{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}.
The template alias entry has a
-DW\-\_AT\-\_name attribute whose value is a null\dash terminated string
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated string
containing the name of the template alias as it appears in
the source program. The template alias entry also contains a
-DW\-\_AT\-\_type attribute whose value is a reference to the type
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose value is a reference to the type
named by the template alias. The template alias entry has
the following child entries:
in the template alias declaration is represented
by a debugging information entry with the tag
\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each such entry may have
-a DW\-\_AT\-\_name attribute, whose value is a null\dash terminated
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a null\dash terminated
string containing the name of the formal type parameter as it
appears in the source program. The template type parameter
-entry also has a DW\-\_AT\-\_type attribute describing the actual
+entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing the actual
type by which the formal is replaced for this instantiation.
\item Each formal parameterized value declaration
appearing in the template alias declaration is
represented by a debugging information entry with the tag
\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}. Each such entry may have
-a DW\-\_AT\-\_name attribute, whose value is a null\dash terminated
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a null\dash terminated
string containing the name of the formal value parameter
as it appears in the source program. The template value
-parameter entry also has a DW\-\_AT\-\_type attribute describing
+parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing
the type of the parameterized value. Finally, the template
-value parameter entry has a DW\-\_AT\-\_const\-\_value attribute, whose
+value parameter entry has a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute, whose
value is the actual constant value of the value parameter for
this instantiation as represented on the target architecture.
\end{enumerate}