help from David Anderson).
Signed-off-by: Ron Brender <ron.brender@gmail.com>
\livetarg{chap:DECL}
means include all three of the
\addtoindex{declaration coordinates}
-\addtoindexx{declaration coordinates|see {DW\_AT\_decl\_file, DW\_AT\_decl\_line, DW\_AT\_decl\_column}}
-\livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column},
-\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}, and
-\livelink{chap:DWATdeclline}{DW\_AT\_decl\_line}.
+\addtoindexx{declaration coordinates|see {\DWATdeclfileNAME, \DWATdecllineNAME, \DWATdeclcolumnNAME}}
+\DWATdeclcolumn,
+\DWATdeclfile{} and
+\DWATdeclline.
\label{tab:attributesbytag}
\setlength{\extrarowheight}{0.1cm}
\hline
\endlastfoot
-\livelink{chap:DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration}
+\DWTAGaccessdeclaration{}
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \\
-&\livelink{chap:DWATdescription}{DW\_AT\_description} \\
-&\livelink{chap:DWATname}{DW\_AT\_name} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
+&\DWATaccessibility{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+\DWTAGarraytype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbitstride{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATordering{} \\
+&\DWATsibling{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGbasetype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block}
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbinaryscale{} \\
+&\DWATbitoffset{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatabitoffset{} \\
+&\DWATdatalocation{} \\
+&\DWATdecimalscale{} \\
+&\DWATdecimalsign{} \\
+&\DWATdescription{} \\
+&\DWATdigitcount{} \\
+&\DWATencoding{} \\
+&\DWATendianity{} \\
+&\DWATname{} \\
+&\DWATpicturestring{} \\
+&\DWATsibling{} \\
+&\DWATsmall{} \\
+
+\hline
+\DWTAGcatchblock
&\livelink{chap:DECL}{DECL} \\*
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWAThighpc{} \\
+&\DWATlowpc{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
+\DWTAGclasstype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATsignature{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATvisibility{} \\
\hline
\DWTAGcoarraytype
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATname}{DW\_AT\_name} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
-&\livelink{chap:DWATtype}{DW\_AT\_type} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
+\DWTAGcommonblock
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATlinkagename{} \\
+&\DWATlocation{} \\
+&\DWATname{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATvisibility{} \\
\hline
-\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion}
+\DWTAGcommoninclusion
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGcondition}{DW\_TAG\_condition}
+&\DWATcommonreference{} \\
+&\DWATdeclaration{} \\
+&\DWATsibling{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGcompileunit
+&\DWATbasetypes{} \\
+&\DWATcompdir{} \\
+&\DWATidentifiercase{} \\
+&\DWAThighpc{} \\
+&\DWATlanguage{} \\
+&\DWATlowpc{} \\
+&\DWATmacroinfo{} \\
+&\DWATmainsubprogram{} \\
+&\DWATname{} \\
+&\DWATproducer{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATstmtlist{} \\
+&\DWATuseUTFeight{} \\
+
+\hline
+\DWTAGcondition
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATname}{DW\_AT\_name} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_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} \\
+\DWTAGconsttype
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
+\DWTAGconstant
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaccessibility{} \\
+&\DWATconstvalue{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATendianity{} \\
+&\DWATexternal{} \\
+&\DWATlinkagename{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
\hline
-\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}
-&\livelink{chap:DWATlocation}{DW\_AT\_location} \\
+\DWTAGdwarfprocedure
+&\DWATlocation{} \\
\hline
-\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point}
+\DWTAGentrypoint
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
+&\DWATaddressclass{} \\
+&\DWATdescription{} \\
+&\DWATframebase{} \\
+&\DWATlinkagename{} \\
+&\DWATlowpc{} \\
+&\DWATname{} \\
+&\DWATreturnaddr{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATstaticlink{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGenumerationtype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbitstride{} \\
+&\DWATbytesize{} \\
+&\DWATbytestride{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATenumclass{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATsignature{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGenumerator
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATconstvalue{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type}
+\DWTAGfiletype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+&\DWATabstractorigin{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGformalparameter
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGfriend}{DW\_TAG\_friend}
+&\DWATabstractorigin{} \\
+&\DWATartificial{} \\
+&\DWATconstvalue{} \\
+&\DWATdefaultvalue{} \\
+&\DWATdescription{} \\
+&\DWATendianity{} \\
+&\DWATisoptional{} \\
+&\DWATlocation{} \\
+&\DWATname{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+&\DWATvariableparameter{} \\
+
+\hline
+\DWTAGfriend
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin} \\
-&\livelink{chap:DWATfriend}{DW\_AT\_friend} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
+&\DWATabstractorigin{} \\
+&\DWATfriend{} \\
+&\DWATsibling{} \\
\hline
% Please keep in synch with DW_TAG_subrange_type.
\DWTAGgenericsubrange
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbitstride{} \\
+&\DWATbytesize{} \\
+&\DWATbytestride{} \\
+&\DWATcount{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATlowerbound{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATthreadsscaled{} \\
+&\DWATtype{} \\*
+&\DWATupperbound{} \\*
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGimporteddeclaration
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaccessibility{} \\
+&\DWATdescription{} \\
+&\DWATimport{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
\hline
-\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}
+\DWTAGimportedmodule
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATimport}{DW\_AT\_import} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
-&\livelink{chap:DWATstartscope}{DW\_AT\_start\_scope} \\
+&\DWATimport{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
\hline
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
-&\livelink{chap:DWATimport}{DW\_AT\_import} \\
+\DWTAGimportedunit
+&\DWATimport{} \\
\hline
-\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance}
+\DWTAGinheritance
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type}
+&\DWATaccessibility{} \\
+&\DWATdatamemberlocation{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+&\DWATvirtuality{} \\
+
+\hline
+\DWTAGinlinedsubroutine
+&\DWATabstractorigin{} \\
+&\DWATcallcolumn{} \\
+&\DWATcallfile{} \\
+&\DWATcallline{} \\
+&\DWATconstexpr{} \\
+&\DWATentrypc{} \\
+&\DWAThighpc{} \\
+&\DWATlowpc{} \\
+&\DWATranges{} \\
+&\DWATreturnaddr{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATtrampoline{} \\
+
+\hline
+\DWTAGinterfacetype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaccessibility{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
\hline
-\livelink{chap:DWTAGlabel}{DW\_TAG\_label}
+\DWTAGlabel
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWATdescription{} \\
+&\DWATlowpc{} \\
+&\DWATname{} \\
+&\DWATsegment{} \\
+&\DWATstartscope{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block}
+\DWTAGlexicalblock
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWATdescription{} \\
+&\DWAThighpc{} \\
+&\DWATlowpc{} \\
+&\DWATname{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGmember}{DW\_TAG\_member}
+\DWTAGmember
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGmodule}{DW\_TAG\_module}
+&\DWATaccessibility{} \\
+&\DWATbitoffset{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatabitoffset{} \\
+&\DWATdatamemberlocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATmutable{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGmodule
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist}
+&\DWATaccessibility{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATentrypc{} \\
+&\DWAThighpc{} \\
+&\DWATlowpc{} \\
+&\DWATname{} \\
+&\DWATpriority{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\*
+&\DWATspecification{} \\*
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGnamelist
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATdeclaration{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATvisibility{} \\
\hline
-\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}
+\DWTAGnamelistitem
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATnamelistitem}{DW\_AT\_namelist\_item} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
+&\DWATnamelistitem{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
+\DWTAGnamespace
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_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} \\
-
-\hline
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+&\DWATdescription{} \\
+&\DWATextension{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+
+\hline
+\DWTAGpackedtype
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGpartialunit
+&\DWATbasetypes{} \\
+&\DWATcompdir{} \\
+&\DWATdescription{} \\
+&\DWATidentifiercase{} \\
+&\DWAThighpc{} \\
+&\DWATlanguage{} \\
+&\DWATlowpc{} \\
+&\DWATmacroinfo{} \\
+&\DWATmainsubprogram{} \\
+&\DWATname{} \\
+&\DWATproducer{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATstmtlist{} \\
+&\DWATuseUTFeight{} \\
+
+\hline
+\DWTAGpointertype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaddressclass{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}
+\DWTAGptrtomembertype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_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} \\
-
-\hline
-\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_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} \\
-
-\hline
-\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type}
+&\DWATabstractorigin{} \\
+&\DWATaddressclass{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATcontainingtype{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+&\DWATuselocation{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGreferencetype
+&\DWATaddressclass{} \\*
+&\DWATallocated{} \\*
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGrestricttype
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGrvaluereferencetype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaddressclass{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type}
+\DWTAGsettype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_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} \\
-
-\hline
-\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATstartscope{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGsharedtype
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATcount{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGstringtype
&\livelink{chap:DECL}{DECL} \\
-&\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:DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size} \\
-&\livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size} \\
-&\livelink{chap:DWATvisibility}{DW\_AT\_visibility} \\
-
-\hline
-\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATstringlength{} \\
+&\DWATstringlengthbitsize{} \\
+&\DWATstringlengthbytesize{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGstructuretype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATsignature{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGsubprogram
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATaddressclass{} \\
+&\DWATartificial{} \\
+&\DWATcallingconvention{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATelemental{} \\
+&\DWATentrypc{} \\
+&\DWATexplicit{} \\
+&\DWATexternal{} \\
+&\DWATframebase{} \\
+&\DWAThighpc{} \\
+&\DWATinline{} \\
+&\DWATlinkagename{} \\
+&\DWATlowpc{} \\
+&\DWATmainsubprogram{} \\
+&\DWATname{} \\
+&\DWATobjectpointer{} \\
+&\DWATprototyped{} \\
+&\DWATpure{} \\
+&\DWATranges{} \\
+&\DWATrecursive{} \\
+&\DWATreturnaddr{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATstaticlink{} \\
+&\DWATtrampoline{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+&\DWATvirtuality{} \\
+&\DWATvtableelemlocation{} \\
+
+\hline
+\DWTAGsubrangetype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbitstride{} \\
+&\DWATbytesize{} \\
+&\DWATbytestride{} \\
+&\DWATcount{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATlowerbound{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATthreadsscaled{} \\
+&\DWATtype{} \\*
+&\DWATupperbound{} \\*
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGsubroutinetype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATaddressclass{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATprototyped{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGtemplatealias
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATsignature{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGtemplatetypeparameter
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATdescription}{DW\_AT\_description} \\
-&\livelink{chap:DWATname}{DW\_AT\_name} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
-&\livelink{chap:DWATtype}{DW\_AT\_type} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter}
+\DWTAGtemplatevalueparameter{}
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATconstvalue{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type}
+\DWTAGthrowntype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
\hline
-\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block}
+\DWTAGtryblock
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWAThighpc{} \\
+&\DWATlowpc{} \\
+&\DWATranges{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
+\DWTAGtypedef
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
\hline
-\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
-&\livelink{chap:DWATlanguage}{DW\_AT\_language} \\
+\DWTAGtypeunit
+&\DWATlanguage{} \\
\hline
-\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}
+\DWTAGuniontype
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATbitsize{} \\
+&\DWATbytesize{} \\
+&\DWATdatalocation{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATsignature{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGunspecifiedparameters
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin} \\
-&\livelink{chap:DWATartificial}{DW\_AT\_artificial} \\
-&\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
+&\DWATabstractorigin{} \\
+&\DWATartificial{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
+\DWTAGunspecifiedtype
&\livelink{chap:DECL}{DECL} \\
-&\livelink{chap:DWATdescription}{DW\_AT\_description} \\
-&\livelink{chap:DWATname}{DW\_AT\_name} \\
+&\DWATdescription{} \\
+&\DWATname{} \\
\hline
-\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+\DWTAGvariable
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGvariant}{DW\_TAG\_variant}
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATconstexpr{} \\
+&\DWATconstvalue{} \\
+&\DWATdeclaration{} \\
+&\DWATdescription{} \\
+&\DWATendianity{} \\
+&\DWATexternal{} \\
+&\DWATlinkagename{} \\
+&\DWATlocation{} \\
+&\DWATname{} \\
+&\DWATsegment{} \\
+&\DWATsibling{} \\
+&\DWATspecification{} \\
+&\DWATstartscope{} \\
+&\DWATtype{} \\
+&\DWATvisibility{} \\
+
+\hline
+\DWTAGvariant
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
+&\DWATaccessibility{} \\
+&\DWATabstractorigin{} \\
+&\DWATdeclaration{} \\
+&\DWATdiscrlist{} \\
+&\DWATdiscrvalue{} \\
+&\DWATsibling{} \\
\hline
-\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part}
+\DWTAGvariantpart
&\livelink{chap:DECL}{DECL} \\
-&\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} \\
-
-\hline
-\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_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} \\
-
-\hline
-\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}
-&\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} \\*
+&\DWATabstractorigin{} \\
+&\DWATaccessibility{} \\
+&\DWATdeclaration{} \\
+&\DWATdiscr{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGvolatiletype{}
+&\DWATallocated{} \\
+&\DWATassociated{} \\
+&\DWATdatalocation{} \\
+&\DWATname{} \\
+&\DWATsibling{} \\
+&\DWATtype{} \\
+
+\hline
+\DWTAGwithstmt
+&\DWATaccessibility{} \\*
+&\DWATaddressclass{} \\*
+&\DWATdeclaration{} \\*
+&\DWAThighpc{} \\*
+&\DWATlocation{} \\*
+&\DWATlowpc{} \\*
+&\DWATranges{} \\*
+&\DWATsegment{} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
+&\DWATvisibility{} \\*
\end{longtable}
\vspace{1cm}
\begin{tabular}{ll}
\textbf{Date} & \textbf{Issue Incorported or Other Change} \\ \hline \\
+10/10/2013 & Convert document to use new DWARF name commands (dwarfnamecmds.tex) \\
10/2/2013 & Fill out the rest of dwarfnamecmds.tex \\
9/28/2013 & Introduce newdwfnamecommands and related conventions \\
9/27/2013 & Editorial work re assumed-rank arrays, other minor cleanups \\
\item A means of referencing from inside one \dotdebuginfo{}
compilation unit to another
\dotdebuginfo{} compilation unit
-(\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} provides this).
+(\DWFORMrefaddr{} provides this).
\item A means of having multiple contributions to specific sections
(for example, \dotdebuginfo{}, and so on) in a single object file.
(This is a consequence of separate compilation, not a rule
imposed by this document.)
-\textit{Local labels use references with form \livelink{chap:DWFORMref4}{DW\_FORM\_ref4}
+\textit{Local labels use references with form \DWFORMreffour{}
or
-\livelink{chap:DWFORMref8}{DW\_FORM\_ref8}.
+\DWFORMrefeight.
(These are affected by relocations
so
-\livelink{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata},
-\livelink{chap:DWFORMref1}{DW\_FORM\_ref1} and
-\livelink{chap:DWFORMref2}{DW\_FORM\_ref2} are
+\DWFORMrefudata,
+\DWFORMrefone{} and
+\DWFORMreftwo{} are
normally not usable and
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} is not necessary
+\DWFORMrefaddr{} is not necessary
for a local label.)}
-\subsubsection{Use of DW\_TAG\_compile\_unit versus
-DW\_TAG\_partial\_unit}
+\subsubsection{Use of \addtoindex{DW\_TAG\_compile\_unit} versus
+\addtoindex{DW\_TAG\_partial\_unit}}
A \addtoindex{section group} compilation unit that uses
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+\DWTAGcompileunit{}
is like any other compilation unit, in that its contents
are evaluated by consumers as though it were an ordinary
compilation unit.
An \#include directive appearing outside any other
declarations is a good candidate to be represented using
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}.
+\DWTAGcompileunit.
However, an \#include appearing inside
a \addtoindex{C++} namespace declaration or a function, for example, is
not a good candidate because the entities included are not
This also applies to \addtoindex{Fortran} INCLUDE lines when declarations
are included into a procedure or module context.
-Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} (instead
-of \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit})
+Consequently a compiler must use \DWTAGpartialunit{} (instead
+of \DWTAGcompileunit)
in a \addtoindex{section group}
whenever the section group
contents are not necessarily globally visible.
directs consumers to ignore that compilation unit when scanning
top level declarations and definitions.
-The \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} compilation unit will be referenced
+The \DWTAGpartialunit{} compilation unit will be referenced
from elsewhere and the referencing locations give the
appropriate context for interpreting the partial compilation
unit.
-A \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} entry may have, as appropriate, any of
-the attributes assigned to a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}.
+A \DWTAGpartialunit{} entry may have, as appropriate, any of
+the attributes assigned to a \DWTAGcompileunit.
\subsubsection{Use of DW\_TAG\_imported\_unit}
-A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry has an
-\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 \DWTAGimportedunit{} debugging information entry has an
+\DWATimport{} attribute referencing a \DWTAGcompileunit{} or
+\DWTAGpartialunit{} debugging information entry.
-A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry refers
+A \DWTAGimportedunit{} debugging information entry refers
to a
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
+\DWTAGcompileunit{} or
+\DWTAGpartialunit{} debugging
information entry to specify that the
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} contents logically appear at the point
+\DWTAGcompileunit{} or
+\DWTAGpartialunit{} contents logically appear at the point
of the
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} entry.
+\DWTAGimportedunit{} entry.
\subsubsection{Use of DW\_FORM\_ref\_addr}
Use
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} to reference from one compilation
+\DWFORMrefaddr{} to reference from one compilation
unit's debugging information entries to those of another
compilation unit.
non-section group
\dotdebuginfo{},
from another \dotdebuginfo{} (from anywhere)
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} is
+\DWFORMrefaddr{} is
still the form to be used, but a section\dash relative relocation
generated by use of a non-exported name (often called an
\doublequote{internal name}) may be used for references within the
my.compiler.company.cpp.wa.h.123456
== section \dotdebuginfo{}
DW.cpp.wa.h.123456.1: ! linker global symbol
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- \livelink{chap:DWATlanguage}{DW\_AT\_language}(\livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus})
+ \DWTAGcompileunit
+ \DWATlanguage(\DWLANGCplusplus)
... ! other unit attributes
DW.cpp.wa.h.123456.2: ! linker global symbol
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("int")
+ \DWTAGbasetype
+ \DWATname("int")
DW.cpp.wa.h.123456.3: ! linker global symbol
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("A")
+ \DWTAGstructuretype
+ \DWATname("A")
DW.cpp.wa.h.123456.4: ! linker global symbol
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("i")
- \livelink{chap:DWATtype}{DW\_AT\_type}(\livelink{chap:DWFORMrefone}{DW\_FORM\_ref}\textit{<n>} to DW.cpp.wa.h.123456.2)
+ \DWTAGmember
+ \DWATname("i")
+ \DWATtype(\DWFORMref\textit{<n>} to DW.cpp.wa.h.123456.2)
! (This is a local reference, so the more
- ! compact form \livelink{chap:DWFORMrefone}{DW\_FORM\_ref}\textit{<n>}
+ ! compact form \DWFORMref\textit{<n>}
! for n = 1,2,4, or 8 can be used)
\end{alltt}
\end{dwflisting}
== section \dottext{}
[generated code for function f]
== section \dotdebuginfo{}
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+ \DWTAGcompileunit
.L1: ! local (non-linker) symbol
- \livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.cpp.wa.h.123456.3)
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("a")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to .L1)
+ \DWTAGreferencetype
+ \DWATtype(reference to DW.cpp.wa.h.123456.3)
+ \DWTAGsubprogram
+ \DWATname("f")
+ \DWATtype(reference to DW.cpp.wa.h.123456.2)
+ \DWTAGvariable
+ \DWATname("a")
+ \DWATtype(reference to .L1)
...
\end{alltt}
\end{dwflisting}
\end{figure}
\needlines{4}
-This example uses \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+This example uses \DWTAGcompileunit{}
for the \addtoindex{section group},
implying that the contents of the compilation unit are
globally visible (in accordance with
\addtoindex{C++} language rules).
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
+\DWTAGpartialunit{}
is not needed for the same reason.
\subsubsection{Fortran Example}
== section \dotdebuginfo{}
DW.myf90.CommonStuff.fh.654321.1: ! linker global symbol
- \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
+ \DWTAGpartialunit
! ...compilation unit attributes, including...
- \livelink{chap:DWATlanguage}{DW\_AT\_language}(\livelink{chap:DWLANGFortran90}{DW\_LANG\_Fortran90})
- \livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}(\livelink{chap:DWIDcaseinsensitive}{DW\_ID\_case\_insensitive})
+ \DWATlanguage(\DWLANGFortranninety)
+ \DWATidentifiercase(\DWIDcaseinsensitive)
DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol
-3\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+3\$: \DWTAGarraytype
! unnamed
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
+ \DWATtype(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
+ \DWTAGsubrangetype
+ \DWATtype(reference to DW.f90.F90\$main.f.2)
! base type INTEGER)
- \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}(constant 1)
- \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(constant 100)
+ \DWATlowerbound(constant 1)
+ \DWATupperbound(constant 100)
DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
- \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
- \livelink{chap:DWATname}{DW\_AT\_name}("Common1")
- \livelink{chap:DWATlocation}{DW\_AT\_location}(Address of common \nolink{block} Common1)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \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)
+ \DWTAGcommonblock
+ \DWATname("Common1")
+ \DWATlocation(Address of common \nolink{block} Common1)
+ \DWTAGvariable
+ \DWATname("C")
+ \DWATtype(reference to 3\$)
+ \DWATlocation(address of C)
DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol
- \livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
- \livelink{chap:DWATname}{DW\_AT\_name}("SEVEN")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
+ \DWTAGconstant
+ \DWATname("SEVEN")
+ \DWATtype(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(constant 7)
+ \DWATconstvalue(constant 7)
\end{alltt}
\end{dwflisting}
\caption{Duplicate elimination example \#2: DWARF section group}
[code for function Foo]
== section \dotdebuginfo{}
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("Foo")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
+ \DWTAGcompileunit
+ \DWTAGsubprogram
+ \DWATname("Foo")
+ \DWATtype(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to
+ \DWTAGimportedunit
+ \DWATimport(reference to
DW.myf90.CommonStuff.fh.654321.1)
- \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! For Common1
- \livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}(reference to
+ \DWTAGcommoninclusion ! For Common1
+ \DWATcommonreference(reference to
DW.myf90.CommonStuff.fh.654321.3)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable} ! For function result
- \livelink{chap:DWATname}{DW\_AT\_name}("Foo")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
+ \DWTAGvariable ! For function result
+ \DWATname("Foo")
+ \DWATtype(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
\end{alltt}
\end{dwflisting}
\begin{dwflisting}
\begin{alltt}
== section \dotdebuginfo{}
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- \livelink{chap:DWATname}{DW\_AT\_name}(F90\$main)
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("INTEGER")
- \livelink{chap:DWATencoding}{DW\_AT\_encoding}(\livelink{chap:DWATEsigned}{DW\_ATE\_signed})
- \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}(...)
-
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ \DWTAGcompileunit
+ \DWATname(F90\$main)
+ \DWTAGbasetype
+ \DWATname("INTEGER")
+ \DWATencoding(\DWATEsigned)
+ \DWATbytesize(...)
+
+ \DWTAGbasetype
...
... ! other base types
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("F90\$main")
- \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to
+ \DWTAGsubprogram
+ \DWATname("F90\$main")
+ \DWTAGimportedunit
+ \DWATimport(reference to
DW.myf90.CommonStuff.fh.654321.1)
- \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! for Common1
- \livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}(reference to
+ \DWTAGcommoninclusion ! for Common1
+ \DWATcommonreference(reference to
DW.myf90.CommonStuff.fh.654321.3)
...
\end{alltt}
\label{fig:duplicateeliminationexample2companiondwarf}
\end{figure}
-This example uses \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} for the \addtoindex{section group}
+This example uses \DWTAGpartialunit{} for the \addtoindex{section group}
because the included declarations are not independently
visible as global entities.
\addtoindexx{DWARF duplicate elimination!C++ example}
in this Section might appear to be equally
valid as a \addtoindex{C} example. However, it is prudent to include
-a \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
+a \DWTAGimportedunit{}
in the primary unit
(see Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit})
-with an \livelink{chap:DWATimport}{DW\_AT\_import} attribute that refers to the proper unit
+with an \DWATimport{} attribute that refers to the proper unit
in the \addtoindex{section group}.
\textit{The \addtoindex{C} rules for consistency of global (file scope) symbols
% We keep the : (colon) away from the attribute so tokenizing in the python tools
% does not result in adding : into the attribute name.
\begin{alltt}
- \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
- \livelink{chap:DWATlanguage}{DW\_AT\_language} : \livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus} (4)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name} : "N"
+ \DWTAGtypeunit
+ \DWATlanguage : \DWLANGCplusplus (4)
+ \DWTAGnamespace
+ \DWATname : "N"
L1:
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \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}
- \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}
- \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
+ \DWTAGstructuretype
+ \DWATname : "C"
+ \DWATbytesize : 8
+ \DWATdeclfile : 1
+ \DWATdeclline : 5
+ \DWTAGmember
+ \DWATname : "x"
+ \DWATdeclfile : 1
+ \DWATdeclline : 6
+ \DWATtype : reference to L2
+ \DWATdatamemberlocation : 0
+ \DWTAGmember
+ \DWATname : "y"
+ \DWATdeclfile : 1
+ \DWATdeclline : 7
+ \DWATtype : reference to L2
+ \DWATdatamemberlocation : 4
L2:
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 4
- \livelink{chap:DWATencoding}{DW\_AT\_encoding} : \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
- \livelink{chap:DWATname}{DW\_AT\_name} : "int"
+ \DWTAGbasetype
+ \DWATbytesize : 4
+ \DWATencoding : \DWATEsigned
+ \DWATname : "int"
\end{alltt}
\end{dwflisting}
\caption{Type signature computation \#1: DWARF representation}
\begin{figure}
\begin{dwflisting}
\begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+// Step 2: 'C' \DWTAGnamespace "N"
0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+// Step 3: 'D' \DWTAGstructuretype
0x44 0x13
-// Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "C"
+// Step 4: 'A' \DWATname \DWFORMstring "C"
0x41 0x03 0x08 0x43 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
+// Step 4: 'A' \DWATbytesize \DWFORMsdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "x"
+ // Step 4: 'A' \DWATname \DWFORMstring "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
+ // Step 6: 'T' \DWATtype (type \#2)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ // Step 3: 'D' \DWTAGbasetype
0x44 0x24
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "int"
+ // Step 4: 'A' \DWATname \DWFORMstring "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
+ // Step 4: 'A' \DWATbytesize \DWFORMsdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' \livelink{chap:DWATencoding}{DW\_AT\_encoding} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
+ // Step 4: 'A' \DWATencoding \DWFORMsdata \DWATEsigned
0x41 0x3e 0x0d 0x05
- // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
+ // Step 7: End of \DWTAGbasetype "int"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
+ // Step 7: End of \DWTAGmember "x"
0x00
// Step 7: Second child ("y")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "y"
+ // Step 4: 'A' \DWATname \DWFORMstring "y"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
+ // Step 6: 'R' \DWATtype (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
+ // Step 7: End of \DWTAGmember "y"
0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
+// Step 7: End of \DWTAGstructuretype "C"
0x00
\end{alltt}
\end{dwflisting}
\figurepart{1}{2}
\begin{dwflisting}
\begin{alltt}
- \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
- \livelink{chap:DWATlanguage}{DW\_AT\_language} : \livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus} (4)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name} : "N"
+ \DWTAGtypeunit
+ \DWATlanguage : \DWLANGCplusplus (4)
+ \DWTAGnamespace
+ \DWATname : "N"
L1:
- \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
- \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}
- \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} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+ \DWTAGclasstype
+ \DWATname : "A"
+ \DWATbytesize : 20
+ \DWATdeclfile : 1
+ \DWATdeclline : 10
+ \DWTAGmember
+ \DWATname : "v\_"
+ \DWATdeclfile : 1
+ \DWATdeclline : 15
+ \DWATtype : reference to L2
+ \DWATdatamemberlocation : 0
+ \DWATaccessibility : \DWACCESSprivate
+ \DWTAGmember
+ \DWATname : "next"
+ \DWATdeclfile : 1
+ \DWATdeclline : 16
+ \DWATtype : reference to L3
+ \DWATdatamemberlocation : 4
+ \DWATaccessibility : \DWACCESSprivate
+ \DWTAGmember
+ \DWATname : "bp"
+ \DWATdeclfile : 1
+ \DWATdeclline : 17
+ \DWATtype : reference to L4
+ \DWATdatamemberlocation : 8
+ \DWATaccessibility : \DWACCESSprivate
+ \DWTAGmember
+ \DWATname : "c"
+ \DWATdeclfile : 1
+ \DWATdeclline : 18
+ \DWATtype : 0xd28081e8 dcf5070a (signature for struct C)
+ \DWATdatamemberlocation : 12
+ \DWATaccessibility : \DWACCESSprivate
\end{alltt}
\end{dwflisting}
\caption{Type signature computation \#2: DWARF representation}
\figurepart{2}{2}
\begin{dwflisting}
\begin{alltt}
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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}
- \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L3
- \livelink{chap:DWATartificial}{DW\_AT\_artificial} : 1
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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}
- \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L3
- \livelink{chap:DWATartificial}{DW\_AT\_artificial} : 1
+ \DWTAGsubprogram
+ \DWATexternal : 1
+ \DWATname : "A"
+ \DWATdeclfile : 1
+ \DWATdeclline : 12
+ \DWATdeclaration : 1
+ \DWTAGformalparameter
+ \DWATtype : reference to L3
+ \DWATartificial : 1
+ \DWTAGformalparameter
+ \DWATtype : reference to L2
+ \DWTAGsubprogram
+ \DWATexternal : 1
+ \DWATname : "v"
+ \DWATdeclfile : 1
+ \DWATdeclline : 13
+ \DWATtype : reference to L2
+ \DWATdeclaration : 1
+ \DWTAGformalparameter
+ \DWATtype : reference to L3
+ \DWATartificial : 1
L2:
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 4
- \livelink{chap:DWATencoding}{DW\_AT\_encoding} : \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
- \livelink{chap:DWATname}{DW\_AT\_name} : "int"
+ \DWTAGbasetype
+ \DWATbytesize : 4
+ \DWATencoding : \DWATEsigned
+ \DWATname : "int"
L3:
- \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L1
+ \DWTAGpointertype
+ \DWATtype : reference to L1
L4:
- \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L5
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name} : "N"
+ \DWTAGpointertype
+ \DWATtype : reference to L5
+ \DWTAGnamespace
+ \DWATname : "N"
L5:
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name} : "B"
- \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} : 1
+ \DWTAGstructuretype
+ \DWATname : "B"
+ \DWATdeclaration : 1
\end{alltt}
\end{dwflisting}
\begin{center}
a declaration, since the complete type is unknown and its
signature is therefore unavailable. There is also a reference
to \texttt{N::C}, using
-\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8} to
+\DWFORMrefsigeight{} to
refer to the type signature
\addtoindexx{type signature}
for that type.
\begin{figure}
\figurepart{1}{3}
\begin{dwflisting}
-% DWARF4 had a \livelink{chap:DWATnamespace}{DW\_AT\_namespace} below,
-% but this error is fixed here to be \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}.
+% DWARF4 had a \DWATnamespace{} below,
+% but this error is fixed here to be \DWTAGnamespace.
\begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+// Step 2: 'C' \DWTAGnamespace "N"
0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
+// Step 3: 'D' \DWTAGclasstype
0x44 0x02
-// Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "A"
+// Step 4: 'A' \DWATname \DWFORMstring "A"
0x41 0x03 0x08 0x41 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 20
+// Step 4: 'A' \DWATbytesize \DWFORMsdata 20
0x41 0x0b 0x0d 0x14
// Step 7: First child ("v\_")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "v\_"
+ // Step 4: 'A' \DWATname \DWFORMstring "v\_"
0x41 0x03 0x08 0x76 0x5f 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+ // Step 4: 'A' \DWATaccessibility \DWFORMsdata \DWACCESSprivate
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
+ // Step 6: 'T' \DWATtype (type \#2)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ // Step 3: 'D' \DWTAGbasetype
0x44 0x24
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "int"
+ // Step 4: 'A' \DWATname \DWFORMstring "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
+ // Step 4: 'A' \DWATbytesize \DWFORMsdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' \livelink{chap:DWATencoding}{DW\_AT\_encoding} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
+ // Step 4: 'A' \DWATencoding \DWFORMsdata \DWATEsigned
0x41 0x3e 0x0d 0x05
- // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
+ // Step 7: End of \DWTAGbasetype "int"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "v\_"
+ // Step 7: End of \DWTAGmember "v\_"
0x00
// Step 7: Second child ("next")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "next"
+ // Step 4: 'A' \DWATname \DWFORMstring "next"
0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+ // Step 4: 'A' \DWATaccessibility \DWFORMsdata \DWACCESSprivate
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 4
0x41 0x38 0x0d 0x04
\end{alltt}
\end{dwflisting}
\figurepart{2}{3}
\begin{dwflisting}
\begin{alltt}
- // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#3)
+ // Step 6: 'T' \DWATtype (type \#3)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 3: 'D' \DWTAGpointertype
0x44 0x0f
- // Step 5: 'N' \livelink{chap:DWATtype}{DW\_AT\_type}
+ // Step 5: 'N' \DWATtype
0x4e 0x49
- // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N" 'E'
+ // Step 5: 'C' \DWTAGnamespace "N" 'E'
0x43 0x39 0x4e 0x00 0x45
// Step 5: "A"
0x41 0x00
- // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 7: End of \DWTAGpointertype
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
+ // Step 7: End of \DWTAGmember "next"
0x00
// Step 7: Third child ("bp")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "bp"
+ // Step 4: 'A' \DWATname \DWFORMstring "bp"
0x41 0x03 0x08 0x62 0x70 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+ // Step 4: 'A' \DWATaccessibility \DWFORMsdata \DWACCESSprivate
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 8
0x41 0x38 0x0d 0x08
- // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#4)
+ // Step 6: 'T' \DWATtype (type \#4)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 3: 'D' \DWTAGpointertype
0x44 0x0f
- // Step 5: 'N' \livelink{chap:DWATtype}{DW\_AT\_type}
+ // Step 5: 'N' \DWATtype
0x4e 0x49
- // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N" 'E'
+ // Step 5: 'C' \DWTAGnamespace "N" 'E'
0x43 0x39 0x4e 0x00 0x45
// Step 5: "B"
0x42 0x00
- // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 7: End of \DWTAGpointertype
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
+ // Step 7: End of \DWTAGmember "next"
0x00
// Step 7: Fourth child ("c")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "c"
+ // Step 4: 'A' \DWATname \DWFORMstring "c"
0x41 0x03 0x08 0x63 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+ // Step 4: 'A' \DWATaccessibility \DWFORMsdata \DWACCESSprivate
0x41 0x32 0x0d 0x03
\end{alltt}
\end{dwflisting}
\figurepart{3}{3}
\begin{dwflisting}
\begin{alltt}
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 12
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 12
0x41 0x38 0x0d 0x0c
- // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#5)
+ // Step 6: 'T' \DWATtype (type \#5)
0x54 0x49
- // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+ // Step 2: 'C' \DWTAGnamespace "N"
0x43 0x39 0x4e 0x00
- // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+ // Step 3: 'D' \DWTAGstructuretype
0x44 0x13
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "C"
+ // Step 4: 'A' \DWATname \DWFORMstring "C"
0x41 0x03 0x08 0x43 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
+ // Step 4: 'A' \DWATbytesize \DWFORMsdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "x"
+ // Step 4: 'A' \DWATname \DWFORMstring "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
+ // Step 6: 'R' \DWATtype (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
+ // Step 7: End of \DWTAGmember "x"
0x00
// Step 7: Second child ("y")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \DWTAGmember
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "y"
+ // Step 4: 'A' \DWATname \DWFORMstring "y"
0x41 0x03 0x08 0x79 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
+ // Step 4: 'A' \DWATdatamemberlocation \DWFORMsdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
+ // Step 6: 'R' \DWATtype (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
+ // Step 7: End of \DWTAGmember "y"
0x00
- // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
+ // Step 7: End of \DWTAGstructuretype "C"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "c"
+ // Step 7: End of \DWTAGmember "c"
0x00
// Step 7: Fifth child ("A")
- // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "A"
+ // Step 3: 'S' \DWTAGsubprogram "A"
0x53 0x2e 0x41 0x00
// Step 7: Sixth child ("v")
- // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "v"
+ // Step 3: 'S' \DWTAGsubprogram "v"
0x53 0x2e 0x76 0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "A"
+// Step 7: End of \DWTAGstructuretype "A"
0x00
\end{alltt}
\end{dwflisting}
\begin{figure}
\begin{dwflisting}
\begin{alltt}
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+ \DWTAGcompileunit
...
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+ \DWTAGsubprogram
...
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name} : "a"
- \livelink{chap:DWATtype}{DW\_AT\_type} : (signature) 0xd6d160f5 5589f6e9
- \livelink{chap:DWATlocation}{DW\_AT\_location} : ...
+ \DWTAGvariable
+ \DWATname : "a"
+ \DWATtype : (signature) 0xd6d160f5 5589f6e9
+ \DWATlocation : ...
...
\end{alltt}
\end{dwflisting}
at-code
: <ULEB128>
form-encoded-value
- : \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} value \addtoindexx{constant class}
- : \livelink{chap:DWFORMflag}{DW\_FORM\_flag} value \addtoindexx{flag class}
- : \livelink{chap:DWFORMstring}{DW\_FORM\_string} string \addtoindexx{string class}
- : \livelink{chap:DWFORMblock}{DW\_FORM\_block} \nolink{block} \addtoindexx{block class}
-\livelink{chap:DWFORMstring}{DW\_FORM\_string} \addtoindexx{string class}
+ : \DWFORMsdata value \addtoindexx{constant class}
+ : \DWFORMflag value \addtoindexx{flag class}
+ : \DWFORMstring string \addtoindexx{string class}
+ : \DWFORMblock \nolink{block} \addtoindexx{block class}
+\DWFORMstring \addtoindexx{string class}
: 'x08'
-\livelink{chap:DWFORMblock}{DW\_FORM\_block} \addtoindexx{block class}
+\DWFORMblock \addtoindexx{block class}
: 'x09'
-\livelink{chap:DWFORMflag}{DW\_FORM\_flag} \addtoindexx{flag class}
+\DWFORMflag \addtoindexx{flag class}
: 'x0c'
-\livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \addtoindexx{constant class}
+\DWFORMsdata \addtoindexx{constant class}
: 'x0d'
value
: <SLEB128>
declarations and definitions. Other per\dash function compilation
unit DWARF information (\dotdebuginfo{}) points to this common
file\dash level compilation unit using
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}.
+\DWTAGimportedunit.
-Section groups can use \livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} and internal labels
+Section groups can use \DWFORMrefaddr{} and internal labels
(section\dash relative relocations) to refer to the main object
file sections, as the
\addtoindexx{section group}
\addtoindexx{formal parameter entry}
formal parameters and constants are
represented by debugging information entries with the tags
-\livetarg{chap:DWTAGvariable}{DW\_TAG\_variable}\addtoindexx{variable entry},
-\livetarg{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}\addtoindexx{formal parameter entry} and
-\livetarg{chap:DWTAGconstant}{DW\_TAG\_constant}\addtoindexx{constant (data) entry},
+\DWTAGvariableTARG\addtoindexx{variable entry},
+\DWTAGformalparameterTARG\addtoindexx{formal parameter entry} and
+\DWTAGconstantTARG\addtoindexx{constant (data) entry},
respectively.
-\textit{The tag \livelink{chap:DWTAGconstant}{DW\_TAG\_constant} is used for languages that
+\textit{The tag \DWTAGconstant{} is used for languages that
have true named constants.}
The debugging information entry for a program variable,
formal parameter or constant may have the following attributes:
\begin{enumerate}[1. ]
-\item A \livelink{chap:DWATname}{DW\_AT\_name} attribute,
+\item A \DWATname{} attribute,
\addtoindexx{name attribute}
whose value is a null-terminated
string, containing the data object name as it appears in the
the name attribute is omitted or consists of a single
zero byte.
-\item A \livelink{chap:DWATexternal}{DW\_AT\_external} attribute,
+\item A \DWATexternal{} attribute,
\hypertarget{chap:DWATexternalexternalvariable}
which
\addtoindexx{external attribute}
are represented by non-external variable entries.
}
-\item A \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} attribute,
+\item A \DWATdeclaration{} attribute,
\addtoindexx{declaration attribute}
which is a \livelink{chap:classflag}{flag} that
indicates whether this entry represents a non-defining
declaration of an object.
-\item A \livelink{chap:DWATlocation}{DW\_AT\_location} attribute,
+\item A \DWATlocation{} attribute,
\addtoindexx{location attribute}
whose value describes the location of a variable or parameter at run-time.
entry representing the definition of a variable (that is,
\addtoindexx{declaration attribute}
with no
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration} attribute),
+\DWATdeclaration{} attribute),
or if the location attribute is present but has
an empty location description (as described in Section \refersec{chap:locationdescriptions}),
\addtoindexx{unallocated variable}
The location of a variable may be further specified with
\addtoindexx{segment attribute!and data segment}
a
-\livelink{chap:DWATsegment}{DW\_AT\_segment} attribute, if
+\DWATsegment{} attribute, if
appropriate.
-\item A \livelink{chap:DWATtype}{DW\_AT\_type} attribute describing the type of the variable,
+\item A \DWATtype{} 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 \livelink{chap:DWATspecification}{DW\_AT\_specification} attribute, whose value is a
+the entry has a \DWATspecification{} attribute, whose value is a
\livelink{chap:classreference}{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
+tag \DWTAGmember{} and will be a child of some class, structure
or union type entry.
If the variable entry represents a
-non-defining declaration, \livelink{chap:DWATspecification}{DW\_AT\_specification} may be used
+non-defining declaration, \DWATspecification{} may be used
to reference the defining declaration of the variable. If
-no \livelink{chap:DWATspecification}{DW\_AT\_specification} attribute is present, the defining
+no \DWATspecification{} 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 \livelink{chap:DWATexternal}{DW\_AT\_external} attribute.
+the \DWATexternal{} attribute.
Variable entries containing
-the \livelink{chap:DWATspecification}{DW\_AT\_specification} attribute do not need to duplicate
+the \DWATspecification{} 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
\hypertarget{chap:DWATvariableparameternonconstantparameterflag}
represent.
-\item A \livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}
+\item A \DWATvariableparameter{}
attribute\addtoindexx{variable parameter attribute},
which is a \livelink{chap:classflag}{flag},
if a formal parameter entry represents a parameter whose
The absence of this attribute implies that the parameter\textquoteright s
value in the calling function cannot be modified by the callee.
-\item A \livelink{chap:DWATisoptional}{DW\_AT\_is\_optional} attribute,
+\item A \DWATisoptional{} attribute,
\hypertarget{chap:DWATisoptionaloptionalparameter}
which
\addtoindexx{is optional attribute}
is a \livelink{chap:classflag}{flag}, if a
parameter entry represents an \addtoindex{optional parameter}.
-\item A \livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value} attribute
+\item A \DWATdefaultvalue{} attribute
\addtoindexx{default value attribute}
for
\addtoindexx{formal parameter entry!with default value}
\textit{For a constant form there is no way to
express the absence of a default value.}
-\item A \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value} attribute
+\item A \DWATconstvalue{} attribute
for
\hypertarget{chap:DWATconstvalueconstantobject}
an entry describing a
to a constant actual parameter of a call that is inlined.
}
-\item A \livelink{chap:DWATstartscope}{DW\_AT\_start\_scope}
+\item A \DWATstartscope{}
attribute if the scope of
\addtoindexx{start scope attribute}
an
an object may not require its own \addtoindex{range list} even when the
containing scope is non\dash contiguous.}
-\item A \livelink{chap:DWATendianity}{DW\_AT\_endianity} attribute,
+\item A \DWATendianity{} attribute,
whose value
\hypertarget{chap:DWATendianityendianityofdata}
is a constant
\begin{tabular}{l|p{9cm}}
\hline
Name&Meaning\\ \hline
-\livetarg{chap:DWENDdefault}{DW\_END\_default} & Default endian encoding
+\DWENDdefaultTARG{} & Default endian encoding
(equivalent to the \mbox{absence} of a
- \livelink{chap:DWATendianity}{DW\_AT\_endianity} attribute) \\
-\livetarg{chap:DWENDbig}{DW\_END\_big} & Big\dash endian encoding \\
-\livetarg{chap:DWENDlittle}{DW\_END\_little}& Little-endian encoding \\
+ \DWATendianity{} attribute) \\
+\DWENDbigTARG{} & Big\dash endian encoding \\
+\DWENDlittleTARG& Little-endian encoding \\
\hline
\end{tabular}
\end{table}
for different architectures.
-\item A \livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} attribute,
+\item A \DWATconstexpr{} attribute,
which
\hypertarget{chap:DWATconstexprcompiletimeconstantobject}
is a \livelink{chap:classflag}{flag}, if a
\textit{In C++,
a variable declared with \texttt{constexpr} is implicitly \texttt{const}. Such a
-variable has a \livelink{chap:DWATtype}{DW\_AT\_type} attribute whose value is a
+variable has a \DWATtype{} attribute whose value is a
\livelink{chap:classreference}{reference}
to a debugging information entry describing a const qualified type.}
-\item A \livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} attribute for a
+\item A \DWATlinkagename{} attribute for a
variable or constant entry as described in
Section \refersec{chap:linkagenames}.
\addtoindexx{Fortran!common block}
be described by a debugging
information entry with the
-tag \livetarg{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}.
+tag \DWTAGcommonblockTARG.
The common \nolink{block}
-entry has a \livelink{chap:DWATname}{DW\_AT\_name} attribute
+entry has a \DWATname{} attribute
\addtoindexx{name attribute}
whose value
is a null-terminated string containing the
\livetargi{chap:commonblockreferenceattribute}{common}{common block reference attribute} \nolink{block}
name as it appears in the source program. It may also have a
-\livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} attribute as described in
+\DWATlinkagename{} attribute as described in
Section \refersec{chap:linkagenames}.
It
-also has a \livelink{chap:DWATlocation}{DW\_AT\_location} attribute
+also has a \DWATlocation{} attribute
\addtoindexx{location attribute}
whose value describes the
location of the beginning of the common \nolink{block}.
A namelist is represented by a debugging information entry
with the
-tag \livetarg{chap:DWTAGnamelist}{DW\_TAG\_namelist}.
+tag \DWTAGnamelistTARG.
\addtoindexx{namelist entry}
If the namelist itself has a
-name, the namelist entry has a \livelink{chap:DWATname}{DW\_AT\_name} attribute,
+name, the namelist entry has a \DWATname{} attribute,
\addtoindexx{name attribute}
whose
value is a null-terminated string containing the namelist\textquoteright s
\hypertarget{chap:DWATnamelistitemnamelistitem}
name that is part of the namelist is represented
by a debugging information entry with the tag
-\livetarg{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}.
+\DWTAGnamelistitemTARG.
Each such entry is a child of the
namelist entry, and all of the
namelist item entries for a
correspond to in the source program.
Each namelist item entry contains a
-\livelink{chap:DWATnamelistitem}{DW\_AT\_namelist\_item} attribute
+\DWATnamelistitem{} attribute
\addtoindexx{namelist item attribute}
whose
\addtoindexx{namelist item entry}
calling conventions and call frame instructions.
The labels denoting the beginning and end of the reserved
-value range for vendor specific extensions consist of the
-appropriate prefix (DW\_TAG, DW\_AT, DW\_END, DW\_ATE, DW\_OP,
-DW\_LANG, DW\_LNE, DW\_CC or DW\_CFA respectively) followed by
\hypertarget{chap:DWXXXlohiuser}{}
+value range for vendor specific extensions consist of the
+appropriate prefix
+(\DWTAGlouserMARK\DWTAGhiuserMARK{} DW\_TAG,
+\DWATlouserMARK\DWAThiuserMARK{} DW\_AT,
+\DWENDlouserMARK\DWENDhiuserMARK{} DW\_END,
+\DWATElouserMARK\DWATEhiuserMARK{} DW\_ATE,
+\DWOPlouserMARK\DWOPhiuserMARK{} DW\_OP,
+\DWLANGlouserMARK\DWLANGhiuserMARK{}DW\_LANG,
+\DWLNElouserMARK\DWLNEhiuserMARK{} DW\_LNE,
+\DWCClouserMARK\DWCChiuserMARK{} DW\_CC or
+\DWCFAlouserMARK\DWCFAhiuserMARK{} DW\_CFA
+respectively) followed by
\_lo\_user or \_hi\_user.
\textit{For example, for entry tags, the special
-labels are DW\_TAG\_lo\_user and DW\_TAG\_hi\_user.}
+labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
Values in the range between \textit{prefix}\_lo\_user
and \textit{prefix}\_hi\_user inclusive,
are reserved for vendor specific extensions. Vendors may
the first special line number opcode. However, since the
number of standard opcodes varies with the DWARF version,
the range for extensions is also version dependent. Thus,
-\livetarg{chap:DWLNSlouser}{DW\_LNS\_lo\_user} and
-\livetarg{chap:DWLNShiuser}{DW\_LNS\_hi\_user} symbols are not defined.
+\DWLNSlouserTARG{} and
+\DWLNShiuserTARG{} symbols are not defined.
}
Vendor defined tags, attributes, base type encodings, location
\begin{center}
\begin{tabular}{ll}
Form & Role \\ \hline
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr}& offset in \dotdebuginfo{} \\
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}& offset in a section other than \\
+\DWFORMrefaddr& offset in \dotdebuginfo{} \\
+\DWFORMsecoffset& offset in a section other than \\
&\dotdebuginfo{} or \dotdebugstr{} \\
-\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}&offset in \dotdebugstr{} \\
-\livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}&offset in \dotdebuginfo{} \\
+\DWFORMstrp&offset in \dotdebugstr{} \\
+\DWOPcallref&offset in \dotdebuginfo{} \\
\end{tabular}
\end{center}
compilation unit header
(see Section \refersec{datarep:compilationunitheader})
followed by a
-single \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
+single \DWTAGcompileunit{} or
+\DWTAGpartialunit{} debugging
information entry, together with its children.
For each type defined in a compilation unit, a contribution may
such contribution consists of a
\addtoindex{type unit} header
(see Section \refersec{datarep:typeunitheader})
-followed by a \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} entry, together with
+followed by a \DWTAGtypeunit{} entry, together with
its children.
Each debugging information entry begins with a code that
unit.
\textit{An attribute that refers (using
-\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8}) to
+\DWFORMrefsigeight{}) to
the primary type contained in this
\addtoindex{type unit} uses this value.}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type} &0x01 \\
-\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}&0x02 \\
-\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point}&0x03 \\
-\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}&0x04 \\
-\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}&0x05 \\
-\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}&0x08 \\
-\livelink{chap:DWTAGlabel}{DW\_TAG\_label}&0x0a \\
-\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block}&0x0b \\
-\livelink{chap:DWTAGmember}{DW\_TAG\_member}&0x0d \\
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}&0x0f \\
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}&0x10 \\
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}&0x11 \\
-\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type}&0x12 \\
-\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}&0x13 \\
-\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type}&0x15 \\
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}&0x16 \\
-\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}&0x17 \\
-\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}&0x18 \\
-\livelink{chap:DWTAGvariant}{DW\_TAG\_variant}&0x19 \\
-\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}&0x1a \\
-\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion}&0x1b \\
-\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance}&0x1c \\
-\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}&0x1d \\
-\livelink{chap:DWTAGmodule}{DW\_TAG\_module}&0x1e \\
-\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}&0x1f \\
-\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type}&0x20 \\
-\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}&0x21 \\
-\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}&0x22 \\
-\livelink{chap:DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration}&0x23 \\
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}&0x24 \\
-\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block}&0x25 \\
-\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}&0x26 \\
-\livelink{chap:DWTAGconstant}{DW\_TAG\_constant}&0x27 \\
-\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}&0x28 \\
-\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type}&0x29 \\
-\livelink{chap:DWTAGfriend}{DW\_TAG\_friend}&0x2a \\
-\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist}&0x2b \\
-\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}&0x2c \\
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type}&0x2d \\
-\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}&0x2e \\
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}&0x2f \\
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter}&0x30 \\
-\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type}&0x31 \\
-\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block}&0x32 \\
-\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part}&0x33 \\
-\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}&0x34 \\
-\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type}&0x35 \\
-\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}&0x36 \\
-\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_type}&0x37 \\
-\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type}&0x38 \\
-\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}&0x39 \\
-\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}&0x3a \\
-\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}&0x3b \\
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}&0x3c \\
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}&0x3d \\
-\livelink{chap:DWTAGcondition}{DW\_TAG\_condition}&\xiiif \\
-\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}&0x40 \\
-\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} &0x41 \\
-\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type} &0x42 \\
-\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias} &0x43 \\
+\DWTAGarraytype{} &0x01 \\
+\DWTAGclasstype&0x02 \\
+\DWTAGentrypoint&0x03 \\
+\DWTAGenumerationtype&0x04 \\
+\DWTAGformalparameter&0x05 \\
+\DWTAGimporteddeclaration&0x08 \\
+\DWTAGlabel&0x0a \\
+\DWTAGlexicalblock&0x0b \\
+\DWTAGmember&0x0d \\
+\DWTAGpointertype&0x0f \\
+\DWTAGreferencetype&0x10 \\
+\DWTAGcompileunit&0x11 \\
+\DWTAGstringtype&0x12 \\
+\DWTAGstructuretype&0x13 \\
+\DWTAGsubroutinetype&0x15 \\
+\DWTAGtypedef&0x16 \\
+\DWTAGuniontype&0x17 \\
+\DWTAGunspecifiedparameters&0x18 \\
+\DWTAGvariant&0x19 \\
+\DWTAGcommonblock&0x1a \\
+\DWTAGcommoninclusion&0x1b \\
+\DWTAGinheritance&0x1c \\
+\DWTAGinlinedsubroutine&0x1d \\
+\DWTAGmodule&0x1e \\
+\DWTAGptrtomembertype&0x1f \\
+\DWTAGsettype&0x20 \\
+\DWTAGsubrangetype&0x21 \\
+\DWTAGwithstmt&0x22 \\
+\DWTAGaccessdeclaration&0x23 \\
+\DWTAGbasetype&0x24 \\
+\DWTAGcatchblock&0x25 \\
+\DWTAGconsttype&0x26 \\
+\DWTAGconstant&0x27 \\
+\DWTAGenumerator&0x28 \\
+\DWTAGfiletype&0x29 \\
+\DWTAGfriend&0x2a \\
+\DWTAGnamelist&0x2b \\
+\DWTAGnamelistitem&0x2c \\
+\DWTAGpackedtype&0x2d \\
+\DWTAGsubprogram&0x2e \\
+\DWTAGtemplatetypeparameter&0x2f \\
+\DWTAGtemplatevalueparameter&0x30 \\
+\DWTAGthrowntype&0x31 \\
+\DWTAGtryblock&0x32 \\
+\DWTAGvariantpart&0x33 \\
+\DWTAGvariable&0x34 \\
+\DWTAGvolatiletype&0x35 \\
+\DWTAGdwarfprocedure&0x36 \\
+\DWTAGrestricttype&0x37 \\
+\DWTAGinterfacetype&0x38 \\
+\DWTAGnamespace&0x39 \\
+\DWTAGimportedmodule&0x3a \\
+\DWTAGunspecifiedtype&0x3b \\
+\DWTAGpartialunit&0x3c \\
+\DWTAGimportedunit&0x3d \\
+\DWTAGcondition&\xiiif \\
+\DWTAGsharedtype&0x40 \\
+\DWTAGtypeunit{} &0x41 \\
+\DWTAGrvaluereferencetype{} &0x42 \\
+\DWTAGtemplatealias{} &0x43 \\
\DWTAGcoarraytype &0x44 \\
\DWTAGgenericsubrange &0x45 \\
-\livelink{chap:DWXXXlohiuser}{DW\_TAG\_lo\_user}&0x4080 \\
-\livelink{chap:DWXXXlohiuser}{DW\_TAG\_hi\_user}&\xffff \\
+\DWTAGlouser&0x4080 \\
+\DWTAGhiuser&\xffff \\
\end{longtable}
\end{centering}
Following the tag encoding is a 1\dash byte value that determines
whether a debugging information entry using this abbreviation
has child entries or not. If the value is
-\livetarg{chap:DWCHILDRENyes}{DW\_CHILDREN\_yes},
+\DWCHILDRENyesTARG,
the next physically succeeding entry of any debugging
information entry using this abbreviation is the first
child of that entry. If the 1\dash byte value following the
abbreviation\textquoteright s tag encoding is
-\livetarg{chap:DWCHILDRENno}{DW\_CHILDREN\_no}, the next
+\DWCHILDRENnoTARG, the next
physically succeeding entry of any debugging information entry
using this abbreviation is a sibling of that entry. (Either
the first child or sibling entries may be null entries). The
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWCHILDRENno}{DW\_CHILDREN\_no}&0x00 \\
-\livelink{chap:DWCHILDRENyes}{DW\_CHILDREN\_yes}&0x01 \\ \hline
+\DWCHILDRENno&0x00 \\
+\DWCHILDRENyes&0x01 \\ \hline
\end{longtable}
\end{centering}
entry containing 0 for the name and 0 for the form.
The attribute form
-\livetarg{chap:DWFORMindirect}{DW\_FORM\_indirect} is a special case. For
+\DWFORMindirectTARG{} is a special case. For
attributes with this form, the attribute value itself in the
\dotdebuginfo{} or
\dotdebugtypes{}
and which are given a common interpretation according to the
attribute in which the form is used.
-Form \livetarg{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}
+Form \DWFORMsecoffsetTARG{}
is a member of more
\addtoindexx{rangelistptr class}
than
Table \refersec{tab:attributeencodings}
determines the class of the form.
-\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\_FORM\_data4} and
-\livelink{chap:DWFORMdata8}{DW\_FORM\_data8} were
+\textit{In DWARF V3 the forms \DWFORMdatafour{} and
+\DWFORMdataeight{} were
\addtoindexx{lineptr class}
members
\addtoindexx{rangelistptr class}
\livelink{chap:classmacptr}{macptr} or
\livelink{chap:classrangelistptr}{rangelistptr}, depending on context. In
DWARF V4
-\livelink{chap:DWFORMdata4}{DW\_FORM\_data4} and
-\livelink{chap:DWFORMdata8}{DW\_FORM\_data8} are members of class
+\DWFORMdatafour{} and
+\DWFORMdataeight{} are members of class
constant in all cases.
The new
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset} replaces
+\DWFORMsecoffset{} replaces
their usage for the other classes.}
Each possible form belongs to one or more of the following classes:
\livetarg{datarep:classaddress}{}
Represented as an object of appropriate size to hold an
address on the target machine
-(\livetarg{chap:DWFORMaddr}{DW\_FORM\_addr}).
+(\DWFORMaddrTARG).
The size is
encoded in the compilation unit header
(see Section \refersec{datarep:compilationunitheader}).
\begin{myindentpara}{1cm}
A 1\dash byte length followed by 0 to 255 contiguous information
-bytes (\livetarg{chap:DWFORMblock1}{DW\_FORM\_block1}).
+bytes (\DWFORMblockoneTARG).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 2\dash byte length followed by 0 to 65,535 contiguous information
-bytes (\livetarg{chap:DWFORMblock2}{DW\_FORM\_block2}).
+bytes (\DWFORMblocktwoTARG).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
-information bytes (\livetarg{chap:DWFORMblock4}{DW\_FORM\_block4}).
+information bytes (\DWFORMblockfourTARG).
\end{myindentpara}
\begin{myindentpara}{1cm}
An unsigned LEB128 length followed by the number of bytes
-specified by the length (\livetarg{chap:DWFORMblock}{DW\_FORM\_block}).
+specified by the length (\DWFORMblockTARG).
\end{myindentpara}
In all forms, the length is the number of information bytes
There are six forms of constants. There are fixed length
constant data forms for one, two, four and eight byte values
(respectively,
-\livetarg{chap:DWFORMdata1}{DW\_FORM\_data1},
-\livetarg{chap:DWFORMdata2}{DW\_FORM\_data2},
-\livetarg{chap:DWFORMdata4}{DW\_FORM\_data4},
-and \livetarg{chap:DWFORMdata8}{DW\_FORM\_data8}).
+\DWFORMdataoneTARG,
+\DWFORMdatatwoTARG,
+\DWFORMdatafourTARG,
+and \DWFORMdataeightTARG).
There are also variable length constant
data forms encoded using LEB128 numbers (see below). Both
-signed (\livetarg{chap:DWFORMsdata}{DW\_FORM\_sdata}) and unsigned
-(\livetarg{chap:DWFORMudata}{DW\_FORM\_udata}) variable
+signed (\DWFORMsdataTARG) and unsigned
+(\DWFORMudataTARG) variable
length constants are available
-The data in \livelink{chap:DWFORMdata1}{DW\_FORM\_data1},
-\livelink{chap:DWFORMdata2}{DW\_FORM\_data2},
-\livelink{chap:DWFORMdata4}{DW\_FORM\_data4} and
-\livelink{chap:DWFORMdata8}{DW\_FORM\_data8}
+The data in \DWFORMdataone,
+\DWFORMdatatwo,
+\DWFORMdatafour{} and
+\DWFORMdataeight{}
can be anything. Depending on context, it may
be a signed integer, an unsigned integer, a floating\dash point
constant, or anything else. A consumer must use context to
machine data (such as an integer or floating point constant)
will be in target machine byte\dash order.
-\textit{If one of the \livetarg{chap:DWFORMdata}{DW\_FORM\_data}\textless n\textgreater
+\textit{If one of the \DWFORMdataTARG\textless n\textgreater
forms is used to represent a
signed or unsigned integer, it can be hard for a consumer
to discover the context necessary to determine which
interpretation is intended. Producers are therefore strongly
-encouraged to use \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} or
-\livelink{chap:DWFORMudata}{DW\_FORM\_udata} for signed and
+encouraged to use \DWFORMsdata{} or
+\DWFORMudata{} for signed and
unsigned integers respectively, rather than
-\livelink{chap:DWFORMdata}{DW\_FORM\_data}\textless n\textgreater.}
+\DWFORMdata\textless n\textgreater.}
\needlines{4}
\item \livelinki{chap:classexprloc}{exprloc}{exprloc class} \\
\livetarg{datarep:classexprloc}{}
This is an unsigned LEB128 length followed by the
number of information bytes specified by the length
-(\livetarg{chap:DWFORMexprloc}{DW\_FORM\_exprloc}).
+(\DWFORMexprlocTARG).
The information bytes contain a DWARF expression
(see Section \refersec{chap:dwarfexpressions})
or location description
\livetarg{datarep:classflag}{}
A flag \addtoindexx{flag class}
is represented explicitly as a single byte of data
-(\livetarg{chap:DWFORMflag}{DW\_FORM\_flag}) or
-implicitly (\livetarg{chap:DWFORMflagpresent}{DW\_FORM\_flag\_present}).
+(\DWFORMflagTARG) or
+implicitly (\DWFORMflagpresentTARG).
In the
first case, if the \nolink{flag} has value zero, it indicates the
absence of the attribute; if the \nolink{flag} has a non\dash zero value,
\addtoindexx{section offset!in class lineptr value}
the
\dotdebugline{} section
-(\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}).
+(\DWFORMsecoffset).
It consists of an offset from the beginning of the
\dotdebugline{}
section to the first byte of
This is an offset into the
\dotdebugloc{}
section
-(\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}).
+(\DWFORMsecoffset).
It consists of an offset from the
\addtoindexx{section offset!in class loclistptr value}
beginning of the
\addtoindexx{section offset!in class macptr value}
offset into the
\dotdebugmacinfo{} section
-(\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}).
+(\DWFORMsecoffset).
It consists of an offset from the
beginning of the \dotdebugmacinfo{}
section to the first byte of
This is an
\addtoindexx{section offset!in class rangelistptr value}
offset into the \dotdebugranges{} section
-(\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}).
+(\DWFORMsecoffset).
It consists of an
offset from the beginning of the
\dotdebugranges{} section
header for the compilation unit containing the reference. There
are five forms for this type of reference. There are fixed
length forms for one, two, four and eight byte offsets
-(respectively, \livetarg{chap:DWFORMref1}{DW\_FORM\_ref1},
-\livetarg{chap:DWFORMref2}{DW\_FORM\_ref2},
-\livetarg{chap:DWFORMref4}{DW\_FORM\_ref4},
-and \livetarg{chap:DWFORMref8}{DW\_FORM\_ref8}).
+(respectively, \DWFORMrefoneTARG,
+\DWFORMreftwoTARG,
+\DWFORMreffourTARG,
+and \DWFORMrefeightTARG).
There is also an unsigned variable
length offset encoded form that uses unsigned LEB128 numbers
-(\livetarg{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata}).
+(\DWFORMrefudataTARG).
Because this type of reference is within
the containing compilation unit no relocation of the value
is required.
it may refer to an entry in a different compilation unit
from the unit containing the reference, and may refer to an
entry in a different shared object. This type of reference
-(\livetarg{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr})
+(\DWFORMrefaddrTARG)
is an offset from the beginning of the
\dotdebuginfo{}
section of the target executable or shared object;
\textit{A debugging information entry that may be referenced by
another compilation unit using
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} must have a
+\DWFORMrefaddr{} must have a
global symbolic name.}
\textit{For a reference from one executable or shared object to
The third type of reference can identify any debugging
information type entry that has been placed in its own
\addtoindex{type unit}. This type of
-reference (\livetarg{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8}) is the
+reference (\DWFORMrefsigeight) is the
\addtoindexx{type signature}
64\dash bit type signature
(see Section \refersec{datarep:typesignaturecomputation})
\addtoindexx{string class}
A string may be represented immediately in the
debugging information entry itself
-(\livetarg{chap:DWFORMstring}{DW\_FORM\_string}), or may
+(\DWFORMstringTARG), or may
be represented as an
\addtoindexx{section offset!in class string value}
offset into a string table contained in
the \dotdebugstr{} section of the object file
-(\livetarg{chap:DWFORMstrp}{DW\_FORM\_strp}). In
+(\DWFORMstrpTARG). In
the \thirtytwobitdwarfformat, the representation of a
-\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}
+\DWFORMstrp{}
value is a 4\dash byte unsigned offset; in the \sixtyfourbitdwarfformat,
it is an 8\dash byte unsigned offset
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-If the \livelink{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8}
+If the \DWATuseUTFeight{}
\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
compilation unit entry, string values are encoded using the
UTF\dash 8 (\addtoindex{Unicode} Transformation Format\dash 8) from the Universal
\endfoot
\hline \ddag\ \textit{New in DWARF Version 5}
\endlastfoot
-\livelink{chap:DWATsibling}{DW\_AT\_sibling}&0x01&\livelink{chap:classreference}{reference}
+\DWATsibling&0x01&\livelink{chap:classreference}{reference}
\addtoindexx{sibling attribute!encoding} \\
-\livelink{chap:DWATlocation}{DW\_AT\_location}&0x02&\livelink{chap:classexprloc}{exprloc},
+\DWATlocation&0x02&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr}\addtoindexx{location attribute!encoding} \\
-\livelink{chap:DWATname}{DW\_AT\_name}&0x03&\livelink{chap:classstring}{string}
+\DWATname&0x03&\livelink{chap:classstring}{string}
\addtoindexx{name attribute!encoding} \\
-\livelink{chap:DWATordering}{DW\_AT\_ordering}&0x09&\livelink{chap:classconstant}{constant}
+\DWATordering&0x09&\livelink{chap:classconstant}{constant}
\addtoindexx{ordering attribute!encoding} \\
-\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}&0x0b&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
+\DWATbytesize&0x0b&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
\livelink{chap:classreference}{reference} \addtoindexx{byte size attribute!encoding} \\
-\livelink{chap:DWATbitoffset}{DW\_AT\_bit\_offset}&0x0c&\livelink{chap:classconstant}{constant},
+\DWATbitoffset&0x0c&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit offset attribute!encoding} \\
-\livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}&0x0d&\livelink{chap:classconstant}{constant},
+\DWATbitsize&0x0d&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit size attribute!encoding} \\
-\livelink{chap:DWATstmtlist}{DW\_AT\_stmt\_list}&0x10&\livelink{chap:classlineptr}{lineptr}
+\DWATstmtlist&0x10&\livelink{chap:classlineptr}{lineptr}
\addtoindexx{statement list attribute!encoding} \\
-\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc}&0x11&\livelink{chap:classaddress}{address}
+\DWATlowpc&0x11&\livelink{chap:classaddress}{address}
\addtoindexx{low PC attribute!encoding} \\
-\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc}&0x12&\livelink{chap:classaddress}{address}, \livelink{chap:classconstant}{constant}
+\DWAThighpc&0x12&\livelink{chap:classaddress}{address}, \livelink{chap:classconstant}{constant}
\addtoindexx{high PC attribute!encoding} \\
-\livelink{chap:DWATlanguage}{DW\_AT\_language}&0x13&\livelink{chap:classconstant}{constant}
+\DWATlanguage&0x13&\livelink{chap:classconstant}{constant}
\addtoindexx{language attribute!encoding} \\
-\livelink{chap:DWATdiscr}{DW\_AT\_discr}&0x15&\livelink{chap:classreference}{reference}
+\DWATdiscr&0x15&\livelink{chap:classreference}{reference}
\addtoindexx{discriminant attribute!encoding} \\
-\livelink{chap:DWATdiscrvalue}{DW\_AT\_discr\_value}&0x16&\livelink{chap:classconstant}{constant}
+\DWATdiscrvalue&0x16&\livelink{chap:classconstant}{constant}
\addtoindexx{discriminant value attribute!encoding} \\
-\livelink{chap:DWATvisibility}{DW\_AT\_visibility}&0x17&\livelink{chap:classconstant}{constant}
+\DWATvisibility&0x17&\livelink{chap:classconstant}{constant}
\addtoindexx{visibility attribute!encoding} \\
-\livelink{chap:DWATimport}{DW\_AT\_import}&0x18&\livelink{chap:classreference}{reference}
+\DWATimport&0x18&\livelink{chap:classreference}{reference}
\addtoindexx{import attribute!encoding} \\
-\livelink{chap:DWATstringlength}{DW\_AT\_string\_length}&0x19&\livelink{chap:classexprloc}{exprloc},
+\DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{string length attribute!encoding} \\
-\livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}&0x1a&\livelink{chap:classreference}{reference}
+\DWATcommonreference&0x1a&\livelink{chap:classreference}{reference}
\addtoindexx{common reference attribute!encoding} \\
-\livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir}&0x1b&\livelink{chap:classstring}{string}
+\DWATcompdir&0x1b&\livelink{chap:classstring}{string}
\addtoindexx{compilation directory attribute!encoding} \\
-\livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}&0x1c&\livelink{chap:classblock}{block}, \livelink{chap:classconstant}{constant}, \livelink{chap:classstring}{string}
+\DWATconstvalue&0x1c&\livelink{chap:classblock}{block}, \livelink{chap:classconstant}{constant}, \livelink{chap:classstring}{string}
\addtoindexx{constant value attribute!encoding} \\
-\livelink{chap:DWATcontainingtype}{DW\_AT\_containing\_type}&0x1d&\livelink{chap:classreference}{reference}
+\DWATcontainingtype&0x1d&\livelink{chap:classreference}{reference}
\addtoindexx{containing type attribute!encoding} \\
-\livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value}&0x1e&\livelink{chap:classreference}{reference}
+\DWATdefaultvalue&0x1e&\livelink{chap:classreference}{reference}
\addtoindexx{default value attribute!encoding} \\
-\livelink{chap:DWATinline}{DW\_AT\_inline}&0x20&\livelink{chap:classconstant}{constant}
+\DWATinline&0x20&\livelink{chap:classconstant}{constant}
\addtoindexx{inline attribute!encoding} \\
-\livelink{chap:DWATisoptional}{DW\_AT\_is\_optional}&0x21&\livelink{chap:classflag}{flag}
+\DWATisoptional&0x21&\livelink{chap:classflag}{flag}
\addtoindexx{is optional attribute!encoding} \\
-\livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}&0x22&\livelink{chap:classconstant}{constant},
+\DWATlowerbound&0x22&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{lower bound attribute!encoding} \\
-\livelink{chap:DWATproducer}{DW\_AT\_producer}&0x25&\livelink{chap:classstring}{string} \addtoindexx{producer attribute!encoding} \\
-\livelink{chap:DWATprototyped}{DW\_AT\_prototyped}&0x27&\livelink{chap:classflag}{flag}
+\DWATproducer&0x25&\livelink{chap:classstring}{string} \addtoindexx{producer attribute!encoding} \\
+\DWATprototyped&0x27&\livelink{chap:classflag}{flag}
\addtoindexx{prototyped attribute!encoding} \\
-\livelink{chap:DWATreturnaddr}{DW\_AT\_return\_addr}&0x2a&\livelink{chap:classexprloc}{exprloc},
+\DWATreturnaddr&0x2a&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{return address attribute!encoding} \\
% FIXME: lower case , not Constant
-\livelink{chap:DWATstartscope}{DW\_AT\_start\_scope}&0x2c&\livelink{chap:classconstant}{constant},
+\DWATstartscope&0x2c&\livelink{chap:classconstant}{constant},
\livelink{chap:classrangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding} \\
-\livelink{chap:DWATbitstride}{DW\_AT\_bit\_stride}&0x2e&\livelink{chap:classconstant}{constant},
+\DWATbitstride&0x2e&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit stride attribute!encoding} \\
-\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}&0x2f&\livelink{chap:classconstant}{constant},
+\DWATupperbound&0x2f&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{upper bound attribute!encoding} \\
-\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}&0x31&\livelink{chap:classreference}{reference}
+\DWATabstractorigin&0x31&\livelink{chap:classreference}{reference}
\addtoindexx{abstract origin attribute!encoding} \\
-\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}&0x32&\livelink{chap:classconstant}{constant}
+\DWATaccessibility&0x32&\livelink{chap:classconstant}{constant}
\addtoindexx{accessibility attribute!encoding} \\
-\livelink{chap:DWATaddressclass}{DW\_AT\_address\_class}&0x33&\livelink{chap:classconstant}{constant}
+\DWATaddressclass&0x33&\livelink{chap:classconstant}{constant}
\addtoindexx{address class attribute!encoding} \\
-\livelink{chap:DWATartificial}{DW\_AT\_artificial}&0x34&\livelink{chap:classflag}{flag}
+\DWATartificial&0x34&\livelink{chap:classflag}{flag}
\addtoindexx{artificial attribute!encoding} \\
-\livelink{chap:DWATbasetypes}{DW\_AT\_base\_types}&0x35&\livelink{chap:classreference}{reference}
+\DWATbasetypes&0x35&\livelink{chap:classreference}{reference}
\addtoindexx{base types attribute!encoding} \\
-\livelink{chap:DWATcallingconvention}{DW\_AT\_calling\_convention}&0x36&\livelink{chap:classconstant}{constant}
+\DWATcallingconvention&0x36&\livelink{chap:classconstant}{constant}
\addtoindexx{calling convention attribute!encoding} \\
-\livelink{chap:DWATcount}{DW\_AT\_count}&0x37&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference}
+\DWATcount&0x37&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference}
\addtoindexx{count attribute!encoding} \\
-\livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location}&0x38&\livelink{chap:classconstant}{constant},
+\DWATdatamemberlocation&0x38&\livelink{chap:classconstant}{constant},
\livelink{chap:classexprloc}{exprloc}, \livelink{chap:classloclistptr}{loclistptr}
\addtoindexx{data member attribute!encoding} \\
-\livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}&0x39&\livelink{chap:classconstant}{constant}
+\DWATdeclcolumn&0x39&\livelink{chap:classconstant}{constant}
\addtoindexx{declaration column attribute!encoding} \\
-\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}&0x3a&\livelink{chap:classconstant}{constant}
+\DWATdeclfile&0x3a&\livelink{chap:classconstant}{constant}
\addtoindexx{declaration file attribute!encoding} \\
-\livelink{chap:DWATdeclline}{DW\_AT\_decl\_line}&0x3b&\livelink{chap:classconstant}{constant}
+\DWATdeclline&0x3b&\livelink{chap:classconstant}{constant}
\addtoindexx{declaration line attribute!encoding} \\
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}&0x3c&\livelink{chap:classflag}{flag}
+\DWATdeclaration&0x3c&\livelink{chap:classflag}{flag}
\addtoindexx{declaration attribute!encoding} \\
-\livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list}&0x3d&\livelink{chap:classblock}{block}
+\DWATdiscrlist&0x3d&\livelink{chap:classblock}{block}
\addtoindexx{discriminant list attribute!encoding} \\
-\livelink{chap:DWATencoding}{DW\_AT\_encoding}&0x3e&\livelink{chap:classconstant}{constant}
+\DWATencoding&0x3e&\livelink{chap:classconstant}{constant}
\addtoindexx{encoding attribute!encoding} \\
-\livelink{chap:DWATexternal}{DW\_AT\_external}&\xiiif&\livelink{chap:classflag}{flag}
+\DWATexternal&\xiiif&\livelink{chap:classflag}{flag}
\addtoindexx{external attribute!encoding} \\
-\livelink{chap:DWATframebase}{DW\_AT\_frame\_base}&0x40&\livelink{chap:classexprloc}{exprloc},
+\DWATframebase&0x40&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding} \\
-\livelink{chap:DWATfriend}{DW\_AT\_friend}&0x41&\livelink{chap:classreference}{reference}
+\DWATfriend&0x41&\livelink{chap:classreference}{reference}
\addtoindexx{friend attribute!encoding} \\
-\livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}&0x42&\livelink{chap:classconstant}{constant}
+\DWATidentifiercase&0x42&\livelink{chap:classconstant}{constant}
\addtoindexx{identifier case attribute!encoding} \\
-\livelink{chap:DWATmacroinfo}{DW\_AT\_macro\_info}&0x43&\livelink{chap:classmacptr}{macptr}
+\DWATmacroinfo&0x43&\livelink{chap:classmacptr}{macptr}
\addtoindexx{macro information attribute!encoding} \\
-\livelink{chap:DWATnamelistitem}{DW\_AT\_namelist\_item}&0x44&\livelink{chap:classreference}{reference}
+\DWATnamelistitem&0x44&\livelink{chap:classreference}{reference}
\addtoindexx{name list item attribute!encoding} \\
-\livelink{chap:DWATpriority}{DW\_AT\_priority}&0x45&\livelink{chap:classreference}{reference}
+\DWATpriority&0x45&\livelink{chap:classreference}{reference}
\addtoindexx{priority attribute!encoding} \\
-\livelink{chap:DWATsegment}{DW\_AT\_segment}&0x46&\livelink{chap:classexprloc}{exprloc},
+\DWATsegment&0x46&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{segment attribute!encoding} \\
-\livelink{chap:DWATspecification}{DW\_AT\_specification}&0x47&\livelink{chap:classreference}{reference}
+\DWATspecification&0x47&\livelink{chap:classreference}{reference}
\addtoindexx{specification attribute!encoding} \\
-\livelink{chap:DWATstaticlink}{DW\_AT\_static\_link}&0x48&\livelink{chap:classexprloc}{exprloc},
+\DWATstaticlink&0x48&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{static link attribute!encoding} \\
-\livelink{chap:DWATtype}{DW\_AT\_type}&0x49&\livelink{chap:classreference}{reference}
+\DWATtype&0x49&\livelink{chap:classreference}{reference}
\addtoindexx{type attribute!encoding} \\
-\livelink{chap:DWATuselocation}{DW\_AT\_use\_location}&0x4a&\livelink{chap:classexprloc}{exprloc},
+\DWATuselocation&0x4a&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{location list attribute!encoding} \\
-\livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}&0x4b&\livelink{chap:classflag}{flag}
+\DWATvariableparameter&0x4b&\livelink{chap:classflag}{flag}
\addtoindexx{variable parameter attribute!encoding} \\
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality}&0x4c&\livelink{chap:classconstant}{constant}
+\DWATvirtuality&0x4c&\livelink{chap:classconstant}{constant}
\addtoindexx{virtuality attribute!encoding} \\
-\livelink{chap:DWATvtableelemlocation}{DW\_AT\_vtable\_elem\_location}&0x4d&\livelink{chap:classexprloc}{exprloc},
+\DWATvtableelemlocation&0x4d&\livelink{chap:classexprloc}{exprloc},
\livelink{chap:classloclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding} \\
-\livelink{chap:DWATallocated}{DW\_AT\_allocated}&0x4e&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
+\DWATallocated&0x4e&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
\livelink{chap:classreference}{reference} \addtoindexx{allocated attribute!encoding} \\
-\livelink{chap:DWATassociated}{DW\_AT\_associated}&0x4f&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
+\DWATassociated&0x4f&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
\livelink{chap:classreference}{reference} \addtoindexx{associated attribute!encoding} \\
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}&0x50&\livelink{chap:classexprloc}{exprloc}
+\DWATdatalocation&0x50&\livelink{chap:classexprloc}{exprloc}
\addtoindexx{data location attribute!encoding} \\
-\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}&0x51&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
+\DWATbytestride&0x51&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc},
\livelink{chap:classreference}{reference} \addtoindexx{byte stride attribute!encoding} \\
-\livelink{chap:DWATentrypc}{DW\_AT\_entry\_pc}&0x52&\livelink{chap:classaddress}{address}
+\DWATentrypc&0x52&\livelink{chap:classaddress}{address}
\addtoindexx{entry pc attribute!encoding} \\
-\livelink{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8}&0x53&\livelink{chap:classflag}{flag}
+\DWATuseUTFeight&0x53&\livelink{chap:classflag}{flag}
\addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8} \\
-\livelink{chap:DWATextension}{DW\_AT\_extension}&0x54&\livelink{chap:classreference}{reference}
+\DWATextension&0x54&\livelink{chap:classreference}{reference}
\addtoindexx{extension attribute!encoding} \\
-\livelink{chap:DWATranges}{DW\_AT\_ranges}&0x55&\livelink{chap:classrangelistptr}{rangelistptr}
+\DWATranges&0x55&\livelink{chap:classrangelistptr}{rangelistptr}
\addtoindexx{ranges attribute!encoding} \\
-\livelink{chap:DWATtrampoline}{DW\_AT\_trampoline}&0x56&\livelink{chap:classaddress}{address}, \livelink{chap:classflag}{flag},
+\DWATtrampoline&0x56&\livelink{chap:classaddress}{address}, \livelink{chap:classflag}{flag},
\livelink{chap:classreference}{reference}, \livelink{chap:classstring}{string} \addtoindexx{trampoline attribute!encoding} \\
-\livelink{chap:DWATcallcolumn}{DW\_AT\_call\_column}&0x57&\livelink{chap:classconstant}{constant}
+\DWATcallcolumn&0x57&\livelink{chap:classconstant}{constant}
\addtoindexx{call column attribute!encoding} \\
-\livelink{chap:DWATcallfile}{DW\_AT\_call\_file}&0x58&\livelink{chap:classconstant}{constant}
+\DWATcallfile&0x58&\livelink{chap:classconstant}{constant}
\addtoindexx{call file attribute!encoding} \\
-\livelink{chap:DWATcallline}{DW\_AT\_call\_line}&0x59&\livelink{chap:classconstant}{constant}
+\DWATcallline&0x59&\livelink{chap:classconstant}{constant}
\addtoindexx{call line attribute!encoding} \\
-\livelink{chap:DWATdescription}{DW\_AT\_description}&0x5a&\livelink{chap:classstring}{string}
+\DWATdescription&0x5a&\livelink{chap:classstring}{string}
\addtoindexx{description attribute!encoding} \\
-\livelink{chap:DWATbinaryscale}{DW\_AT\_binary\_scale}&0x5b&\livelink{chap:classconstant}{constant}
+\DWATbinaryscale&0x5b&\livelink{chap:classconstant}{constant}
\addtoindexx{binary scale attribute!encoding} \\
-\livelink{chap:DWATdecimalscale}{DW\_AT\_decimal\_scale}&0x5c&\livelink{chap:classconstant}{constant}
+\DWATdecimalscale&0x5c&\livelink{chap:classconstant}{constant}
\addtoindexx{decimal scale attribute!encoding} \\
-\livelink{chap:DWATsmall}{DW\_AT\_small} &0x5d&\livelink{chap:classreference}{reference}
+\DWATsmall{} &0x5d&\livelink{chap:classreference}{reference}
\addtoindexx{small attribute!encoding} \\
-\livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign}&0x5e&\livelink{chap:classconstant}{constant}
+\DWATdecimalsign&0x5e&\livelink{chap:classconstant}{constant}
\addtoindexx{decimal scale attribute!encoding} \\
-\livelink{chap:DWATdigitcount}{DW\_AT\_digit\_count}&0x5f&\livelink{chap:classconstant}{constant}
+\DWATdigitcount&0x5f&\livelink{chap:classconstant}{constant}
\addtoindexx{digit count attribute!encoding} \\
-\livelink{chap:DWATpicturestring}{DW\_AT\_picture\_string}&0x60&\livelink{chap:classstring}{string}
+\DWATpicturestring&0x60&\livelink{chap:classstring}{string}
\addtoindexx{picture string attribute!encoding} \\
-\livelink{chap:DWATmutable}{DW\_AT\_mutable}&0x61&\livelink{chap:classflag}{flag}
+\DWATmutable&0x61&\livelink{chap:classflag}{flag}
\addtoindexx{mutable attribute!encoding} \\
-\livelink{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled}&0x62&\livelink{chap:classflag}{flag}
+\DWATthreadsscaled&0x62&\livelink{chap:classflag}{flag}
\addtoindexx{thread scaled attribute!encoding} \\
-\livelink{chap:DWATexplicit}{DW\_AT\_explicit}&0x63&\livelink{chap:classflag}{flag}
+\DWATexplicit&0x63&\livelink{chap:classflag}{flag}
\addtoindexx{explicit attribute!encoding} \\
-\livelink{chap:DWATobjectpointer}{DW\_AT\_object\_pointer}&0x64&\livelink{chap:classreference}{reference}
+\DWATobjectpointer&0x64&\livelink{chap:classreference}{reference}
\addtoindexx{object pointer attribute!encoding} \\
-\livelink{chap:DWATendianity}{DW\_AT\_endianity}&0x65&\livelink{chap:classconstant}{constant}
+\DWATendianity&0x65&\livelink{chap:classconstant}{constant}
\addtoindexx{endianity attribute!encoding} \\
-\livelink{chap:DWATelemental}{DW\_AT\_elemental}&0x66&\livelink{chap:classflag}{flag}
+\DWATelemental&0x66&\livelink{chap:classflag}{flag}
\addtoindexx{elemental attribute!encoding} \\
-\livelink{chap:DWATpure}{DW\_AT\_pure}&0x67&\livelink{chap:classflag}{flag}
+\DWATpure&0x67&\livelink{chap:classflag}{flag}
\addtoindexx{pure attribute!encoding} \\
-\livelink{chap:DWATrecursive}{DW\_AT\_recursive}&0x68&\livelink{chap:classflag}{flag}
+\DWATrecursive&0x68&\livelink{chap:classflag}{flag}
\addtoindexx{recursive attribute!encoding} \\
-\livelink{chap:DWATsignature}{DW\_AT\_signature} &0x69&\livelink{chap:classreference}{reference}
+\DWATsignature{} &0x69&\livelink{chap:classreference}{reference}
\addtoindexx{signature attribute!encoding} \\
-\livelink{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram} &0x6a&\livelink{chap:classflag}{flag}
+\DWATmainsubprogram{} &0x6a&\livelink{chap:classflag}{flag}
\addtoindexx{main subprogram attribute!encoding} \\
-\livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset} &0x6b&\livelink{chap:classconstant}{constant}
+\DWATdatabitoffset{} &0x6b&\livelink{chap:classconstant}{constant}
\addtoindexx{data bit offset attribute!encoding} \\
-\livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} &0x6c&\livelink{chap:classflag}{flag}
+\DWATconstexpr{} &0x6c&\livelink{chap:classflag}{flag}
\addtoindexx{constant expression attribute!encoding} \\
-\livelink{chap:DWATenumclass}{DW\_AT\_enum\_class} &0x6d&\livelink{chap:classflag}{flag}
+\DWATenumclass{} &0x6d&\livelink{chap:classflag}{flag}
\addtoindexx{enumeration class attribute!encoding} \\
-\livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} &0x6e&\livelink{chap:classstring}{string}
+\DWATlinkagename{} &0x6e&\livelink{chap:classstring}{string}
\addtoindexx{linkage name attribute!encoding} \\
-\livelink{chap:DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size} \ddag&0x6f&
+\DWATstringlengthbitsize{} \ddag&0x6f&
\livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length} \\
-\livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size} \ddag&0x70&
+\DWATstringlengthbytesize{} \ddag&0x70&
\livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length} \\
\DWATrank~\ddag&0x71&
\livelink{chap:DWATrank}{constant, exprloc}\addtoindexx{rank attribute!encoding} \\
-\livelink{chap:DWXXXlohiuser}{DW\_AT\_lo\_user}&0x2000 & --- \addtoindexx{low user attribute encoding} \\
-\livelink{chap:DWXXXlohiuser}{DW\_AT\_hi\_user}&\xiiifff& --- \addtoindexx{high user attribute encoding} \\
+\DWATlouser&0x2000 & --- \addtoindexx{low user attribute encoding} \\
+\DWAThiuser&\xiiifff& --- \addtoindexx{high user attribute encoding} \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-\livelink{chap:DWFORMaddr}{DW\_FORM\_addr}&0x01&\livelink{chap:classaddress}{address} \\
-\livelink{chap:DWFORMblock2}{DW\_FORM\_block2}&0x03&\livelink{chap:classblock}{block} \\
-\livelink{chap:DWFORMblock4}{DW\_FORM\_block4}&0x04&\livelink{chap:classblock}{block} \\
-\livelink{chap:DWFORMdata2}{DW\_FORM\_data2}&0x05&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMdata4}{DW\_FORM\_data4}&0x06&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMdata8}{DW\_FORM\_data8}&0x07&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMstring}{DW\_FORM\_string}&0x08&\livelink{chap:classstring}{string} \\
-\livelink{chap:DWFORMblock}{DW\_FORM\_block}&0x09&\livelink{chap:classblock}{block} \\
-\livelink{chap:DWFORMblock1}{DW\_FORM\_block1}&0x0a&\livelink{chap:classblock}{block} \\
-\livelink{chap:DWFORMdata1}{DW\_FORM\_data1}&0x0b&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMflag}{DW\_FORM\_flag}&0x0c&\livelink{chap:classflag}{flag} \\
-\livelink{chap:DWFORMsdata}{DW\_FORM\_sdata}&0x0d&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}&0x0e&\livelink{chap:classstring}{string} \\
-\livelink{chap:DWFORMudata}{DW\_FORM\_udata}&0x0f&\livelink{chap:classconstant}{constant} \\
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr}&0x10&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMref1}{DW\_FORM\_ref1}&0x11&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMref2}{DW\_FORM\_ref2}&0x12&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMref4}{DW\_FORM\_ref4}&0x13&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMref8}{DW\_FORM\_ref8}&0x14&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata}&0x15&\livelink{chap:classreference}{reference} \\
-\livelink{chap:DWFORMindirect}{DW\_FORM\_indirect}&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset} &0x17&\livelink{chap:classlineptr}{lineptr}, \livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr}, \livelink{chap:classrangelistptr}{rangelistptr} \\
-\livelink{chap:DWFORMexprloc}{DW\_FORM\_exprloc} &0x18&\livelink{chap:classexprloc}{exprloc} \\
-\livelink{chap:DWFORMflagpresent}{DW\_FORM\_flag\_present} &0x19&\livelink{chap:classflag}{flag} \\
-\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8} &0x20&\livelink{chap:classreference}{reference} \\
+\DWFORMaddr &0x01&\livelink{chap:classaddress}{address} \\
+\DWFORMblocktwo &0x03&\livelink{chap:classblock}{block} \\
+\DWFORMblockfour &0x04&\livelink{chap:classblock}{block} \\
+\DWFORMdatatwo &0x05&\livelink{chap:classconstant}{constant} \\
+\DWFORMdatafour &0x06&\livelink{chap:classconstant}{constant} \\
+\DWFORMdataeight &0x07&\livelink{chap:classconstant}{constant} \\
+\DWFORMstring&0x08&\livelink{chap:classstring}{string} \\
+\DWFORMblock&0x09&\livelink{chap:classblock}{block} \\
+\DWFORMblockone &0x0a&\livelink{chap:classblock}{block} \\
+\DWFORMdataone &\livelink{chap:classconstant}{constant} \\
+\DWFORMflag&0x0c&\livelink{chap:classflag}{flag} \\
+\DWFORMsdata&0x0d&\livelink{chap:classconstant}{constant} \\
+\DWFORMstrp&0x0e&\livelink{chap:classstring}{string} \\
+\DWFORMudata&0x0f&\livelink{chap:classconstant}{constant} \\
+\DWFORMrefaddr&0x10&\livelink{chap:classreference}{reference} \\
+\DWFORMrefone&0x11&\livelink{chap:classreference}{reference} \\
+\DWFORMreftwo&0x12&\livelink{chap:classreference}{reference} \\
+\DWFORMreffour&0x13&\livelink{chap:classreference}{reference} \\
+\DWFORMrefeight&0x14&\livelink{chap:classreference}{reference} \\
+\DWFORMrefudata&0x15&\livelink{chap:classreference}{reference} \\
+\DWFORMindirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
+\DWFORMsecoffset{} &0x17&\livelink{chap:classlineptr}{lineptr}, \livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr}, \livelink{chap:classrangelistptr}{rangelistptr} \\
+\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
+\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
+\DWFORMrefsigeight &0x20&\livelink{chap:classreference}{reference} \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-\livelink{chap:DWOPaddr}{DW\_OP\_addr}&0x03&1 & constant address \\
+\DWOPaddr&0x03&1 & constant address \\
& & &(size target specific) \\
-\livelink{chap:DWOPderef}{DW\_OP\_deref}&0x06&0 & \\
-
-
-\livelink{chap:DWOPconst1u}{DW\_OP\_const1u}&0x08&1&1\dash byte constant \\
-\livelink{chap:DWOPconst1s}{DW\_OP\_const1s}&0x09&1&1\dash byte constant \\
-\livelink{chap:DWOPconst2u}{DW\_OP\_const2u}&0x0a&1&2\dash byte constant \\
-\livelink{chap:DWOPconst2s}{DW\_OP\_const2s}&0x0b&1&2\dash byte constant \\
-\livelink{chap:DWOPconst4u}{DW\_OP\_const4u}&0x0c&1&4\dash byte constant \\
-\livelink{chap:DWOPconst4s}{DW\_OP\_const4s}&0x0d&1&4\dash byte constant \\
-\livelink{chap:DWOPconst8u}{DW\_OP\_const8u}&0x0e&1&8\dash byte constant \\
-\livelink{chap:DWOPconst8s}{DW\_OP\_const8s}&0x0f&1&8\dash byte constant \\
-\livelink{chap:DWOPconstu}{DW\_OP\_constu}&0x10&1&ULEB128 constant \\
-\livelink{chap:DWOPconsts}{DW\_OP\_consts}&0x11&1&SLEB128 constant \\
-\livelink{chap:DWOPdup}{DW\_OP\_dup}&0x12&0 & \\
-\livelink{chap:DWOPdrop}{DW\_OP\_drop}&0x13&0 & \\
-\livelink{chap:DWOPover}{DW\_OP\_over}&0x14&0 & \\
-\livelink{chap:DWOPpick}{DW\_OP\_pick}&0x15&1&1\dash byte stack index \\
-\livelink{chap:DWOPswap}{DW\_OP\_swap}&0x16&0 & \\
-\livelink{chap:DWOProt}{DW\_OP\_rot}&0x17&0 & \\
-\livelink{chap:DWOPxderef}{DW\_OP\_xderef}&0x18&0 & \\
-\livelink{chap:DWOPabs}{DW\_OP\_abs}&0x19&0 & \\
-\livelink{chap:DWOPand}{DW\_OP\_and}&0x1a&0 & \\
-\livelink{chap:DWOPdiv}{DW\_OP\_div}&0x1b&0 & \\
-
-
-
-\livelink{chap:DWOPminus}{DW\_OP\_minus}&0x1c&0 & \\
-\livelink{chap:DWOPmod}{DW\_OP\_mod}&0x1d&0 & \\
-\livelink{chap:DWOPmul}{DW\_OP\_mul}&0x1e&0 & \\
-\livelink{chap:DWOPneg}{DW\_OP\_neg}&0x1f&0 & \\
-\livelink{chap:DWOPnot}{DW\_OP\_not}&0x20&0 & \\
-\livelink{chap:DWOPor}{DW\_OP\_or}&0x21&0 & \\
-\livelink{chap:DWOPplus}{DW\_OP\_plus}&0x22&0 & \\
-\livelink{chap:DWOPplusuconst}{DW\_OP\_plus\_uconst}&0x23&1&ULEB128 addend \\
-\livelink{chap:DWOPshl}{DW\_OP\_shl}&0x24&0 & \\
-\livelink{chap:DWOPshr}{DW\_OP\_shr}&0x25&0 & \\
-\livelink{chap:DWOPshra}{DW\_OP\_shra}&0x26&0 & \\
-\livelink{chap:DWOPxor}{DW\_OP\_xor}&0x27&0 & \\
-
-\livelink{chap:DWOPbra}{DW\_OP\_bra}&0x28&1 & signed 2\dash byte constant \\
-\livelink{chap:DWOPeq}{DW\_OP\_eq}&0x29&0 & \\
-\livelink{chap:DWOPge}{DW\_OP\_ge}&0x2a&0 & \\
-\livelink{chap:DWOPgt}{DW\_OP\_gt}&0x2b&0 & \\
-\livelink{chap:DWOPle}{DW\_OP\_le}&0x2c&0 & \\
-\livelink{chap:DWOPlt}{DW\_OP\_lt}&0x2d&0 & \\
-\livelink{chap:DWOPne}{DW\_OP\_ne}&0x2e&0 & \\
-\livelink{chap:DWOPskip}{DW\_OP\_skip}&0x2f&1&signed 2\dash byte constant \\ \hline
-
-\livelink{chap:DWOPlit0}{DW\_OP\_lit0}&0x30 & 0 & \\
-\livelink{chap:DWOPlit1}{DW\_OP\_lit1}&0x31 & 0& literals 0 .. 31 = \\
-\ldots & & &\hspace{0.5cm}(\livelink{chap:DWOPlit0}{DW\_OP\_lit0} + literal) \\
-\livelink{chap:DWOPlit31}{DW\_OP\_lit31}&0x4f & 0 & \\ \hline
-
-\livelink{chap:DWOPreg0}{DW\_OP\_reg0} & 0x50 & 0 & \\
-\livelink{chap:DWOPreg1}{DW\_OP\_reg1} & 0x51 & 0® 0 .. 31 = \\
-\ldots & & &\hspace{0.5cm}(\livelink{chap:DWOPreg0}{DW\_OP\_reg0} + regnum) \\
-\livelink{chap:DWOPreg31}{DW\_OP\_reg31} & 0x6f & 0 & \\ \hline
-
-\livelink{chap:DWOPbreg0}{DW\_OP\_breg0} & 0x70 &1 & SLEB128 offset \\
-\livelink{chap:DWOPbreg1}{DW\_OP\_breg1} & 0x71 & 1 &base register 0 .. 31 = \\
-... & & &\hspace{0.5cm}(\livelink{chap:DWOPbreg0}{DW\_OP\_breg0} + regnum) \\
-\livelink{chap:DWOPbreg31}{DW\_OP\_breg31} & 0x8f & 1 & \\ \hline
-
-\livelink{chap:DWOPregx}{DW\_OP\_regx} & 0x90 &1&ULEB128 register \\
-\livelink{chap:DWOPfbreg}{DW\_OP\_fbreg} & 0x91&1&SLEB128 offset \\
-\livelink{chap:DWOPbregx}{DW\_OP\_bregx} & 0x92&2 &ULEB128 register followed \\
+\DWOPderef&0x06&0 & \\
+
+\DWOPconstoneu&0x08&1&1\dash byte constant \\
+\DWOPconstones&0x09&1&1\dash byte constant \\
+\DWOPconsttwou&0x0a&1&2\dash byte constant \\
+\DWOPconsttwos&0x0b&1&2\dash byte constant \\
+\DWOPconstfouru&0x0c&1&4\dash byte constant \\
+\DWOPconstfours&0x0d&1&4\dash byte constant \\
+\DWOPconsteightu&0x0e&1&8\dash byte constant \\
+\DWOPconsteights&0x0f&1&8\dash byte constant \\
+\DWOPconstu&0x10&1&ULEB128 constant \\
+\DWOPconsts&0x11&1&SLEB128 constant \\
+\DWOPdup&0x12&0 & \\
+\DWOPdrop&0x13&0 & \\
+\DWOPover&0x14&0 & \\
+\DWOPpick&0x15&1&1\dash byte stack index \\
+\DWOPswap&0x16&0 & \\
+\DWOProt&0x17&0 & \\
+\DWOPxderef&0x18&0 & \\
+\DWOPabs&0x19&0 & \\
+\DWOPand&0x1a&0 & \\
+\DWOPdiv&0x1b&0 & \\
+
+
+
+\DWOPminus&0x1c&0 & \\
+\DWOPmod&0x1d&0 & \\
+\DWOPmul&0x1e&0 & \\
+\DWOPneg&0x1f&0 & \\
+\DWOPnot&0x20&0 & \\
+\DWOPor&0x21&0 & \\
+\DWOPplus&0x22&0 & \\
+\DWOPplusuconst&0x23&1&ULEB128 addend \\
+\DWOPshl&0x24&0 & \\
+\DWOPshr&0x25&0 & \\
+\DWOPshra&0x26&0 & \\
+\DWOPxor&0x27&0 & \\
+
+\DWOPbra&0x28&1 & signed 2\dash byte constant \\
+\DWOPeq&0x29&0 & \\
+\DWOPge&0x2a&0 & \\
+\DWOPgt&0x2b&0 & \\
+\DWOPle&0x2c&0 & \\
+\DWOPlt&0x2d&0 & \\
+\DWOPne&0x2e&0 & \\
+\DWOPskip&0x2f&1&signed 2\dash byte constant \\ \hline
+
+\DWOPlitzero & 0x30 & 0 & \\
+\DWOPlitone & 0x31 & 0& literals 0 .. 31 = \\
+\ldots & & &\hspace{0.5cm}(\DWOPlitzero + literal) \\
+\DWOPlitthirtyone & 0x4f & 0 & \\ \hline
+
+\DWOPregzero & 0x50 & 0 & \\
+\DWOPregone & 0x51 & 0® 0 .. 31 = \\
+\ldots & & &\hspace{0.5cm}(\DWOPregzero + regnum) \\
+\DWOPregthirtyone & 0x6f & 0 & \\ \hline
+
+\DWOPbregzero & 0x70 &1 & SLEB128 offset \\
+\DWOPbregone & 0x71 & 1 &base register 0 .. 31 = \\
+... & & &\hspace{0.5cm}(\DWOPbregzero + regnum) \\
+\DWOPbregthirtyone & 0x8f & 1 & \\ \hline
+
+\DWOPregx{} & 0x90 &1&ULEB128 register \\
+\DWOPfbreg{} & 0x91&1&SLEB128 offset \\
+\DWOPbregx{} & 0x92&2 &ULEB128 register followed \\
& & & by SLEB128 offset \\
-\livelink{chap:DWOPpiece}{DW\_OP\_piece} & 0x93 &1& ULEB128 size of piece addressed \\
-\livelink{chap:DWOPderefsize}{DW\_OP\_deref\_size} & 0x94 &1& 1-byte size of data retrieved \\
-\livelink{chap:DWOPxderefsize}{DW\_OP\_xderef\_size} & 0x95&1&1-byte size of data retrieved \\
-\livelink{chap:DWOPnop}{DW\_OP\_nop} & 0x96 &0& \\
+\DWOPpiece{} & 0x93 &1& ULEB128 size of piece addressed \\
+\DWOPderefsize{} & 0x94 &1& 1-byte size of data retrieved \\
+\DWOPxderefsize{} & 0x95&1&1-byte size of data retrieved \\
+\DWOPnop{} & 0x96 &0& \\
-\livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}&0x97&0 & \\
-\livelink{chap:DWOPcall2}{DW\_OP\_call2}&0x98&1& 2\dash byte offset of DIE \\
-\livelink{chap:DWOPcall4}{DW\_OP\_call4}&0x99&1& 4\dash byte offset of DIE \\
-\livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}&0x9a&1& 4\dash\ or 8\dash byte\\
+\DWOPpushobjectaddress&0x97&0 & \\
+\DWOPcalltwo&0x98&1& 2\dash byte offset of DIE \\
+\DWOPcallfour&0x99&1& 4\dash byte offset of DIE \\
+\DWOPcallref&0x9a&1& 4\dash\ or 8\dash byte\\
&&& offset of DIE \\
-\livelink{chap:DWOPformtlsaddress}{DW\_OP\_form\_tls\_address}&0x9b &0& \\
-\livelink{chap:DWOPcallframecfa}{DW\_OP\_call\_frame\_cfa} &0x9c &0& \\
-\livelink{chap:DWOPbitpiece}{DW\_OP\_bit\_piece}&0x9d &2&ULEB128 size followed by \\
+\DWOPformtlsaddress&0x9b &0& \\
+\DWOPcallframecfa{} &0x9c &0& \\
+\DWOPbitpiece&0x9d &2&ULEB128 size followed by \\
&&&ULEB128 offset\\
-\livelink{chap:DWOPimplicitvalue}{DW\_OP\_implicit\_value} &0x9e &2&ULEB128 size followed by \\
+\DWOPimplicitvalue{} &0x9e &2&ULEB128 size followed by \\
&&&\nolink{block} of that size\\
-\livelink{chap:DWOPstackvalue}{DW\_OP\_stack\_value} &0x9f &0& \\
-\livelink{chap:DWXXXlohiuser}{DW\_OP\_lo\_user} &0xe0 && \\
-\livelink{chap:DWXXXlohiuser}{DW\_OP\_hi\_user} &\xff && \\
+\DWOPstackvalue{} &0x9f &0& \\
+\DWOPlouser{} &0xe0 && \\
+\DWOPhiuser{} &\xff && \\
\end{longtable}
\end{centering}
constants used in
\addtoindexx{encoding attribute!encoding}
the
-\livelink{chap:DWATencoding}{DW\_AT\_encoding}
+\DWATencoding{}
attribute are given in
Table \refersec{tab:basetypeencodingvalues}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWATEaddress}{DW\_ATE\_address}&0x01 \\
-\livelink{chap:DWATEboolean}{DW\_ATE\_boolean}&0x02 \\
-\livelink{chap:DWATEcomplexfloat}{DW\_ATE\_complex\_float}&0x03 \\
-\livelink{chap:DWATEfloat}{DW\_ATE\_float}&0x04 \\
-\livelink{chap:DWATEsigned}{DW\_ATE\_signed}&0x05 \\
-\livelink{chap:DWATEsignedchar}{DW\_ATE\_signed\_char}&0x06 \\
-\livelink{chap:DWATEunsigned}{DW\_ATE\_unsigned}&0x07 \\
-\livelink{chap:DWATEunsignedchar}{DW\_ATE\_unsigned\_char}&0x08 \\
-\livelink{chap:DWATEimaginaryfloat}{DW\_ATE\_imaginary\_float}&0x09 \\
-\livelink{chap:DWATEpackeddecimal}{DW\_ATE\_packed\_decimal}&0x0a \\
-\livelink{chap:DWATEnumericstring}{DW\_ATE\_numeric\_string}&0x0b \\
-\livelink{chap:DWATEedited}{DW\_ATE\_edited}&0x0c \\
-\livelink{chap:DWATEsignedfixed}{DW\_ATE\_signed\_fixed}&0x0d \\
-\livelink{chap:DWATEunsignedfixed}{DW\_ATE\_unsigned\_fixed}&0x0e \\
-\livelink{chap:DWATEdecimalfloat}{DW\_ATE\_decimal\_float} & 0x0f \\
-\livelink{chap:DWATEUTF}{DW\_ATE\_UTF} & 0x10 \\
-\livelink{chap:DWXXXlohiuser}{DW\_ATE\_lo\_user} & 0x80 \\
-\livelink{chap:DWXXXlohiuser}{DW\_ATE\_hi\_user} & \xff \\
+\DWATEaddress&0x01 \\
+\DWATEboolean&0x02 \\
+\DWATEcomplexfloat&0x03 \\
+\DWATEfloat&0x04 \\
+\DWATEsigned&0x05 \\
+\DWATEsignedchar&0x06 \\
+\DWATEunsigned&0x07 \\
+\DWATEunsignedchar&0x08 \\
+\DWATEimaginaryfloat&0x09 \\
+\DWATEpackeddecimal&0x0a \\
+\DWATEnumericstring&0x0b \\
+\DWATEedited&0x0c \\
+\DWATEsignedfixed&0x0d \\
+\DWATEunsignedfixed&0x0e \\
+\DWATEdecimalfloat{} & 0x0f \\
+\DWATEUTF{} & 0x10 \\
+\DWATElouser{} & 0x80 \\
+\DWATEhiuser{} & \xff \\
\end{longtable}
\end{centering}
\needlines{4}
The encodings of the constants used in the
-\livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign} attribute
+\DWATdecimalsign{} attribute
are given in
Table \refersec{tab:decimalsignencodings}.
\hline
\endlastfoot
-\livelink{chap:DWDSunsigned}{DW\_DS\_unsigned} & 0x01 \\
-\livelink{chap:DWDSleadingoverpunch}{DW\_DS\_leading\_overpunch} & 0x02 \\
-\livelink{chap:DWDStrailingoverpunch}{DW\_DS\_trailing\_overpunch} & 0x03 \\
-\livelink{chap:DWDSleadingseparate}{DW\_DS\_leading\_separate} & 0x04 \\
-\livelink{chap:DWDStrailingseparate}{DW\_DS\_trailing\_separate} & 0x05 \\
+\DWDSunsigned{} & 0x01 \\
+\DWDSleadingoverpunch{} & 0x02 \\
+\DWDStrailingoverpunch{} & 0x03 \\
+\DWDSleadingseparate{} & 0x04 \\
+\DWDStrailingseparate{} & 0x05 \\
\end{longtable}
\end{centering}
The encodings of the constants used in the
-\livelink{chap:DWATendianity}{DW\_AT\_endianity} attribute are given in
+\DWATendianity{} attribute are given in
Table \refersec{tab:endianityencodings}.
\begin{centering}
\hline
\endlastfoot
-\livelink{chap:DWENDdefault}{DW\_END\_default} & 0x00 \\
-\livelink{chap:DWENDbig}{DW\_END\_big} & 0x01 \\
-\livelink{chap:DWENDlittle}{DW\_END\_little} & 0x02 \\
-\livelink{chap:DWXXXlohiuser}{DW\_END\_lo\_user} & 0x40 \\
-\livelink{chap:DWXXXlohiuser}{DW\_END\_hi\_user} & \xff \\
+\DWENDdefault{} & 0x00 \\
+\DWENDbig{} & 0x01 \\
+\DWENDlittle{} & 0x02 \\
+\DWENDlouser{} & 0x40 \\
+\DWENDhiuser{} & \xff \\
\end{longtable}
\end{centering}
\section{Accessibility Codes}
\label{datarep:accessibilitycodes}
The encodings of the constants used in the
-\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}
+\DWATaccessibility{}
attribute
\addtoindexx{accessibility attribute!encoding}
are given in
\hline
\endlastfoot
-\livelink{chap:DWACCESSpublic}{DW\_ACCESS\_public}&0x01 \\
-\livelink{chap:DWACCESSprotected}{DW\_ACCESS\_protected}&0x02 \\
-\livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}&0x03 \\
+\DWACCESSpublic&0x01 \\
+\DWACCESSprotected&0x02 \\
+\DWACCESSprivate&0x03 \\
\end{longtable}
\end{centering}
\section{Visibility Codes}
\label{datarep:visibilitycodes}
The encodings of the constants used in the
-\livelink{chap:DWATvisibility}{DW\_AT\_visibility} attribute are given in
+\DWATvisibility{} attribute are given in
Table \refersec{tab:visibilityencodings}.
\begin{centering}
\hline
\endlastfoot
-\livelink{chap:DWVISlocal}{DW\_VIS\_local}&0x01 \\
-\livelink{chap:DWVISexported}{DW\_VIS\_exported}&0x02 \\
-\livelink{chap:DWVISqualified}{DW\_VIS\_qualified}&0x03 \\
+\DWVISlocal&0x01 \\
+\DWVISexported&0x02 \\
+\DWVISqualified&0x03 \\
\end{longtable}
\end{centering}
\label{datarep:vitualitycodes}
The encodings of the constants used in the
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality} attribute are given in
+\DWATvirtuality{} attribute are given in
Table \refersec{tab:virtualityencodings}.
\begin{centering}
\hline
\endlastfoot
-\livelink{chap:DWVIRTUALITYnone}{DW\_VIRTUALITY\_none}&0x00 \\
-\livelink{chap:DWVIRTUALITYvirtual}{DW\_VIRTUALITY\_virtual}&0x01 \\
-\livelink{chap:DWVIRTUALITYpurevirtual}{DW\_VIRTUALITY\_pure\_virtual}&0x02 \\
+\DWVIRTUALITYnone&0x00 \\
+\DWVIRTUALITYvirtual&0x01 \\
+\DWVIRTUALITYpurevirtual&0x02 \\
\end{centering}
The value
-\livelink{chap:DWVIRTUALITYnone}{DW\_VIRTUALITY\_none} is equivalent to the absence of the
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality}
+\DWVIRTUALITYnone{} is equivalent to the absence of the
+\DWATvirtuality{}
attribute.
\section{Source Languages}
in
\addtoindexx{language name encoding}
the
-\livelink{chap:DWATlanguage}{DW\_AT\_language}
+\DWATlanguage{}
attribute are given in
Table \refersec{tab:languageencodings}.
Names marked with
also shows the
\addtoindexx{lower bound attribute!default}
default lower bound, if any, assumed for
-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
+an omitted \DWATlowerbound{} attribute in the context of a
+\DWTAGsubrangetype{} debugging information entry for each
defined language.
\begin{centering}
\dag \ \textit{See text} \\ \ddag \ \textit{New in \addtoindex{DWARF Version 5}}
\endlastfoot
-\livelink{chap:DWLANGC89}{DW\_LANG\_C89} &0x0001 &0 \\
-\livelink{chap:DWLANGC}{DW\_LANG\_C} &0x0002 &0 \\
-\livelink{chap:DWLANGAda83}{DW\_LANG\_Ada83} \dag &0x0003 &1 \addtoindexx{Ada} \\
-\livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus} &0x0004 &0 \\
-\livelink{chap:DWLANGCobol74}{DW\_LANG\_Cobol74} \dag &0x0005 &1 \\
-\livelink{chap:DWLANGCobol85}{DW\_LANG\_Cobol85} \dag &0x0006 &1 \\
-\livelink{chap:DWLANGFortran77}{DW\_LANG\_Fortran77} &0x0007 &1 \\
-\livelink{chap:DWLANGFortran90}{DW\_LANG\_Fortran90} &0x0008 &1 \\
-\livelink{chap:DWLANGPascal83}{DW\_LANG\_Pascal83} &0x0009 &1 \\
-\livelink{chap:DWLANGModula2}{DW\_LANG\_Modula2} &0x000a &1 \\
-\livelink{chap:DWLANGJava}{DW\_LANG\_Java}&0x000b &0 \\
-\livelink{chap:DWLANGC99}{DW\_LANG\_C99}&0x000c &0 \\
-\livelink{chap:DWLANGAda95}{DW\_LANG\_Ada95} \dag &0x000d &1 \addtoindexx{Ada} \\
-\livelink{chap:DWLANGFortran95}{DW\_LANG\_Fortran95} &0x000e &1 \\
-\livelink{chap:DWLANGPLI}{DW\_LANG\_PLI} \dag &0x000f &1 \\
-\livelink{chap:DWLANGObjC}{DW\_LANG\_ObjC} &0x0010 &0 \\
-\livelink{chap:DWLANGObjCplusplus}{DW\_LANG\_ObjC\_plus\_plus} &0x0011 &0 \\
-\livelink{chap:DWLANGUPC}{DW\_LANG\_UPC} &0x0012 &0 \\
-\livelink{chap:DWLANGD}{DW\_LANG\_D} &0x0013 &0 \\
-\livelink{chap:DWLANGPython}{DW\_LANG\_Python} \dag &0x0014 &0 \\
-\livelink{chap:DWLANGOpenCL}{DW\_LANG\_OpenCL} \dag \ddag &0x0015 &0 \\
-\livelink{chap:DWLANGGo}{DW\_LANG\_Go} \dag \ddag &0x0016 &0 \\
-\livelink{chap:DWLANGModula3}{DW\_LANG\_Modula3} \dag \ddag &0x0017 &1 \\
-\livelink{chap:DWLANGHaskell}{DW\_LANG\_Haskell} \dag \ddag &0x0018 &0 \\
-\livelink{chap:DWXXXlohiuser}{DW\_LANG\_lo\_user} &0x8000 & \\
-\livelink{chap:DWXXXlohiuser}{DW\_LANG\_hi\_user} &\xffff & \\
+\DWLANGCeightynine &0x0001 &0 \\
+\DWLANGC{} &0x0002 &0 \\
+\DWLANGAdaeightythree{} \dag &0x0003 &1 \addtoindexx{Ada} \\
+\DWLANGCplusplus{} &0x0004 &0 \\
+\DWLANGCobolseventyfour{} \dag &0x0005 &1 \\
+\DWLANGCoboleightyfive{} \dag &0x0006 &1 \\
+\DWLANGFortranseventyseven &0x0007 &1 \\
+\DWLANGFortranninety &0x0008 &1 \\
+\DWLANGPascaleightythree &0x0009 &1 \\
+\DWLANGModulatwo &0x000a &1 \\
+\DWLANGJava &0x000b &0 \\
+\DWLANGCninetynine &0x000c &0 \\
+\DWLANGAdaninetyfive{} \dag &0x000d &1 \addtoindexx{Ada} \\
+\DWLANGFortranninetyfive &0x000e &1 \\
+\DWLANGPLI{} \dag &0x000f &1 \\
+\DWLANGObjC{} &0x0010 &0 \\
+\DWLANGObjCplusplus{} &0x0011 &0 \\
+\DWLANGUPC{} &0x0012 &0 \\
+\DWLANGD{} &0x0013 &0 \\
+\DWLANGPython{} \dag &0x0014 &0 \\
+\DWLANGOpenCL{} \dag \ddag &0x0015 &0 \\
+\DWLANGGo{} \dag \ddag &0x0016 &0 \\
+\DWLANGModulathree{} \dag \ddag &0x0017 &1 \\
+\DWLANGHaskell{} \dag \ddag &0x0018 &0 \\
+\DWLANGlouser{} &0x8000 & \\
+\DWLANGhiuser{} &\xffff & \\
\end{longtable}
\end{centering}
The value of the common
\addtoindexi{address}{address class!attribute encoding}
class encoding
-\livelink{chap:DWADDRnone}{DW\_ADDR\_none} is 0.
+\DWADDRnone{} is 0.
\section{Identifier Case}
\label{datarep:identifiercase}
The encodings of the constants used in the
-\livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case} attribute are given in
+\DWATidentifiercase{} attribute are given in
Table \refersec{tab:identifiercaseencodings}.
\begin{centering}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWIDcasesensitive}{DW\_ID\_case\_sensitive}&0x00 \\
-\livelink{chap:DWIDupcase}{DW\_ID\_up\_case}&0x01 \\
-\livelink{chap:DWIDdowncase}{DW\_ID\_down\_case}&0x02 \\
-\livelink{chap:DWIDcaseinsensitive}{DW\_ID\_case\_insensitive}&0x03 \\
+\DWIDcasesensitive&0x00 \\
+\DWIDupcase&0x01 \\
+\DWIDdowncase&0x02 \\
+\DWIDcaseinsensitive&0x03 \\
\end{longtable}
\end{centering}
\section{Calling Convention Encodings}
\label{datarep:callingconventionencodings}
The encodings of the constants used in the
-\livelink{chap:DWATcallingconvention}{DW\_AT\_calling\_convention} attribute are given in
+\DWATcallingconvention{} attribute are given in
Table \refersec{tab:callingconventionencodings}.
\begin{centering}
\hline
\endlastfoot
-\livelink{chap:DWCCnormal}{DW\_CC\_normal}&0x01 \\
-\livelink{chap:DWCCprogram}{DW\_CC\_program}&0x02 \\
-\livelink{chap:DWCCnocall}{DW\_CC\_nocall}&0x03 \\
-\livelink{chap:DWXXXlohiuser}{DW\_CC\_lo\_user}&0x40 \\
-\livelink{chap:DWXXXlohiuser}{DW\_CC\_hi\_user}&\xff \\
+\DWCCnormal&0x01 \\
+\DWCCprogram&0x02 \\
+\DWCCnocall&0x03 \\
+\DWCClouser&0x40 \\
+\DWCChiuser&\xff \\
\end{longtable}
\end{centering}
The encodings of the constants used in
\addtoindexx{inline attribute!encoding}
the
-\livelink{chap:DWATinline}{DW\_AT\_inline} attribute are given in
+\DWATinline{} attribute are given in
Table \refersec{tab:inlineencodings}.
\needlines{8}
\hline
\endlastfoot
-\livelink{chap:DWINLnotinlined}{DW\_INL\_not\_inlined}&0x00 \\
-\livelink{chap:DWINLinlined}{DW\_INL\_inlined}&0x01 \\
-\livelink{chap:DWINLdeclarednotinlined}{DW\_INL\_declared\_not\_inlined}&0x02 \\
-\livelink{chap:DWINLdeclaredinlined}{DW\_INL\_declared\_inlined}&0x03 \\
+\DWINLnotinlined&0x00 \\
+\DWINLinlined&0x01 \\
+\DWINLdeclarednotinlined&0x02 \\
+\DWINLdeclaredinlined&0x03 \\
\end{longtable}
\end{centering}
\label{datarep:arrayordering}
The encodings of the constants used in the
-\livelink{chap:DWATordering}{DW\_AT\_ordering} attribute are given in
+\DWATordering{} attribute are given in
Table \refersec{tab:orderingencodings}.
\needlines{8}
\hline
\endlastfoot
-\livelink{chap:DWORDrowmajor}{DW\_ORD\_row\_major}&0x00 \\
-\livelink{chap:DWORDcolmajor}{DW\_ORD\_col\_major}&0x01 \\
+\DWORDrowmajor&0x00 \\
+\DWORDcolmajor&0x01 \\
\end{longtable}
\end{centering}
The descriptors used in
\addtoindexx{discriminant list attribute!encoding}
the
-\livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list} attribute are
+\DWATdiscrlist{} attribute are
encoded as 1\dash byte constants. The
defined values are given in
Table \refersec{tab:discriminantdescriptorencodings}.
\hline
\endlastfoot
-\livelink{chap:DWDSClabel}{DW\_DSC\_label}&0x00 \\
-\livelink{chap:DWDSCrange}{DW\_DSC\_range}&0x01 \\
+\DWDSClabel&0x00 \\
+\DWDSCrange&0x01 \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-\livelink{chap:DWLNScopy}{DW\_LNS\_copy}&0x01 \\
-\livelink{chap:DWLNSadvancepc}{DW\_LNS\_advance\_pc}&0x02 \\
-\livelink{chap:DWLNSadvanceline}{DW\_LNS\_advance\_line}&0x03 \\
-\livelink{chap:DWLNSsetfile}{DW\_LNS\_set\_file}&0x04 \\
-\livelink{chap:DWLNSsetcolumn}{DW\_LNS\_set\_column}&0x05 \\
-\livelink{chap:DWLNSnegatestmt}{DW\_LNS\_negate\_stmt}&0x06 \\
-\livelink{chap:DWLNSsetbasicblock}{DW\_LNS\_set\_basic\_block}&0x07 \\
-\livelink{chap:DWLNSconstaddpc}{DW\_LNS\_const\_add\_pc}&0x08 \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x09 \\
-\livelink{chap:DWLNSsetprologueend}{DW\_LNS\_set\_prologue\_end}&0x0a \\
-\livelink{chap:DWLNSsetepiloguebegin}{DW\_LNS\_set\_epilogue\_begin}&0x0b \\
-\livelink{chap:DWLNSsetisa}{DW\_LNS\_set\_isa}&0x0c \\
+\DWLNScopy&0x01 \\
+\DWLNSadvancepc&0x02 \\
+\DWLNSadvanceline&0x03 \\
+\DWLNSsetfile&0x04 \\
+\DWLNSsetcolumn&0x05 \\
+\DWLNSnegatestmt&0x06 \\
+\DWLNSsetbasicblock&0x07 \\
+\DWLNSconstaddpc&0x08 \\
+\DWLNSfixedadvancepc&0x09 \\
+\DWLNSsetprologueend&0x0a \\
+\DWLNSsetepiloguebegin&0x0b \\
+\DWLNSsetisa&0x0c \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-\livelink{chap:DWLNEendsequence}{DW\_LNE\_end\_sequence}&0x01 \\
-\livelink{chap:DWLNEsetaddress}{DW\_LNE\_set\_address}&0x02\\
-\livelink{chap:DWLNEdefinefile}{DW\_LNE\_define\_file}&0x03\\
-\livelink{chap:DWLNEsetdiscriminator}{DW\_LNE\_set\_discriminator} &0x04 \\
-\livelink{chap:DWXXXlohiuser}{DW\_LNE\_lo\_user}&0x80 \\
-\livelink{chap:DWXXXlohiuser}{DW\_LNE\_hi\_user}&\xff \\
+\DWLNEendsequence&0x01 \\
+\DWLNEsetaddress&0x02\\
+\DWLNEdefinefile&0x03\\
+\DWLNEsetdiscriminator{} &0x04 \\
+\DWLNElouser&0x80 \\
+\DWLNEhiuser&\xff \\
\end{longtable}
\end{centering}
The source line numbers and source file indices encoded in the
macro information section are represented as unsigned LEB128
numbers as are the constants in a
-\livelink{chap:DWMACINFOvendorext}{DW\_MACINFO\_vendor\_ext} entry.
+\DWMACINFOvendorext{} entry.
The macinfo type is encoded as a single byte.
The encodings
\hline
\endlastfoot
-\livelink{chap:DWMACINFOdefine}{DW\_MACINFO\_define}&0x01 \\
-\livelink{chap:DWMACINFOundef}{DW\_MACINFO\_undef}&0x02 \\
-\livelink{chap:DWMACINFOstartfile}{DW\_MACINFO\_start\_file}&0x03 \\
-\livelink{chap:DWMACINFOendfile}{DW\_MACINFO\_end\_file}&0x04 \\
-\livelink{chap:DWMACINFOvendorext}{DW\_MACINFO\_vendor\_ext}&\xff \\
+\DWMACINFOdefine&0x01 \\
+\DWMACINFOundef&0x02 \\
+\DWMACINFOstartfile&0x03 \\
+\DWMACINFOendfile&0x04 \\
+\DWMACINFOvendorext&\xff \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}&0x1&delta & \\
-\livelink{chap:DWCFAoffset}{DW\_CFA\_offset}&0x2®ister&ULEB128 offset \\
-\livelink{chap:DWCFArestore}{DW\_CFA\_restore}&0x3®ister & & \\
-\livelink{chap:DWCFAnop}{DW\_CFA\_nop}&0&0 & & \\
-\livelink{chap:DWCFAsetloc}{DW\_CFA\_set\_loc}&0&0x01&address & \\
-\livelink{chap:DWCFAadvanceloc1}{DW\_CFA\_advance\_loc1}&0&0x02&1\dash byte delta & \\
-\livelink{chap:DWCFAadvanceloc2}{DW\_CFA\_advance\_loc2}&0&0x03&2\dash byte delta & \\
-\livelink{chap:DWCFAadvanceloc4}{DW\_CFA\_advance\_loc4}&0&0x04&4\dash byte delta & \\
-\livelink{chap:DWCFAoffsetextended}{DW\_CFA\_offset\_extended}&0&0x05&ULEB128 register&ULEB128 offset \\
-\livelink{chap:DWCFArestoreextended}{DW\_CFA\_restore\_extended}&0&0x06&ULEB128 register & \\
-\livelink{chap:DWCFAundefined}{DW\_CFA\_undefined}&0&0x07&ULEB128 register & \\
-\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value}&0&0x08 &ULEB128 register & \\
-\livelink{chap:DWCFAregister}{DW\_CFA\_register}&0&0x09&ULEB128 register &ULEB128 offset \\
-\livelink{chap:DWCFArememberstate}{DW\_CFA\_remember\_state}&0&0x0a & & \\
-\livelink{chap:DWCFArestorestate}{DW\_CFA\_restore\_state}&0&0x0b & & \\
-\livelink{chap:DWCFAdefcfa}{DW\_CFA\_def\_cfa}&0&0x0c &ULEB128 register&ULEB128 offset \\
-\livelink{chap:DWCFAdefcfaregister}{DW\_CFA\_def\_cfa\_register}&0&0x0d&ULEB128 register & \\
-\livelink{chap:DWCFAdefcfaoffset}{DW\_CFA\_def\_cfa\_offset}&0&0x0e &ULEB128 offset & \\
-\livelink{chap:DWCFAdefcfaexpression}{DW\_CFA\_def\_cfa\_expression}&0&0x0f &BLOCK \\
-\livelink{chap:DWCFAexpression}{DW\_CFA\_expression}&0&0x10&ULEB128 register & BLOCK \\
-
-\livelink{chap:DWCFAoffsetextendedsf}{DW\_CFA\_offset\_extended\_sf}&0&0x11&ULEB128 register&SLEB128 offset \\
-\livelink{chap:DWCFAdefcfasf}{DW\_CFA\_def\_cfa\_sf}&0&0x12&ULEB128 register&SLEB128 offset \\
-\livelink{chap:DWCFAdefcfaoffsetsf}{DW\_CFA\_def\_cfa\_offset\_sf}&0&0x13&SLEB128 offset & \\
-\livelink{chap:DWCFAvaloffset}{DW\_CFA\_val\_offset}&0&0x14&ULEB128&ULEB128 \\
-\livelink{chap:DWCFAvaloffsetsf}{DW\_CFA\_val\_offset\_sf}&0&0x15&ULEB128&SLEB128 \\
-\livelink{chap:DWCFAvalexpression}{DW\_CFA\_val\_expression}&0&0x16&ULEB128&BLOCK \\
-\livelink{chap:DWXXXlohiuser}{DW\_CFA\_lo\_user}&0&0x1c & & \\
-\livelink{chap:DWXXXlohiuser}{DW\_CFA\_hi\_user}&0&\xiiif & & \\
+\DWCFAadvanceloc&0x1&delta & \\
+\DWCFAoffset&0x2®ister&ULEB128 offset \\
+\DWCFArestore&0x3®ister & & \\
+\DWCFAnop&0&0 & & \\
+\DWCFAsetloc&0&0x01&address & \\
+\DWCFAadvancelocone&0&0x02&1\dash byte delta & \\
+\DWCFAadvanceloctwo&0&0x03&2\dash byte delta & \\
+\DWCFAadvancelocfour&0&0x04&4\dash byte delta & \\
+\DWCFAoffsetextended&0&0x05&ULEB128 register&ULEB128 offset \\
+\DWCFArestoreextended&0&0x06&ULEB128 register & \\
+\DWCFAundefined&0&0x07&ULEB128 register & \\
+\DWCFAsamevalue&0&0x08 &ULEB128 register & \\
+\DWCFAregister&0&0x09&ULEB128 register &ULEB128 offset \\
+\DWCFArememberstate&0&0x0a & & \\
+\DWCFArestorestate&0&0x0b & & \\
+\DWCFAdefcfa&0&0x0c &ULEB128 register&ULEB128 offset \\
+\DWCFAdefcfaregister&0&0x0d&ULEB128 register & \\
+\DWCFAdefcfaoffset&0&0x0e &ULEB128 offset & \\
+\DWCFAdefcfaexpression&0&0x0f &BLOCK \\
+\DWCFAexpression&0&0x10&ULEB128 register & BLOCK \\
+
+\DWCFAoffsetextendedsf&0&0x11&ULEB128 register&SLEB128 offset \\
+\DWCFAdefcfasf&0&0x12&ULEB128 register&SLEB128 offset \\
+\DWCFAdefcfaoffsetsf&0&0x13&SLEB128 offset & \\
+\DWCFAvaloffset&0&0x14&ULEB128&ULEB128 \\
+\DWCFAvaloffsetsf&0&0x15&ULEB128&SLEB128 \\
+\DWCFAvalexpression&0&0x16&ULEB128&BLOCK \\
+\DWCFAlouser&0&0x1c & & \\
+\DWCFAhiuser&0&\xiiif & & \\
\end{longtable}
\end{centering}
append the letter 'C', the DWARF tag of the construct, and
the name (taken from
\addtoindexx{name attribute}
-the \livelink{chap:DWATname}{DW\_AT\_name} attribute) of the type
+the \DWATname{} attribute) of the type
\addtoindexx{name attribute}
or namespace (including its trailing null byte).
\simplerule[\textwidth]
\begin{center}
\autocols[0pt]{c}{2}{l}{
-\livelink{chap:DWATname}{DW\_AT\_name},
-\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility},
-\livelink{chap:DWATaddressclass}{DW\_AT\_address\_class},
-\livelink{chap:DWATallocated}{DW\_AT\_allocated},
-\livelink{chap:DWATartificial}{DW\_AT\_artificial},
-\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:DWATbitstride}{DW\_AT\_bit\_stride},
-\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size},
-\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride},
-\livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr},
-\livelink{chap:DWATconstvalue}{DW\_AT\_const\_value},
-\livelink{chap:DWATcontainingtype}{DW\_AT\_containing\_type},
-\livelink{chap:DWATcount}{DW\_AT\_count},
-\livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset},
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location},
-\livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location},
-\livelink{chap:DWATdecimalscale}{DW\_AT\_decimal\_scale},
-\livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign},
-\livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value},
-\livelink{chap:DWATdigitcount}{DW\_AT\_digit\_count},
-\livelink{chap:DWATdiscr}{DW\_AT\_discr},
-\livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list},
-\livelink{chap:DWATdiscrvalue}{DW\_AT\_discr\_value},
-\livelink{chap:DWATencoding}{DW\_AT\_encoding},
-\livelink{chap:DWATenumclass}{DW\_AT\_enum\_class},
-\livelink{chap:DWATendianity}{DW\_AT\_endianity},
-\livelink{chap:DWATexplicit}{DW\_AT\_explicit},
-\livelink{chap:DWATisoptional}{DW\_AT\_is\_optional},
-\livelink{chap:DWATlocation}{DW\_AT\_location},
-\livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound},
-\livelink{chap:DWATmutable}{DW\_AT\_mutable},
-\livelink{chap:DWATordering}{DW\_AT\_ordering},
-\livelink{chap:DWATpicturestring}{DW\_AT\_picture\_string},
-\livelink{chap:DWATprototyped}{DW\_AT\_prototyped},
-\livelink{chap:DWATsmall}{DW\_AT\_small},
-\livelink{chap:DWATsegment}{DW\_AT\_segment},
-\livelink{chap:DWATstringlength}{DW\_AT\_string\_length},
-\livelink{chap:DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size},
-\livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size},
-\livelink{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled},
-\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound},
-\livelink{chap:DWATuselocation}{DW\_AT\_use\_location},
-\livelink{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8},
-\livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter},
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality},
-\livelink{chap:DWATvisibility}{DW\_AT\_visibility},
-\livelink{chap:DWATvtableelemlocation}{DW\_AT\_vtable\_elem\_location}
+\DWATname,
+\DWATaccessibility,
+\DWATaddressclass,
+\DWATallocated,
+\DWATartificial,
+\DWATassociated,
+\DWATbinaryscale,
+\DWATbitoffset,
+\DWATbitsize,
+\DWATbitstride,
+\DWATbytesize,
+\DWATbytestride,
+\DWATconstexpr,
+\DWATconstvalue,
+\DWATcontainingtype,
+\DWATcount,
+\DWATdatabitoffset,
+\DWATdatalocation,
+\DWATdatamemberlocation,
+\DWATdecimalscale,
+\DWATdecimalsign,
+\DWATdefaultvalue,
+\DWATdigitcount,
+\DWATdiscr,
+\DWATdiscrlist,
+\DWATdiscrvalue,
+\DWATencoding,
+\DWATenumclass,
+\DWATendianity,
+\DWATexplicit,
+\DWATisoptional,
+\DWATlocation,
+\DWATlowerbound,
+\DWATmutable,
+\DWATordering,
+\DWATpicturestring,
+\DWATprototyped,
+\DWATsmall,
+\DWATsegment,
+\DWATstringlength,
+\DWATstringlengthbitsize,
+\DWATstringlengthbytesize,
+\DWATthreadsscaled,
+\DWATupperbound,
+\DWATuselocation,
+\DWATuseUTFeight,
+\DWATvariableparameter,
+\DWATvirtuality,
+\DWATvisibility,
+\DWATvtableelemlocation
}
\end{center}
\simplerule[\textwidth]
\end{table}
Note that except for the initial
-\livelink{chap:DWATname}{DW\_AT\_name} attribute,
+\DWATname{} attribute,
\addtoindexx{name attribute}
attributes are appended in order according to the alphabetical
spelling of their identifier.
LEB128 value) followed by the encoding of the value according
to the form code. To ensure reproducibility of the signature,
the set of forms used in the signature computation is limited
-to the following: \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata},
-\livelink{chap:DWFORMflag}{DW\_FORM\_flag},
-\livelink{chap:DWFORMstring}{DW\_FORM\_string},
-and \livelink{chap:DWFORMblock}{DW\_FORM\_block}.
-
-\item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type},
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type},
-\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 \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
+to the following: \DWFORMsdata,
+\DWFORMflag,
+\DWFORMstring,
+and \DWFORMblock.
+
+\item If the tag in Step 3 is one of \DWTAGpointertype,
+\DWTAGreferencetype,
+\DWTAGrvaluereferencetype,
+\DWTAGptrtomembertype,
+or \DWTAGfriend, and the referenced
+type (via the \DWATtype{} or
+\DWATfriend{} attribute) has a
+\DWATname{} attribute, append to S the letter 'N', the DWARF
+attribute code (\DWATtype{} or
+\DWATfriend), 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
+and the name of the type. For \DWTAGfriend, if the referenced
+entry is a \DWTAGsubprogram, the context is omitted and the
name to be used is the ABI-specific name of the subprogram
(e.g., the mangled linker name).
-\item If the tag in Step 3 is not one of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type},
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type},
-\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 \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
+\item If the tag in Step 3 is not one of \DWTAGpointertype,
+\DWTAGreferencetype,
+\DWTAGrvaluereferencetype,
+\DWTAGptrtomembertype, or
+\DWTAGfriend, but has
+a \DWATtype{} attribute, or if the referenced type (via
+the \DWATtype{} or
+\DWATfriend{} attribute) does not have a
+\DWATname{} 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 \livelink{chap:DWATname}{DW\_AT\_name} attribute, append to
+a \DWATname{} attribute, append to
\addtoindexx{name attribute}
S the letter 'S', the tag of C, and its name; otherwise,
process C recursively by performing Steps 3 through 7,
For the purposes of this algorithm, if a debugging information
entry S has a
-\livelink{chap:DWATspecification}{DW\_AT\_specification}
+\DWATspecification{}
attribute that refers to
another entry D (which has a
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}
+\DWATdeclaration{}
attribute),
then S inherits the attributes and children of D, and S is
processed as if those attributes and children were present in
\item \textit{The entry has an attribute whose value is a location
expression, and the location expression contains a reference to
-another debugging information entry (e.g., a \livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}
+another debugging information entry (e.g., a \DWOPcallref{}
operator), as it is unlikely that the entry will remain
identical across compilation units.}
\textit{Certain attributes are not included in the type signature:}
\begin{itemize}
-\item \textit{The \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} attribute is not included because it
+\item \textit{The \DWATdeclaration{} attribute is not included because it
indicates that the debugging information entry represents an
incomplete declaration, and incomplete declarations should
not be placed in
\addtoindexx{type unit}
separate type units.}
-\item \textit{The \livelink{chap:DWATdescription}{DW\_AT\_description} attribute is not included because
+\item \textit{The \DWATdescription{} attribute is not included because
it does not provide any information unique to the defining
declaration of the type.}
-\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
+\item \textit{The \DWATdeclfile,
+\DWATdeclline, and
+\DWATdeclcolumn{} 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
\addtoindexx{MD5 hash}
same hash.}
-\item \textit{The \livelink{chap:DWATobjectpointer}{DW\_AT\_object\_pointer} attribute is not included
+\item \textit{The \DWATobjectpointer{} attribute is not included
because the information it provides is not necessary for the
computation of a unique type signature.}
%d
\item \dotdebuginfo{} and \dotdebugtypes{} \\
Attribute values of class string may have form
-\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}, whose
+\DWFORMstrp, whose
value is the offset in the \dotdebugstr{}
section of the corresponding string.
%e
\item \dotdebugloc{} \\
-The operand of the \livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}
+The operand of the \DWOPcallref{}
DWARF expression operator is the
offset of a debugging information entry in the
\dotdebuginfo{} section.
\item \dotdebuginfo{} \\
An attribute value of class \livelink{chap:classloclistptr}{loclistptr}
(specifically form
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset})
+\DWFORMsecoffset)
is an offset within the \dotdebugloc{}
section of a
\addtoindex{location list}.
\item \dotdebuginfo{} \\
An attribute value of class \livelink{chap:classrangelistptr}{rangelistptr}
(specifically form
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset})
+\DWFORMsecoffset)
is an offset within the \dotdebugranges{} section of
a range list.
\item \dotdebuginfo{} \\
An attribute value of class
\livelink{chap:classmacptr}{macptr} (specifically form
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}) is an
+\DWFORMsecoffset) is an
offset within the
\dotdebugmacinfo{} section
of the beginning of the macro information for the referencing unit.
\item \dotdebuginfo{} \\
An attribute value of class
\livelink{chap:classlineptr}{lineptr} (specifically form
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset})
+\DWFORMsecoffset)
is an offset in the
\dotdebugline{} section of the
beginning of the line number information for the referencing unit.
% If draft is in the document class list, pix are just suggested
% by an outline, the pic does not appear as a picture.
%
-\newcommand{\docdate}{October 2, 2013}
+\newcommand{\docdate}{October 10, 2013}
%
\usepackage{ifthen}
\newboolean{isdraft}
\expandafter\def\csname #1LINK\endcsname{\index{#2}\hyperlink{chap:#1}{#2}}
\expandafter\def\csname #1TARG\endcsname{\index{#2}\hypertarget{chap:#1}{#2}}
\expandafter\def\csname #1INDX\endcsname{\index{#2}#2}
- \expandafter\def\csname #1MARK\endcsname{\hypertarget{chap:#1}{}}
+ \expandafter\def\csname #1MARK\endcsname{\hypertarget{chap:#1}{}\index{#2}}
\expandafter\def\csname #1NAME\endcsname{#2}
% The normal, most common use in running text...
\expandafter\def\csname #1\endcsname{\csname #1LINK\endcsname}
\newdwfnamecommands{DWATcallfile}{DW\_AT\_call\_file}
\newdwfnamecommands{DWATcallline}{DW\_AT\_call\_line}
\newdwfnamecommands{DWATcallingconvention}{DW\_AT\_calling\_convention}
-\newdwfnamecommands{DWATcommonreference}{DW\_at\_common\_reference}
+\newdwfnamecommands{DWATcommonreference}{DW\_AT\_common\_reference}
\newdwfnamecommands{DWATcompdir}{DW\_AT\_comp\_dir}
\newdwfnamecommands{DWATconstexpr}{DW\_AT\_const\_expr}
\newdwfnamecommands{DWATconstvalue}{DW\_AT\_const\_value}
\newdwfnamecommands{DWATEimaginaryfloat}{DW\_ATE\_imaginary\_float}
\newdwfnamecommands{DWATElouser}{DW\_ATE\_lo\_user}
\newdwfnamecommands{DWATEnumericstring}{DW\_ATE\_numeric\_string}
-\newdwfnamecommands{DWATEpackeddecimal}{DWATE\_packed\_decimal}
+\newdwfnamecommands{DWATEpackeddecimal}{DW\_ATE\_packed\_decimal}
\newdwfnamecommands{DWATEsigned}{DW\_ATE\_signed}
\newdwfnamecommands{DWATEsignedchar}{DW\_ATE\_signed\_char}
\newdwfnamecommands{DWATEsignedfixed}{DW\_ATE\_signed\_fixed}
\newdwfnamecommands{DWOPand}{DW\_OP\_and}
\newdwfnamecommands{DWOPbitpiece}{DW\_OP\_bit\_piece}
\newdwfnamecommands{DWOPbra}{DW\_OP\_bra}
-\newdwfnamecommands{DWOPbreg}{DW\_OP\_breg} % Generic name
\newdwfnamecommands{DWOPbregn}{DW\_OP\_breg\textit{n}} % Generic name
\newdwfnamecommands{DWOPbregzero}{DW\_OP\_breg0}
\newdwfnamecommands{DWOPbregone}{DW\_OP\_breg1}
\newdwfnamecommands{DWOPbregthirtyone}{DW\_OP\_breg31}
- \newcommand{\DWOPbregtwo}{\hyperlink{chap:DWOPbregn}{DW\_OP\_breg2}} % Link, don't index...
+ \newcommand{\DWOPbregtwo}{\hyperlink{chap:DWOPbregn}{DW\_OP\_breg2}} % Link, don't index...
\newcommand{\DWOPbregthree}{\hyperlink{chap:DWOPbregn}{DW\_OP\_breg3}} %
\newcommand{\DWOPbregfour}{\hyperlink{chap:DWOPbregn}{DW\_OP\_breg4}} %
\newcommand{\DWOPbregeleven}{\hyperlink{chap:DWOPbregn}{DW\_OP\_breg11}} %
\newdwfnamecommands{DWOPregn}{DW\_OP\_reg\textit{n}} % Generic register name
\newdwfnamecommands{DWOPregzero}{DW\_OP\_reg0}
\newdwfnamecommands{DWOPregone}{DW\_OP\_reg1}
- \newcommand{\DWOPregtwo}{\hyperlink{DWOPregn}{DW\_OP\_reg2}} % Link, don't index
- \newcommand{\DWOPregthree}{\hyperlink{DWOPregn}{DW\_OP\_reg3}}
- \newcommand{\DWOPregten}{\hyperlink{DWOPregn}{DW\_OP\_reg10}}
+ \newcommand{\DWOPregtwo}{\hyperlink{chap:DWOPregn}{DW\_OP\_reg2}} % Link, don't index
+ \newcommand{\DWOPregthree}{\hyperlink{chap:DWOPregn}{DW\_OP\_reg3}}
+ \newcommand{\DWOPregten}{\hyperlink{chap:DWOPregn}{DW\_OP\_reg10}}
\newdwfnamecommands{DWOPregthirtyone}{DW\_OP\_reg31}
\newdwfnamecommands{DWOPregx}{DW\_OP\_regx}
\newdwfnamecommands{DWOProt}{DW\_OP\_rot}
"myfile.c"
"Best Compiler Corp, V1.3"
"/home/mydir/src"
-\livelink{chap:DWLANGC89}{DW\_LANG\_C89}
+\DWLANGCeightynine
0x0
0x55
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}
+\DWFORMsecoffset
0x0
\vspace{0.01cm}
\hrule
2
"char"
-\livelink{chap:DWATEunsignedchar}{DW\_ATE\_unsigned\_char}
+\DWATEunsignedchar
1
\vspace{0.01cm}
\hrule
\scriptsize
\begin{alltt}\vspace{0.06cm}
1
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
-\livelink{chap:DWCHILDRENyes}{DW\_CHILDREN\_yes}
-\livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string}
-\livelink{chap:DWATproducer}{DW\_AT\_producer} \livelink{chap:DWFORMstring}{DW\_FORM\_string}
-\livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir} \livelink{chap:DWFORMstring}{DW\_FORM\_string}
-\livelink{chap:DWATlanguage}{DW\_AT\_language} \livelink{chap:DWFORMdata1}{DW\_FORM\_data1}
-\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} \livelink{chap:DWFORMaddr}{DW\_FORM\_addr}
-\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc} \livelink{chap:DWFORMdata1}{DW\_FORM\_data1}
-\livelink{chap:DWATstmtlist}{DW\_AT\_stmt\_list} \livelink{chap:DWFORMindirect}{DW\_FORM\_indirect}
+\DWTAGcompileunit
+\DWCHILDRENyes
+\DWATname \DWFORMstring
+\DWATproducer \DWFORMstring
+\DWATcompdir \DWFORMstring
+\DWATlanguage \DWFORMdataone
+\DWATlowpc \DWFORMaddr
+\DWAThighpc \DWFORMdataone
+\DWATstmtlist \DWFORMindirect
0
\vspace{0.01cm}
\hrule
2
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
-\livelink{chap:DWCHILDRENno}{DW\_CHILDREN\_no}
-\livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string}
-\livelink{chap:DWATencoding}{DW\_AT\_encoding} \livelink{chap:DWFORMdata1}{DW\_FORM\_data1}
-\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMdata1}{DW\_FORM\_data1}
+\DWTAGbasetype
+\DWCHILDRENno
+\DWATname \DWFORMstring
+\DWATencoding \DWFORMdataone
+\DWATbytesize \DWFORMdataone
0
\vspace{0.01cm}
\hrule
3
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
-\livelink{chap:DWCHILDRENno}{DW\_CHILDREN\_no}
-\livelink{chap:DWATtype}{DW\_AT\_type} \livelink{chap:DWFORMref4}{DW\_FORM\_ref4}
+\DWTAGpointertype
+\DWCHILDRENno
+\DWATtype \DWFORMreffour
0
\vspace{0.01cm}
\hrule
4
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
-\livelink{chap:DWCHILDRENno}{DW\_CHILDREN\_no}
-\livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string}
-\livelink{chap:DWATtype}{DW\_AT\_type} \livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr}
+\DWTAGtypedef
+\DWCHILDRENno
+\DWATname \DWFORMstring
+\DWATtype \DWFORMrefaddr
0
\vspace{0.01cm}
\hrule
If an object has a descriptor, then the DWARF type for that
object will have a
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}
+\DWATdatalocation{}
attribute. If an object
does not have a descriptor, then usually the DWARF type for the
object will not have a
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}.
+\DWATdatalocation.
(See the following
\addtoindex{Ada} example for a case where the type for an object without
a descriptor does have a
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location} attribute. In
+\DWATdatalocation{} attribute. In
that case the object doubles as its own descriptor.)
The \addtoindex{Fortran} derived type \texttt{array\_ptr} can now be redescribed
\begin{alltt}
! Description for type of 'ap'
!
-1\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+1\$: \DWTAGarraytype
! No name, default (Fortran) ordering, default stride
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to REAL)
- \livelink{chap:DWATassociated}{DW\_AT\_associated}(expression= ! Test 'ptr\_assoc' \nolink{flag}
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWATtype(reference to REAL)
+ \DWATassociated(expression= ! Test 'ptr\_assoc' \nolink{flag}
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == offset(ptr\_assoc)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref}
- \livelink{chap:DWOPlit1}{DW\_OP\_lit1} ! mask for 'ptr\_assoc' \nolink{flag}
- \livelink{chap:DWOPand}{DW\_OP\_and})
- \livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}(expression= ! Get raw data address
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWOPplus
+ \DWOPderef
+ \DWOPlitone ! mask for 'ptr\_assoc' \nolink{flag}
+ \DWOPand)
+ \DWATdatalocation(expression= ! Get raw data address
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == offset(base)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref}) ! Type of index of array 'ap'
-2\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+ \DWOPplus
+ \DWOPderef) ! Type of index of array 'ap'
+2\$: \DWTAGsubrangetype
! No name, default stride
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to INTEGER)
- \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}(expression=
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWATtype(reference to INTEGER)
+ \DWATlowerbound(expression=
+ \DWOPpushobjectaddress
\DWOPlitn ! where n ==
! offset(desc, dims) +
! offset(dims\_str, lower\_bound)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref})
- \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(expression=
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWOPplus
+ \DWOPderef)
+ \DWATupperbound(expression=
+ \DWOPpushobjectaddress
\DWOPlitn ! where n ==
! offset(desc, dims) +
! offset(dims\_str, upper\_bound)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref})
+ \DWOPplus
+ \DWOPderef)
! Note: for the m'th dimension, the second operator becomes
! \DWOPlitn where
! n == offset(desc, dims) +
\figurepart{2}{2}
\begin{dwflisting}
\begin{alltt}
-3\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \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}
- \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}
- \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}
+3\$: \DWTAGstructuretype
+ \DWATname("array\_ptr")
+ \DWATbytesize(constant sizeof(REAL) + sizeof(desc<1>))
+4\$: \DWTAGmember
+ \DWATname("myvar")
+ \DWATtype(reference to REAL)
+ \DWATdatamemberlocation(constant 0)
+5\$: \DWTAGmember
+ \DWATname("ap");
+ \DWATtype(reference to 1\$)
+ \DWATdatamemberlocation(constant sizeof(REAL))
+6\$: \DWTAGarraytype
! No name, default (Fortran) ordering, default stride
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 3\$)
- \livelink{chap:DWATallocated}{DW\_AT\_allocated}(expression= ! Test 'ptr\_alloc' \nolink{flag}
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWATtype(reference to 3\$)
+ \DWATallocated(expression= ! Test 'ptr\_alloc' \nolink{flag}
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == offset(ptr\_alloc)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref}
+ \DWOPplus
+ \DWOPderef
\DWOPlittwo ! Mask for 'ptr\_alloc' \nolink{flag}
- \livelink{chap:DWOPand}{DW\_OP\_and})
- \livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}(expression= ! Get raw data address
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWOPand)
+ \DWATdatalocation(expression= ! Get raw data address
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == offset(base)
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref})
-7\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+ \DWOPplus
+ \DWOPderef)
+7\$: \DWTAGsubrangetype
! No name, default stride
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to INTEGER)
- \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}(expression=
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWATtype(reference to INTEGER)
+ \DWATlowerbound(expression=
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == ...
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref})
- \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(expression=
- \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+ \DWOPplus
+ \DWOPderef)
+ \DWATupperbound(expression=
+ \DWOPpushobjectaddress
\DWOPlitn ! where n == ...
- \livelink{chap:DWOPplus}{DW\_OP\_plus}
- \livelink{chap:DWOPderef}{DW\_OP\_deref})
-8\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("arrayvar")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 6\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(expression=
+ \DWOPplus
+ \DWOPderef)
+8\$: \DWTAGvariable
+ \DWATname("arrayvar")
+ \DWATtype(reference to 6\$)
+ \DWATlocation(expression=
...as appropriate...) ! Assume static allocation
\end{alltt}
\end{dwflisting}
\end{enumerate}
For a), check for a
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location} attribute.
+\DWATdatalocation{} 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
\texttt{arrayvar}, whose address was found in step 1. (Had there been
-no \livelink{chap:DWATdatalocation}{DW\_AT\_data\_location} attribute, the desired address would
+no \DWATdatalocation{} attribute, the desired address would
be the same as the address from step 1.)
For b), for each dimension of the array (only one
in this case), go interpret the usual lower bound
attribute. Again this is an expression, which again begins
-with \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}. This object is
+with \DWOPpushobjectaddress. This object is
\textbf{still} \texttt{arrayvar},
from step 1, because we have not begun to actually perform
any indexing yet.
For c), the default stride applies. Since there is no
-\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride} attribute, use the size of the array element
+\DWATbytestride{} attribute, use the size of the array element
type, which is the size of type \texttt{array\_ptr} (at 3\$).
\clearpage
\end{enumerate}
This is just like step 2), so the details are omitted. Recall
-that because the DWARF type 1\$ has a \livelink{chap:DWATdatalocation}{DW\_AT\_data\_location},
+that because the DWARF type 1\$ has a \DWATdatalocation,
the address that results from step 4) is that of a
descriptor, and that address is the address pushed by the
-\livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address} operations in 1\$ and 2\$.
+\DWOPpushobjectaddress{} operations in 1\$ and 2\$.
Note: we happen to be accessing a pointer array here instead
of an allocatable array; but because there is a common
\DWATbytestride(expression=
! Looks up the byte stride of dimension i.
...
- ! (analogous to DW\_AT\_upper\_bound)
+ ! (analogous to \DWATupperboundNAME)
)
\end{alltt}
\end{dwflisting}
The layout of the array descriptor is not specified by the Fortran
standard unless the array is explicitly marked as \addtoindex{C-interoperable}. To
get the bounds of an assumed-rank array, the expressions in the
-\DWTAGgenericsubrange
+\DWTAGgenericsubrange{}
entry need to be evaluated for each of the
\DWATrank{} dimensions as shown by the pseudocode in
Figure~\refersec{fig:assumedrankdwarfparser}.
\begin{enumerate}[1. ]
\item The array \texttt{VEC2} is \doublequote{immediately} contained within structure
\texttt{REC2} (there is no intermediate descriptor or indirection),
-which is reflected in the absence of a \livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}
+which is reflected in the absence of a \DWATdatalocation{}
attribute on the array type at 28\$.
\item One of the bounds of \texttt{VEC2} is nonetheless dynamic and part of
\begin{figure}[p]
\begin{dwflisting}
\begin{alltt}
-11\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("M")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to INTEGER)
-12\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+11\$: \DWTAGvariable
+ \DWATname("M")
+ \DWATtype(reference to INTEGER)
+12\$: \DWTAGarraytype
! No name, default (\addtoindex{Ada}) order, default stride
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to INTEGER)
-13\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("VEC1")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to array type at 12\$)
+ \DWATtype(reference to INTEGER)
+13\$: \DWTAGsubrangetype
+ \DWATtype(reference to INTEGER)
+ \DWATlowerbound(constant 1)
+ \DWATupperbound(reference to variable M at 11\$)
+14\$: \DWTAGvariable
+ \DWATname("VEC1")
+ \DWATtype(reference to array type at 12\$)
. . .
-21\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- \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)
+21\$: \DWTAGsubrangetype
+ \DWATname("TEENY")
+ \DWATtype(reference to INTEGER)
+ \DWATlowerbound(constant 1)
+ \DWATupperbound(constant 100)
. . .
-26\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("REC2")
-27\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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}
+26\$: \DWTAGstructuretype
+ \DWATname("REC2")
+27\$: \DWTAGmember
+ \DWATname("N")
+ \DWATtype(reference to subtype TEENY at 21\$)
+ \DWATdatamemberlocation(constant 0)
+28\$: \DWTAGarraytype
! No name, default (\addtoindex{Ada}) order, default stride
! Default data location
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to INTEGER)
-29\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- \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}
- \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=
+ \DWATtype(reference to INTEGER)
+29\$: \DWTAGsubrangetype
+ \DWATtype(reference to subrange TEENY at 21\$)
+ \DWATlowerbound(constant 1)
+ \DWATupperbound(reference to member N at 27\$)
+30\$: \DWTAGmember
+ \DWATname("VEC2")
+ \DWATtype(reference to array "subtype" at 28\$)
+ \DWATdatamemberlocation(machine=
\DWOPlitn ! where n == offset(REC2, VEC2)
- \livelink{chap:DWOPplus}{DW\_OP\_plus})
+ \DWOPplus)
. . .
-41\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \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...)
+41\$: \DWTAGvariable
+ \DWATname("OBJ2B")
+ \DWATtype(reference to REC2 at 26\$)
+ \DWATlocation(...as appropriate...)
\end{alltt}
\end{dwflisting}
\caption{Ada example: DWARF description}
The DWARF representation in
Figure \refersec{fig:packedrecordexampledwarfdescription}
is appropriate.
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type} entries could be added to
+\DWTAGpackedtype{} entries could be added to
better represent the source, but these do not otherwise affect
the example and are omitted for clarity. Note that this same
representation applies to both typical big\dash \ and
\figurepart{1}{2}
\begin{dwflisting}
\begin{alltt}
-10\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("BOOLEAN")
+10\$: \DWTAGbasetype
+ \DWATname("BOOLEAN")
...
-11\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("INTEGER")
+11\$: \DWTAGbasetype
+ \DWATname("INTEGER")
...
-20\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("T")
- \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}(2)
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("F5")
- \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)
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("F6")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 10$)
- \livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset}(1)
- \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}(1)
-21\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for F2
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 20\$)
- \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- \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) \addtoindexx{bit size attribute}
-23\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for V
- \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}(39) \addtoindexx{bit size attribute}
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \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
+20\$: \DWTAGstructuretype
+ \DWATname("T")
+ \DWATbitsize(2)
+ \DWTAGmember
+ \DWATname("F5")
+ \DWATtype(reference to 10$)
+ \DWATdatabitoffset(0) ! may be omitted
+ \DWATbitsize(1)
+ \DWTAGmember
+ \DWATname("F6")
+ \DWATtype(reference to 10$)
+ \DWATdatabitoffset(1)
+ \DWATbitsize(1)
+21\$: \DWTAGstructuretype ! anonymous type for F2
+ \DWTAGmember
+ \DWATname("F3")
+ \DWATtype(reference to 11\$)
+22\$: \DWTAGarraytype ! anonymous type for F4
+ \DWATtype(reference to 20\$)
+ \DWTAGsubrangetype
+ \DWATtype(reference to 11\$)
+ \DWATlowerbound(0)
+ \DWATupperbound(1)
+ \DWATbitstride(2)
+ \DWATbitsize(4) \addtoindexx{bit size attribute}
+23\$: \DWTAGstructuretype ! anonymous type for V
+ \DWATbitsize(39) \addtoindexx{bit size attribute}
+ \DWTAGmember
+ \DWATname("F1")
+ \DWATtype(reference to 10\$)
+ \DWATdatabitoffset(0) ! may be omitted
+ \DWATbitsize(1) ! may be omitted
+ \DWTAGmember
+ \DWATname("F2")
+ \DWATtype(reference to 21\$)
+ \DWATdatabitoffset(1)
+ \DWATbitsize(32) ! may be omitted
+ \DWTAGmember
+ \DWATname("F4")
+ \DWATtype(reference to 22\$)
+ \DWATdatabitoffset(33)
+ \DWATbitsize(4) ! may be omitted
\end{alltt}
\end{dwflisting}
\caption{Packed record example: DWARF description}
\figurepart{2}{2}
\begin{dwflisting}
\begin{alltt}
- \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) \addtoindexx{bit size attribute} ! may be omitted
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("V")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 23\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWTAGmember
+ \DWATname("F7")
+ \DWATtype(reference to 20\$) ! type T
+ \DWATdatabitoffset(37)
+ \DWATbitsize(2) \addtoindexx{bit size attribute} ! may be omitted
+ \DWTAGvariable
+ \DWATname("V")
+ \DWATtype(reference to 23\$)
+ \DWATlocation(...)
...
\end{alltt}
\end{dwflisting}
\begin{dwflisting}
\begin{alltt}
-1\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("int")
+1\$: \DWTAGbasetype
+ \DWATname("int")
...
-2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("float")
+2\$: \DWTAGbasetype
+ \DWATname("float")
...
-6\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- ! no \livelink{chap:DWATname}{DW\_AT\_name} attribute
+6\$: \DWTAGnamespace
+ ! no \DWATname attribute
7\$:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("i")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+ \DWTAGvariable
+ \DWATname("i")
+ \DWATtype(reference to 1\$)
+ \DWATlocation ...
...
-10\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name}("A")
-20\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name}("B")
-30\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("j")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+10\$: \DWTAGnamespace
+ \DWATname("A")
+20\$: \DWTAGnamespace
+ \DWATname("B")
+30\$: \DWTAGvariable
+ \DWATname("j")
+ \DWATtype(reference to 1\$)
+ \DWATlocation ...
...
-34\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("myfunc")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
+34\$: \DWTAGsubprogram
+ \DWATname("myfunc")
+ \DWATtype(reference to 1\$)
...
-36\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("myfunc")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 2\$)
+36\$: \DWTAGsubprogram
+ \DWATname("myfunc")
+ \DWATtype(reference to 2\$)
...
-38\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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\$)
+38\$: \DWTAGsubprogram
+ \DWATname("myfunc2")
+ \DWATlowpc ...
+ \DWAThighpc ...
+ \DWATtype(reference to 1\$)
...
\end{alltt}
\end{dwflisting}
\figurepart{2}{2}
\begin{dwflisting}
\begin{alltt}
-40\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATname}{DW\_AT\_name}("Y")
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (1) using-declaration
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 30\$)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("foo")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+40\$: \DWTAGnamespace
+ \DWATname("Y")
+ \DWTAGimporteddeclaration ! (1) using-declaration
+ \DWATimport(reference to 30\$)
+ \DWTAGvariable
+ \DWATname("foo")
+ \DWATtype(reference to 1\$)
+ \DWATlocation ...
...
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (2) using declaration
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 30\$)
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (3) namespace alias
- \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
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 34\$) ! - part 1
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (4) using declaration
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 36\$) ! - part 2
- \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module} ! (5) using directive
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 20\$)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATextension}{DW\_AT\_extension}(reference to 10\$)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- \livelink{chap:DWATextension}{DW\_AT\_extension}(reference to 20\$)
- \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module} ! (6) using directive
- \livelink{chap:DWATimport}{DW\_AT\_import}(reference to 40\$)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("k")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+ \DWTAGimporteddeclaration ! (2) using declaration
+ \DWATimport(reference to 30\$)
+ \DWTAGimporteddeclaration ! (3) namespace alias
+ \DWATname("Foo")
+ \DWATimport(reference to 20\$)
+ \DWTAGimporteddeclaration ! (4) using declaration
+ \DWATimport(reference to 34\$) ! - part 1
+ \DWTAGimporteddeclaration ! (4) using declaration
+ \DWATimport(reference to 36\$) ! - part 2
+ \DWTAGimportedmodule ! (5) using directive
+ \DWATimport(reference to 20\$)
+ \DWTAGnamespace
+ \DWATextension(reference to 10\$)
+ \DWTAGnamespace
+ \DWATextension(reference to 20\$)
+ \DWTAGimportedmodule ! (6) using directive
+ \DWATimport(reference to 40\$)
+ \DWTAGvariable
+ \DWATname("k")
+ \DWATtype(reference to 1\$)
+ \DWATlocation ...
...
-60\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATspecification}{DW\_AT\_specification}(reference to 34\$)
- \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} ...
- \livelink{chap:DWAThighpc}{DW\_AT\_high\_pc} ...
+60\$: \DWTAGsubprogram
+ \DWATspecification(reference to 34\$)
+ \DWATlowpc ...
+ \DWAThighpc ...
...
\end{alltt}
\end{dwflisting}
\figurepart{1}{2}
\begin{dwflisting}
\begin{alltt}
-1\$: \livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("void")
+1\$: \DWTAGunspecifiedtype
+ \DWATname("void")
...
-2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("int")
+2\$: \DWTAGbasetype
+ \DWATname("int")
...
-3\$: \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("A")
+3\$: \DWTAGclasstype
+ \DWATname("A")
...
-4\$: \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 3\$)
+4\$: \DWTAGpointertype
+ \DWATtype(reference to 3\$)
...
-5\$: \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 3\$)
+5\$: \DWTAGconsttype
+ \DWATtype(reference to 3\$)
...
-6\$: \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 5\$)
+6\$: \DWTAGpointertype
+ \DWATtype(reference to 5\$)
...
-7\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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\$) \addtoindexx{object pointer attribute}
+7\$: \DWTAGsubprogram
+ \DWATdeclaration
+ \DWATname("func1")
+ \DWATtype(reference to 1\$)
+ \DWATobjectpointer(reference to 8\$) \addtoindexx{object pointer attribute}
! References a formal parameter in this
! member function
...
\figurepart{2}{2}
\begin{dwflisting}
\begin{alltt}
-8\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATartificial}{DW\_AT\_artificial}(true)
- \livelink{chap:DWATname}{DW\_AT\_name}("this")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 4\$)
+8\$: \DWTAGformalparameter
+ \DWATartificial(true)
+ \DWATname("this")
+ \DWATtype(reference to 4\$)
! Makes type of 'this' as 'A*' =>
! func1 has not been marked const
! or volatile
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+ \DWATlocation ...
...
-9\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}(x1)
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 2\$)
+9\$: \DWTAGformalparameter
+ \DWATname(x1)
+ \DWATtype(reference to 2\$)
...
-10\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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\$) \addtoindexx{object pointer attribute}
+10\$: \DWTAGsubprogram
+ \DWATdeclaration
+ \DWATname("func2")
+ \DWATtype(reference to 1\$)
+ \DWATobjectpointer(reference to 11\$) \addtoindexx{object pointer attribute}
! References a formal parameter in this
! member function
...
-11\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATartificial}{DW\_AT\_artificial}(true)
- \livelink{chap:DWATname}{DW\_AT\_name}("this")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 6\$)
+11\$: \DWTAGformalparameter
+ \DWATartificial(true)
+ \DWATname("this")
+ \DWATtype(reference to 6\$)
! Makes type of 'this' as 'A const*' =>
! func2 marked as const
- \livelink{chap:DWATlocation}{DW\_AT\_location} ...
+ \DWATlocation ...
...
-12\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATdeclaration}{DW\_AT\_declaration}
- \livelink{chap:DWATname}{DW\_AT\_name}("func3")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
+12\$: \DWTAGsubprogram
+ \DWATdeclaration
+ \DWATname("func3")
+ \DWATtype(reference to 1\$)
...
! No object pointer reference formal parameter
! implies func3 is static
-13\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}(x3)
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 2\$)
+13\$: \DWTAGformalparameter
+ \DWATname(x3)
+ \DWATtype(reference to 2\$)
...
\end{alltt}
\end{dwflisting}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWLNSadvancepc}{DW\_LNS\_advance\_pc}&LEB128(0x239)&0x2, 0xb9, 0x04 \\
+\DWLNSadvancepc&LEB128(0x239)&0x2, 0xb9, 0x04 \\
SPECIAL(2, 0)& &0xb \\
SPECIAL(2, 3)& &0x38 \\
SPECIAL(1, 8)& &0x82 \\
SPECIAL(1, 7)& &0x73 \\
-\livelink{chap:DWLNSadvancepc}{DW\_LNS\_advance\_pc}&LEB128(2)&0x2, 0x2 \\
-\livelink{chap:DWLNEendsequence}{DW\_LNE\_end\_sequence} &&0x0, 0x1, 0x1 \\
+\DWLNSadvancepc&LEB128(2)&0x2, 0x2 \\
+\DWLNEendsequence{} &&0x0, 0x1, 0x1 \\
\end{longtable}
\end{centering}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x239&0x9, 0x39, 0x2 \\
+\DWLNSfixedadvancepc&0x239&0x9, 0x39, 0x2 \\
SPECIAL(2, 0)&& 0xb \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x3&0x9, 0x3, 0x0 \\
+\DWLNSfixedadvancepc&0x3&0x9, 0x3, 0x0 \\
SPECIAL(2, 0)&&0xb \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x8&0x9, 0x8, 0x0 \\
+\DWLNSfixedadvancepc&0x8&0x9, 0x8, 0x0 \\
SPECIAL(1, 0)&& 0xa \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x7&0x9, 0x7, 0x0 \\
+\DWLNSfixedadvancepc&0x7&0x9, 0x7, 0x0 \\
SPECIAL(1, 0) && 0xa \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc}&0x2&0x9, 0x2, 0x0 \\
-\livelink{chap:DWLNEendsequence}{DW\_LNE\_end\_sequence}&&0x0, 0x1, 0x1 \\
+\DWLNSfixedadvancepc&0x2&0x9, 0x2, 0x0 \\
+\DWLNEendsequence&&0x0, 0x1, 0x1 \\
\end{longtable}
\end{centering}
cie+12&4&code\_alignment\_factor, \textless caf \textgreater \\
cie+13&-4&data\_alignment\_factor, \textless daf \textgreater \\
cie+14&8&R8 is the return addr. \\
-cie+15&\livelink{chap:DWCFAdefcfa}{DW\_CFA\_def\_cfa} (7, 0)&CFA = [R7]+0 \\
-cie+18&\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value} (0)&R0 not modified (=0) \\
-cie+20&\livelink{chap:DWCFAundefined}{DW\_CFA\_undefined} (1)&R1 scratch \\
-cie+22&\livelink{chap:DWCFAundefined}{DW\_CFA\_undefined} (2)&R2 scratch \\
-cie+24&\livelink{chap:DWCFAundefined}{DW\_CFA\_undefined} (3)&R3 scratch \\
-cie+26&\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value} (4)&R4 preserve \\
-cie+28&\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value} (5)&R5 preserve \\
-cie+30&\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value} (6)&R6 preserve \\
-cie+32&\livelink{chap:DWCFAsamevalue}{DW\_CFA\_same\_value} (7)&R7 preserve \\
-cie+34&\livelink{chap:DWCFAregister}{DW\_CFA\_register} (8, 1)&R8 is in R1 \\
-cie+37&\livelink{chap:DWCFAnop}{DW\_CFA\_nop} &padding \\
-cie+38&\livelink{chap:DWCFAnop}{DW\_CFA\_nop} &padding \\
-cie+39& \livelink{chap:DWCFAnop}{DW\_CFA\_nop}&padding \\
+cie+15&\DWCFAdefcfa{} (7, 0)&CFA = [R7]+0 \\
+cie+18&\DWCFAsamevalue{} (0)&R0 not modified (=0) \\
+cie+20&\DWCFAundefined{} (1)&R1 scratch \\
+cie+22&\DWCFAundefined{} (2)&R2 scratch \\
+cie+24&\DWCFAundefined{} (3)&R3 scratch \\
+cie+26&\DWCFAsamevalue{} (4)&R4 preserve \\
+cie+28&\DWCFAsamevalue{} (5)&R5 preserve \\
+cie+30&\DWCFAsamevalue{} (6)&R6 preserve \\
+cie+32&\DWCFAsamevalue{} (7)&R7 preserve \\
+cie+34&\DWCFAregister{} (8, 1)&R8 is in R1 \\
+cie+37&\DWCFAnop{} &padding \\
+cie+38&\DWCFAnop{} &padding \\
+cie+39& \DWCFAnop&padding \\
cie+40 && \\
\end{longtable}
\end{centering}
fde+4&cie&CIE\_ptr \\
fde+8&foo&initial\_location \\
fde+12&84&address\_range \\
-fde+16&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1)&instructions \\
-fde+17&\livelink{chap:DWCFAdefcfaoffset}{DW\_CFA\_def\_cfa\_offset}(12)& \textless fs\textgreater \\
-fde+19&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1)&4/\textless caf\textgreater \\
-fde+20&\livelink{chap:DWCFAoffset}{DW\_CFA\_offset}(8,1)&-4/\textless daf\textgreater (2nd parameter) \\
-fde+22&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1)& \\
-fde+23&\livelink{chap:DWCFAoffset}{DW\_CFA\_offset}(6,2)&-8/\textless daf\textgreater (2nd parameter) \\
-fde+25&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1) & \\
-fde+26&\livelink{chap:DWCFAdefcfaregister}{DW\_CFA\_def\_cfa\_register}(6) & \\
-fde+28&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1) & \\
-fde+29&\livelink{chap:DWCFAoffset}{DW\_CFA\_offset}(4,3)&-12/\textless daf\textgreater (2nd parameter) \\
-fde+31&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(12)&44/\textless caf\textgreater \\
-fde+32&\livelink{chap:DWCFArestore}{DW\_CFA\_restore}(4)& \\
-fde+33&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1) & \\
-fde+34&\livelink{chap:DWCFArestore}{DW\_CFA\_restore}(6) & \\
-fde+35&\livelink{chap:DWCFAdefcfaregister}{DW\_CFA\_def\_cfa\_register}(7) & \\
-fde+37&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1) & \\
-fde+38&\livelink{chap:DWCFArestore}{DW\_CFA\_restore}(8) &\\
-fde+39&\livelink{chap:DWCFAadvanceloc}{DW\_CFA\_advance\_loc}(1) &\\
-fde+40&\livelink{chap:DWCFAdefcfaoffset}{DW\_CFA\_def\_cfa\_offset}(0) &\\
-fde+42&\livelink{chap:DWCFAnop}{DW\_CFA\_nop}&padding \\
-fde+43&\livelink{chap:DWCFAnop}{DW\_CFA\_nop}&padding \\
+fde+16&\DWCFAadvanceloc(1)&instructions \\
+fde+17&\DWCFAdefcfaoffset(12)& \textless fs\textgreater \\
+fde+19&\DWCFAadvanceloc(1)&4/\textless caf\textgreater \\
+fde+20&\DWCFAoffset(8,1)&-4/\textless daf\textgreater (2nd parameter) \\
+fde+22&\DWCFAadvanceloc(1)& \\
+fde+23&\DWCFAoffset(6,2)&-8/\textless daf\textgreater (2nd parameter) \\
+fde+25&\DWCFAadvanceloc(1) & \\
+fde+26&\DWCFAdefcfaregister(6) & \\
+fde+28&\DWCFAadvanceloc(1) & \\
+fde+29&\DWCFAoffset(4,3)&-12/\textless daf\textgreater (2nd parameter) \\
+fde+31&\DWCFAadvanceloc(12)&44/\textless caf\textgreater \\
+fde+32&\DWCFArestore(4)& \\
+fde+33&\DWCFAadvanceloc(1) & \\
+fde+34&\DWCFArestore(6) & \\
+fde+35&\DWCFAdefcfaregister(7) & \\
+fde+37&\DWCFAadvanceloc(1) & \\
+fde+38&\DWCFArestore(8) &\\
+fde+39&\DWCFAadvanceloc(1) &\\
+fde+40&\DWCFAdefcfaoffset(0) &\\
+fde+42&\DWCFAnop&padding \\
+fde+43&\DWCFAnop&padding \\
fde+44 && \\
\end{longtable}
\end{centering}
! Abstract instance for OUTER
! \addtoindexx{abstract instance!example}
OUTER.AI.1.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER")
- \livelink{chap:DWATinline}{DW\_AT\_inline}(\livelink{chap:DWINLdeclaredinlined}{DW\_INL\_declared\_inlined})
+ \DWTAGsubprogram
+ \DWATname("OUTER")
+ \DWATinline(\DWINLdeclaredinlined)
! No low/high PCs
OUTER.AI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGformalparameter
+ \DWATname("OUTER\_FORMAL")
+ \DWATtype(reference to integer)
! No location
OUTER.AI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGvariable
+ \DWATname("OUTER\_LOCAL")
+ \DWATtype(reference to integer)
! No location
!
! Abstract instance for INNER
!
INNER.AI.1.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER")
- \livelink{chap:DWATinline}{DW\_AT\_inline}(\livelink{chap:DWINLdeclaredinlined}{DW\_INL\_declared\_inlined})
+ \DWTAGsubprogram
+ \DWATname("INNER")
+ \DWATinline(\DWINLdeclaredinlined)
! No low/high PCs
INNER.AI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGformalparameter
+ \DWATname("INNER\_FORMAL")
+ \DWATtype(reference to integer)
! No location
INNER.AI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGvariable
+ \DWATname("INNER\_LOCAL")
+ \DWATtype(reference to integer)
! No location
...
0
- ! No \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} (concrete instance)
+ ! No \DWTAGinlinedsubroutine (concrete instance)
! for INNER corresponding to calls of INNER
...
0
! Concrete instance for call "OUTER(7)"
! \addtoindexx{concrete instance!example}
OUTER.CI.1.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \DWTAGinlinedsubroutine
! No name
- \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}(...)
+ \DWATabstractorigin(reference to OUTER.AI.1.1)
+ \DWATlowpc(...)
+ \DWAThighpc(...)
OUTER.CI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \DWTAGformalparameter
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.1.2)
- \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(7)
+ \DWATabstractorigin(reference to OUTER.AI.1.2)
+ \DWATconstvalue(7)
OUTER.CI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \DWTAGvariable
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.1.3)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to OUTER.AI.1.3)
+ \DWATlocation(...)
!
- ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} (abstract instance) for INNER
+ ! No \DWTAGsubprogram (abstract instance) for INNER
!
! Concrete instance for call INNER(OUTER\_LOCAL)
!
INNER.CI.1.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \DWTAGinlinedsubroutine
! No name
- \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}(...)
+ \DWATabstractorigin(reference to INNER.AI.1.1)
+ \DWATlowpc(...)
+ \DWAThighpc(...)
+ \DWATstaticlink(...)
INNER.CI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \DWTAGformalparameter
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to INNER.AI.1.2)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to INNER.AI.1.2)
+ \DWATlocation(...)
INNER.CI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \DWTAGvariable
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to INNER.AI.1.3)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to INNER.AI.1.3)
+ \DWATlocation(...)
...
0
! Another concrete instance of INNER within OUTER
differs from that in
Figure \refersec{fig:inliningexample1abstractinstance}
in that \texttt{INNER} lacks a
-\livelink{chap:DWATinline}{DW\_AT\_inline} attribute
+\DWATinline{} attribute
and therefore is not a distinct abstract instance. \texttt{INNER}
is merely an out\dash of\dash line routine that is part of \texttt{OUTER}\textquoteright s
abstract instance. This is reflected in the Figure by
concrete out\dash of\dash line subprogram. Because \texttt{INNER} is cloned
for each inline expansion of \texttt{OUTER}, only the invariant
attributes of \texttt{INNER}
-(for example, \livelink{chap:DWATname}{DW\_AT\_name}) are specified
+(for example, \DWATname) are specified
in the abstract instance of \texttt{OUTER}, and the low\dash level,
\addtoindexx{abstract instance!example}
instance\dash specific attributes of \texttt{INNER} (for example,
-\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc}) are specified in
+\DWATlowpc) are specified in
each concrete instance of \texttt{OUTER}.
\addtoindexx{concrete instance!example}
! Abstract instance for OUTER
! \addtoindex{abstract instance}
OUTER.AI.2.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER")
- \livelink{chap:DWATinline}{DW\_AT\_inline}(\livelink{chap:DWINLdeclaredinlined}{DW\_INL\_declared\_inlined})
+ \DWTAGsubprogram
+ \DWATname("OUTER")
+ \DWATinline(\DWINLdeclaredinlined)
! No low/high PCs
OUTER.AI.2.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGformalparameter
+ \DWATname("OUTER\_FORMAL")
+ \DWATtype(reference to integer)
! No location
OUTER.AI.2.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGvariable
+ \DWATname("OUTER\_LOCAL")
+ \DWATtype(reference to integer)
! No location
!
! Nested out-of-line INNER subprogram
!
OUTER.AI.2.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER")
- ! No \livelink{chap:DWATinline}{DW\_AT\_inline}
+ \DWTAGsubprogram
+ \DWATname("INNER")
+ ! No \DWATinline
! No low/high PCs, frame\_base, etc.
OUTER.AI.2.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGformalparameter
+ \DWATname("INNER\_FORMAL")
+ \DWATtype(reference to integer)
! No location
OUTER.AI.2.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGvariable
+ \DWATname("INNER\_LOCAL")
+ \DWATtype(reference to integer)
! No location
...
0
! Concrete instance for call "OUTER(7)"
!
OUTER.CI.2.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \DWTAGinlinedsubroutine
! No name
- \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}(...)
+ \DWATabstractorigin(reference to OUTER.AI.2.1)
+ \DWATlowpc(...)
+ \DWAThighpc(...)
OUTER.CI.2.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \DWTAGformalparameter
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.2.2)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to OUTER.AI.2.2)
+ \DWATlocation(...)
OUTER.CI.2.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \DWTAGvariable
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.2.3)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to OUTER.AI.2.3)
+ \DWATlocation(...)
!
! Nested out-of-line INNER subprogram
!
OUTER.CI.2.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+ \DWTAGsubprogram
! No name
- \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}(...)
+ \DWATabstractorigin(reference to OUTER.AI.2.4)
+ \DWATlowpc(...)
+ \DWAThighpc(...)
+ \DWATframebase(...)
+ \DWATstaticlink(...)
OUTER.CI.2.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \DWTAGformalparameter
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.2.5)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to OUTER.AI.2.5)
+ \DWATlocation(...)
OUTER.CI.2.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \DWTAGvariable
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AT.2.6)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATabstractorigin(reference to OUTER.AT.2.6)
+ \DWATlocation(...)
...
0
...
complement of attributes that would be expected for a
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},
+\DWATlowpc,
+\DWAThighpc,
+\DWATlocation,
and so on, typically are omitted
\addtoindexx{high PC attribute}
from
! Abstract instance for OUTER
! \addtoindexx{abstract instance!example}
OUTER.AI.3.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER")
- \livelink{chap:DWATinline}{DW\_AT\_inline}(\livelink{chap:DWINLdeclaredinlined}{DW\_INL\_declared\_inlined})
+ \DWTAGsubprogram
+ \DWATname("OUTER")
+ \DWATinline(\DWINLdeclaredinlined)
! No low/high PCs
OUTER.AI.3.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGformalparameter
+ \DWATname("OUTER\_FORMAL")
+ \DWATtype(reference to integer)
! No location
OUTER.AI.3.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("OUTER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
+ \DWTAGvariable
+ \DWATname("OUTER\_LOCAL")
+ \DWATtype(reference to integer)
! No location
!
! Normal INNER
!
OUTER.AI.3.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \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}(...)
+ \DWTAGsubprogram
+ \DWATname("INNER")
+ \DWATlowpc(...)
+ \DWAThighpc(...)
+ \DWATframebase(...)
+ \DWATstaticlink(...)
OUTER.AI.3.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_FORMAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWTAGformalparameter
+ \DWATname("INNER\_FORMAL")
+ \DWATtype(reference to integer)
+ \DWATlocation(...)
OUTER.AI.3.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("INNER\_LOCAL")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to integer)
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWTAGvariable
+ \DWATname("INNER\_LOCAL")
+ \DWATtype(reference to integer)
+ \DWATlocation(...)
...
0
...
! Concrete instance for call "OUTER(7)"
! \addtoindexx{concrete instance!example}
OUTER.CI.3.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \DWTAGinlinedsubroutine
! No name
- \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}(...)
+ \DWATabstractorigin(reference to OUTER.AI.3.1)
+ \DWATlowpc(...)
+ \DWAThighpc(...)
+ \DWATframebase(...)
OUTER.CI.3.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \DWTAGformalparameter
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.3.2)
+ \DWATabstractorigin(reference to OUTER.AI.3.2)
! No type
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
+ \DWATlocation(...)
OUTER.CI.3.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \DWTAGvariable
! No name
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to OUTER.AI.3.3)
+ \DWATabstractorigin(reference to OUTER.AI.3.3)
! No type
- \livelink{chap:DWATlocation}{DW\_AT\_location}(...)
- ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} for "INNER"
+ \DWATlocation(...)
+ ! No \DWTAGsubprogram for "INNER"
...
0
\end{alltt}
\begin{alltt}
! For variable mass
!
-1\$: \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "double")
-2\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \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)
+1\$: \DWTAGconsttype
+ \DWATtype(reference to "double")
+2\$: \DWTAGvariable
+ \DWATname("mass")
+ \DWATtype(reference to 1\$)
+ \DWATconstexpr(true)
+ \DWATconstvalue(9.8)
! Abstract instance for square
!
-10\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("square")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
- \livelink{chap:DWATinline}{DW\_AT\_inline}(\livelink{chap:DWINLinlined}{DW\_INL\_inlined})
-11\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("x")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
+10\$: \DWTAGsubprogram
+ \DWATname("square")
+ \DWATtype(reference to "int")
+ \DWATinline(\DWINLinlined)
+11\$: \DWTAGformalparameter
+ \DWATname("x")
+ \DWATtype(reference to "int")
! Concrete instance for square(9)
! \addtoindexx{concrete instance!example}
-20\$: \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
- \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}
- \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}(reference to 11\$)
- \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(9)
+20\$: \DWTAGinlinedsubroutine
+ \DWATabstractorigin(reference to 10\$)
+ \DWATconstexpr(present)
+ \DWATconstvalue(81)
+ \DWTAGformalparameter
+ \DWATabstractorigin(reference to 11\$)
+ \DWATconstvalue(9)
! Anonymous array type for arr
!
-30\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
- \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}
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
- \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(reference to 20\$)
+30\$: \DWTAGarraytype
+ \DWATtype(reference to "float")
+ \DWATbytesize(324) ! 81*4
+ \DWTAGsubrangetype
+ \DWATtype(reference to "int")
+ \DWATupperbound(reference to 20\$)
! Variable arr
!
-40\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("arr")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 30\$)
+40\$: \DWTAGvariable
+ \DWATname("arr")
+ \DWATtype(reference to 30\$)
\end{alltt}
\end{dwflisting}
\caption{Constant expressions: DWARF description}
! DWARF description
!
-1\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("char16\_t")
- \livelink{chap:DWATencoding}{DW\_AT\_encoding}(\livelink{chap:DWATEUTF}{DW\_ATE\_UTF})
- \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}(2)
-2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("char32\_t")
- \livelink{chap:DWATencoding}{DW\_AT\_encoding}(\livelink{chap:DWATEUTF}{DW\_ATE\_UTF})
- \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}(4)
-3\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("chr\_a")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 1\$)
-4\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("chr\_b")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 2\$)
+1\$: \DWTAGbasetype
+ \DWATname("char16\_t")
+ \DWATencoding(\DWATEUTF)
+ \DWATbytesize(2)
+2\$: \DWTAGbasetype
+ \DWATname("char32\_t")
+ \DWATencoding(\DWATEUTF)
+ \DWATbytesize(4)
+3\$: \DWTAGvariable
+ \DWATname("chr\_a")
+ \DWATtype(reference to 1\$)
+4\$: \DWTAGvariable
+ \DWATname("chr\_b")
+ \DWATtype(reference to 2\$)
\end{alltt}
\end{dwflisting}
\caption{Unicode character example: DWARF description}
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("E1")
- \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(0)
-13\$: \livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
- \livelink{chap:DWATname}{DW\_AT\_name}("E2")
- \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(100)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("e1")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 11\$)
+11\$: \DWTAGenumerationtype
+ \DWATname("E")
+ \DWATtype(reference to "int")
+ \DWATenumclass(present)
+12\$: \DWTAGenumerator
+ \DWATname("E1")
+ \DWATconstvalue(0)
+13\$: \DWTAGenumerator
+ \DWATname("E2")
+ \DWATconstvalue(100)
+14\$: \DWTAGvariable
+ \DWATname("e1")
+ \DWATtype(reference to 11\$)
\end{alltt}
\end{dwflisting}
\caption{Type-safe enumeration example: DWARF description}
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("wrapper")
-12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("T")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
-13\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("comp")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 12\$)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("obj")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 11\$)
+11\$: \DWTAGstructuretype
+ \DWATname("wrapper")
+12\$: \DWTAGtemplatetypeparameter
+ \DWATname("T")
+ \DWATtype(reference to "int")
+13\$: \DWTAGmember
+ \DWATname("comp")
+ \DWATtype(reference to 12\$)
+14\$: \DWTAGvariable
+ \DWATname("obj")
+ \DWATtype(reference to 11\$)
\end{alltt}
\end{dwflisting}
\caption{C++ template example \#1: DWARF description}
The actual type of the component \texttt{comp} is \texttt{int}, but in the DWARF
the type references the
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
+\DWTAGtemplatetypeparameter{}
for \texttt{T}, which in turn references \texttt{int}. This implies that in the
original template comp was of type \texttt{T} and that was replaced
with \texttt{int} in the instance.
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("wrapper")
-12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("T")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
-13\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("comp")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 12\$)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("obj")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 11\$)
-21\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- \livelink{chap:DWATname}{DW\_AT\_name}("consume")
-22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("U")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
-23\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("formal")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 11\$)
+11\$: \DWTAGstructuretype
+ \DWATname("wrapper")
+12\$: \DWTAGtemplatetypeparameter
+ \DWATname("T")
+ \DWATtype(reference to "int")
+13\$: \DWTAGmember
+ \DWATname("comp")
+ \DWATtype(reference to 12\$)
+14\$: \DWTAGvariable
+ \DWATname("obj")
+ \DWATtype(reference to 11\$)
+21\$: \DWTAGsubprogram
+ \DWATname("consume")
+22\$: \DWTAGtemplatetypeparameter
+ \DWATname("U")
+ \DWATtype(reference to "int")
+23\$: \DWTAGformalparameter
+ \DWATname("formal")
+ \DWATtype(reference to 11\$)
\end{alltt}
\end{dwflisting}
\caption{C++ template example \#2: DWARF description}
\label{fig:ctemplateexample2dwarf}
\end{figure}
-In the \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+In the \DWTAGsubprogram{}
entry for the instance of consume, \texttt{U} is described as \texttt{int}.
The type of formal is \texttt{wrapper\textless U\textgreater} in
the source. DWARF only represents instantiations of templates;
a template parameter nor a template instantiation. The type
of formal is described as \texttt{wrapper\textless int\textgreater},
the instantiation of \texttt{wrapper\textless U\textgreater},
-in the \livelink{chap:DWATtype}{DW\_AT\_type} attribute at
+in the \DWATtype{} attribute at
23\$.
There is no
description of the relationship between template type parameter
\begin{alltt}
! DWARF representation for variable 'b'
!
-20\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("Alpha")
-21\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("U")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "long")
-23\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("tango")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 21\$)
-24\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- \livelink{chap:DWATname}{DW\_AT\_name}("uniform")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 22\$)
-25\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("V")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "long")
-27\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("b")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 25\$)
+20\$: \DWTAGstructuretype
+ \DWATname("Alpha")
+21\$: \DWTAGtemplatetypeparameter
+ \DWATname("T")
+ \DWATtype(reference to "long")
+22\$: \DWTAGtemplatetypeparameter
+ \DWATname("U")
+ \DWATtype(reference to "long")
+23\$: \DWTAGmember
+ \DWATname("tango")
+ \DWATtype(reference to 21\$)
+24\$: \DWTAGmember
+ \DWATname("uniform")
+ \DWATtype(reference to 22\$)
+25\$: \DWTAGtemplatealias
+ \DWATname("Beta")
+ \DWATtype(reference to 20\$)
+26\$: \DWTAGtemplatetypeparameter
+ \DWATname("V")
+ \DWATtype(reference to "long")
+27\$: \DWTAGvariable
+ \DWATname("b")
+ \DWATtype(reference to 25\$)
\end{alltt}
\end{dwflisting}
\caption{C++ template alias example \#1: DWARF description}
\begin{alltt}
! DWARF representation for X<Y<int>>
!
-30\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("Y")
-31\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("TY")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
-32\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("X")
-33\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("TX")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 30\$)
+30\$: \DWTAGstructuretype
+ \DWATname("Y")
+31\$: \DWTAGtemplatetypeparameter
+ \DWATname("TY")
+ \DWATtype(reference to "int")
+32\$: \DWTAGstructuretype
+ \DWATname("X")
+33\$: \DWTAGtemplatetypeparameter
+ \DWATname("TX")
+ \DWATtype(reference to 30\$)
!
! DWARF representation for X<Z<int>>
!
-40\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
- \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}
- \livelink{chap:DWATname}{DW\_AT\_name}("T")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to "int")
-42\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- \livelink{chap:DWATname}{DW\_AT\_name}("X")
-43\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- \livelink{chap:DWATname}{DW\_AT\_name}("TX")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 40\$)
+40\$: \DWTAGtemplatealias
+ \DWATname("Z")
+ \DWATtype(reference to 30\$)
+41\$: \DWTAGtemplatetypeparameter
+ \DWATname("T")
+ \DWATtype(reference to "int")
+42\$: \DWTAGstructuretype
+ \DWATname("X")
+43\$: \DWTAGtemplatetypeparameter
+ \DWATname("TX")
+ \DWATtype(reference to 40\$)
!
! Note that 32\$ and 42\$ are actually the same type
!
-50\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("y")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to \$32)
-51\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- \livelink{chap:DWATname}{DW\_AT\_name}("z")
- \livelink{chap:DWATtype}{DW\_AT\_type}(reference to \$42)
+50\$: \DWTAGvariable
+ \DWATname("y")
+ \DWATtype(reference to \$32)
+51\$: \DWTAGvariable
+ \DWATname("z")
+ \DWATtype(reference to \$42)
\end{alltt}
\end{dwflisting}
\caption{C++ template alias example \#2: DWARF description}
\label{tab:tagnames}
\simplerule[6in]
\autocols[0pt]{c}{2}{l}{
-\livelink{chap:DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration},
-\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type},
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type},
-\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block},
-\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type},
+\DWTAGaccessdeclaration,
+\DWTAGarraytype,
+\DWTAGbasetype,
+\DWTAGcatchblock,
+\DWTAGclasstype,
\DWTAGcoarraytype,
-\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block},
-\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion},
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit},
-\livelink{chap:DWTAGcondition}{DW\_TAG\_condition},
-\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type},
-\livelink{chap:DWTAGconstant}{DW\_TAG\_constant},
-\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure},
-\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point},
-\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type},
-\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator},
-\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type},
-\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter},
-\livelink{chap:DWTAGfriend}{DW\_TAG\_friend},
+\DWTAGcommonblock,
+\DWTAGcommoninclusion,
+\DWTAGcompileunit,
+\DWTAGcondition,
+\DWTAGconsttype,
+\DWTAGconstant,
+\DWTAGdwarfprocedure,
+\DWTAGentrypoint,
+\DWTAGenumerationtype,
+\DWTAGenumerator,
+\DWTAGfiletype,
+\DWTAGformalparameter,
+\DWTAGfriend,
\DWTAGgenericsubrange,
-\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration},
-\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module},
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit},
-\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance},
-\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine},
-\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type},
-\livelink{chap:DWTAGlabel}{DW\_TAG\_label},
-\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block},
-\livelink{chap:DWTAGmodule}{DW\_TAG\_module},
-\livelink{chap:DWTAGmember}{DW\_TAG\_member},
-\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist},
-\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item},
-\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace},
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type},
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit},
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type},
-\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type},
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type},
-\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_type},
-\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type},
-\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type},
-\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type},
-\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type},
-\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type},
-\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram},
-\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type},
-\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type},
-\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias},
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter},
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter},
-\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type},
-\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block},
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef},
-\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit},
-\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type},
-\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters},
-\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type},
-\livelink{chap:DWTAGvariable}{DW\_TAG\_variable},
-\livelink{chap:DWTAGvariant}{DW\_TAG\_variant},
-\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part},
-\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type},
-\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}
+\DWTAGimporteddeclaration,
+\DWTAGimportedmodule,
+\DWTAGimportedunit,
+\DWTAGinheritance,
+\DWTAGinlinedsubroutine,
+\DWTAGinterfacetype,
+\DWTAGlabel,
+\DWTAGlexicalblock,
+\DWTAGmodule,
+\DWTAGmember,
+\DWTAGnamelist,
+\DWTAGnamelistitem,
+\DWTAGnamespace,
+\DWTAGpackedtype,
+\DWTAGpartialunit,
+\DWTAGpointertype,
+\DWTAGptrtomembertype,
+\DWTAGreferencetype,
+\DWTAGrestricttype,
+\DWTAGrvaluereferencetype,
+\DWTAGsettype,
+\DWTAGsharedtype,
+\DWTAGstringtype,
+\DWTAGstructuretype,
+\DWTAGsubprogram,
+\DWTAGsubrangetype,
+\DWTAGsubroutinetype,
+\DWTAGtemplatealias,
+\DWTAGtemplatetypeparameter,
+\DWTAGtemplatevalueparameter,
+\DWTAGthrowntype,
+\DWTAGtryblock,
+\DWTAGtypedef,
+\DWTAGtypeunit,
+\DWTAGuniontype,
+\DWTAGunspecifiedparameters,
+\DWTAGunspecifiedtype,
+\DWTAGvariable,
+\DWTAGvariant,
+\DWTAGvariantpart,
+\DWTAGvolatiletype,
+\DWTAGwithstmt
}
\simplerule[6in]
\end{table}
this section and not necessarily mentioned in all
contexts where they may be appropriate.
Examples include
-\livelink{chap:DWATartificial}{DW\_AT\_artificial},
+\DWATartificial,
the \livelink{chap:declarationcoordinates}{declaration coordinates}, and
-\livelink{chap:DWATdescription}{DW\_AT\_description},
+\DWATdescription,
among others.}
The debugging information entries are contained
\endfoot
\hline
\endlastfoot
-\livetarg{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}
+\DWATabstractoriginTARG
&\livelinki{chap:DWATabstractorigininlineinstance}{Inline instances of inline subprograms} {inline instances of inline subprograms} \\
% Heren livelink we cannot use \dash or \dash{}.
&\livelinki{chap:DWATabstractoriginoutoflineinstance}{Out-of-line instances of inline subprograms}{out-of-line instances of inline subprograms} \\
-\livetarg{chap:DWATaccessibility}{DW\_AT\_accessibility}
+\DWATaccessibilityTARG
&\livelink{chap:DWATaccessibilitycandadadeclarations}{C++ and Ada declarations} \addtoindexx{Ada} \\
&\livelink{chap:DWATaccessibilitycppbaseclasses}{C++ base classes} \\
&\livelink{chap:DWATaccessibilitycppinheritedmembers}{C++ inherited members} \\
-\livetarg{chap:DWATaddressclass}{DW\_AT\_address\_class}
+\DWATaddressclassTARG
&\livelinki{chap:DWATadressclasspointerorreferencetypes}{Pointer or reference types}{pointer or reference types} \\
&\livelinki{chap:DWATaddressclasssubroutineorsubroutinetype}{Subroutine or subroutine type}{subroutine or subroutine type} \\
-\livetarg{chap:DWATallocated}{DW\_AT\_allocated}
+\DWATallocatedTARG
&\livelinki{chap:DWATallocatedallocationstatusoftypes}{Allocation status of types}{allocation status of types} \\
-\livetarg{chap:DWATartificial}{DW\_AT\_artificial}
+\DWATartificialTARG
&\livelinki{chap:DWATartificialobjectsortypesthat}{Objects or types that are not
actually declared in the source}{objects or types that are not actually declared in the source} \\
-\livetarg{chap:DWATassociated}{DW\_AT\_associated}
+\DWATassociatedTARG{}
&\livelinki{chap:DWATassociatedassociationstatusoftypes}{Association status of types}{association status of types} \\
-\livetarg{chap:DWATbasetypes}{DW\_AT\_base\_types}
+\DWATbasetypesTARG{}
&\livelinki{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{Primitive data types of compilation unit}{primitive data types of compilation unit} \\
-\livetarg{chap:DWATbinaryscale}{DW\_AT\_binary\_scale}
+\DWATbinaryscaleTARG{}
&\livelinki{chap:DWATbinaryscalebinaryscalefactorforfixedpointtype}{Binary scale factor for fixed-point type}{binary scale factor for fixed-point type} \\
-\livetarg{chap:DWATbitoffset}{DW\_AT\_bit\_offset}
+\DWATbitoffsetTARG{}
&\livelinki{chap:DWATbitoffsetbasetypebitlocation}{Base type bit location}{base type bit location} \\
&\livelinki{chap:DWATbitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
-\livetarg{chap:DWATbitsize}{DW\_AT\_bit\_size}
+\DWATbitsizeTARG{}
&\livelinki{chap:DWATbitsizebasetypebitsize}{Base type bit size}{base type bit size} \\
&\livelinki{chap:DWATbitsizedatamemberbitsize}{Data member bit size}{data member bit size} \\
\newpage
-\livetarg{chap:DWATbitstride}{DW\_AT\_bit\_stride}
+\DWATbitstrideTARG{}
&\livelinki{chap:DWATbitstridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
&\livelinki{chap:DWATbitstridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
&\livelinki{chap:DWATbitstrideenumerationstridedimensionofarraytype}{Enumeration stride (dimension of array type)}{enumeration stride (dimension of array type)} \\
-\livetarg{chap:DWATbytesize}{DW\_AT\_byte\_size}
+\DWATbytesizeTARG{}
&\livelinki{chap:DWATbytesizedataobjectordatatypesize}{Data object or data type size}{data object or data type size} \\
-\livetarg{chap:DWATbytestride}{DW\_AT\_byte\_stride}
+\DWATbytestrideTARG{}
&\livelinki{chap:DWATbytestridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
&\livelinki{chap:DWATbytestridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
&\livelinki{chap:DWATbytestrideenumerationstridedimensionofarraytype}{Enumeration stride (dimension of array type)}{enumeration stride (dimension of array type)} \\
-\livetarg{chap:DWATcallcolumn}{DW\_AT\_call\_column}
+\DWATcallcolumnTARG{}
&\livelinki{chap:DWATcallcolumncolumnpositionofinlinedsubroutinecall}{Column position of inlined subroutine call}{column position of inlined subroutine call}\\
-\livetarg{chap:DWATcallfile}{DW\_AT\_call\_file}
+\DWATcallfileTARG
&\livelinki{chap:DWATcallfilefilecontaininginlinedsubroutinecall}{File containing inlined subroutine call}{file containing inlined subroutine call} \\
-\livetarg{chap:DWATcallline}{DW\_AT\_call\_line}
+\DWATcalllineTARG{}
&\livelinki{chap:DWATcalllinelinenumberofinlinedsubroutinecall}{Line number of inlined subroutine call}{line number of inlined subroutine call} \\
-\livetarg{chap:DWATcallingconvention}{DW\_AT\_calling\_convention}
+\DWATcallingconventionTARG{}
&\livelinki{chap:DWATcallingconventionsubprogramcallingconvention}{Subprogram calling convention}{subprogram calling convention} \\
-\livetarg{chap:DWATcommonreference}{DW\_AT\_common\_reference}
+\DWATcommonreferenceTARG
&\livelinki{chap:commonreferencecommonblockusage}{Common block usage}{common block usage} \\
-\livetarg{chap:DWATcompdir}{DW\_AT\_comp\_dir}
+\DWATcompdirTARG
&\livelinki{chap:DWATcompdircompilationdirectory}{Compilation directory}{compilation directory} \\
-\livetarg{chap:DWATconstvalue}{DW\_AT\_const\_value}
+\DWATconstvalueTARG
&\livelinki{chap:DWATconstvalueconstantobject}{Constant object}{constant object} \\
&\livelinki{chap:DWATconstvalueenumerationliteralvalue}{Enumeration literal value}{enumeration literal value} \\
&\livelinki{chap:DWATconstvaluetemplatevalueparameter}{Template value parameter}{template value parameter} \\
-\livetarg{chap:DWATconstexpr}{DW\_AT\_const\_expr}
+\DWATconstexprTARG
&\livelinki{chap:DWATconstexprcompiletimeconstantobject}{Compile-time constant object}{compile-time constant object} \\
&\livelinki{chap:DWATconstexprcompiletimeconstantfunction}{Compile-time constant function}{compile-time constant function} \\
-\livetarg{chap:DWATcontainingtype}{DW\_AT\_containing\_type}
+\DWATcontainingtypeTARG
&\livelinki{chap:DWATcontainingtypecontainingtypeofpointertomembertype}{Containing type of pointer to member type}{containing type of pointer to member type} \\
-\livetarg{chap:DWATcount}{DW\_AT\_count}
+\DWATcountTARG
&\livelinki{chap:DWATcountelementsofsubrangetype}{Elements of subrange type}{elements ofbreg subrange type} \\
-\livetarg{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset}
+\DWATdatabitoffsetTARG
&\livelinki{chap:DWATdatabitoffsetbasetypebitlocation}{Base type bit location}{base type bit location} \\
&\livelinki{chap:DWATdatabitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
-\livetarg{chap:DWATdatalocation}{DW\_AT\_data\_location}
+\DWATdatalocationTARG{}
&\livelinki{chap:DWATdatalocationindirectiontoactualdata}{Indirection to actual data}{indirection to actual data} \\
-\livetarg{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location}
+\DWATdatamemberlocationTARG
&\livelinki{chap:DWATdatamemberlocationdatamemberlocation}{Data member location}{data member location} \\
&\livelinki{chap:DWATdatamemberlocationinheritedmemberlocation}{Inherited member location}{inherited member location} \\
-\livetarg{chap:DWATdecimalscale}{DW\_AT\_decimal\_scale}
+\DWATdecimalscaleTARG
&\livelinki{chap:DWATdecimalscaledecimalscalefactor}{Decimal scale factor}{decimal scale factor} \\
-\livetarg{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign}
+\DWATdecimalsignTARG
&\livelinki{chap:DWATdecimalsigndecimalsignrepresentation}{Decimal sign representation}{decimal sign representation} \\
-\livetarg{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}
+\DWATdeclcolumnTARG
&\livelinki{chap:DWATdeclcolumncolumnpositionofsourcedeclaration}{Column position of source declaration}{column position of source declaration} \\
-\livetarg{chap:DWATdeclfile}{DW\_AT\_decl\_file}
+\DWATdeclfileTARG
&\livelinki{chap:DWATdeclfilefilecontainingsourcedeclaration}{File containing source declaration}{file containing source declaration} \\
-\livetarg{chap:DWATdeclline}{DW\_AT\_decl\_line}
+\DWATdecllineTARG
&\livelinki{chap:DWATdecllinelinenumberofsourcedeclaration}{Line number of source declaration}{line number of source declaration} \\
-\livetarg{chap:DWATdeclaration}{DW\_AT\_declaration}
+\DWATdeclarationTARG
&\livelinki{chap:DWATdeclarationincompletenondefiningorseparateentitydeclaration}{Incomplete, non-defining, or separate entity declaration}{incomplete, non-defining, or separate entity declaration} \\
-\livetarg{chap:DWATdefaultvalue}{DW\_AT\_default\_value}
+\DWATdefaultvalueTARG
&\livelinki{chap:DWATdefaultvaluedefaultvalueofparameter}{Default value of parameter}{default value of parameter} \\
-\livetarg{chap:DWATdescription}{DW\_AT\_description}
+\DWATdescriptionTARG{}
&\livelinki{chap:DWATdescriptionartificialnameordescription}{Artificial name or description}{artificial name or description} \\
-\livetarg{chap:DWATdigitcount}{DW\_AT\_digit\_count}
+\DWATdigitcountTARG
&\livelinki{chap:DWATdigitcountdigitcountforpackeddecimalornumericstringtype}{Digit count for packed decimal or numeric string type}{digit count for packed decimal or numeric string type} \\
-\livetarg{chap:DWATdiscr}{DW\_AT\_discr}
+\DWATdiscrTARG
&\livelinki{chap:DWATdiscrdiscriminantofvariantpart}{Discriminant of variant part}{discriminant of variant part} \\
-\livetarg{chap:DWATdiscrlist}{DW\_AT\_discr\_list}
+\DWATdiscrlistTARG
&\livelinki{chap:DWATdiscrlistlistofdiscriminantvalues}{List of discriminant values}{list of discriminant values} \\
-\livetarg{chap:DWATdiscrvalue}{DW\_AT\_discr\_value}
+\DWATdiscrvalueTARG
&\livelinki{chap:DWATdiscrvaluediscriminantvalue}{Discriminant value}{discriminant value} \\
-\livetarg{chap:DWATelemental}{DW\_AT\_elemental}
+\DWATelementalTARG
&\livelinki{chap:DWATelementalelementalpropertyofasubroutine}{Elemental property of a subroutine}{elemental property of a subroutine} \\
-\livetarg{chap:DWATencoding}{DW\_AT\_encoding}
+\DWATencodingTARG
&\livelinki{chap:DWATencodingencodingofbasetype}{Encoding of base type}{encoding of base type} \\
-\livetarg{chap:DWATendianity}{DW\_AT\_endianity}
+\DWATendianityTARG
&\livelinki{chap:DWATendianityendianityofdata}{Endianity of data}{endianity of data} \\
-\livetarg{chap:DWATentrypc}{DW\_AT\_entry\_pc}
+\DWATentrypcTARG
&\livelinki{chap:DWATentrypcentryaddressofmoduleinitialization}{Entry address of module initialization}{entry address of module initialization}\\
&\livelinki{chap:DWATentrypcentryaddressofsubprogram}{Entry address of subprogram}{entry address of subprogram} \\
&\livelinki{chap:DWATentrypcentryaddressofinlinedsubprogram}{Entry address of inlined subprogram}{entry address of inlined subprogram}\\
-\livetarg{chap:DWATenumclass}{DW\_AT\_enum\_class}
+\DWATenumclassTARG
&\livelinki{chap:DWATenumclasstypesafeenumerationdefinition}{Type safe enumeration definition}{type safe enumeration definition}\\
-\livetarg{chap:DWATexplicit}{DW\_AT\_explicit}
+\DWATexplicitTARG
&\livelinki{chap:DWATexplicitexplicitpropertyofmemberfunction}{Explicit property of member function}{explicit property of member function}\\
-\livetarg{chap:DWATextension}{DW\_AT\_extension}
+\DWATextensionTARG
&\livelinki{chap:DWATextensionpreviousnamespaceextensionororiginalnamespace}{Previous namespace extension or original namespace}{previous namespace extension or original namespace}\\
-\livetarg{chap:DWATexternal}{DW\_AT\_external}
+\DWATexternalTARG
&\livelinki{chap:DWATexternalexternalsubroutine}{External subroutine}{external subroutine} \\
&\livelinki{chap:DWATexternalexternalvariable}{External variable}{external variable} \\
-\livetarg{chap:DWATframebase}{DW\_AT\_frame\_base}
+\DWATframebaseTARG
&\livelinki{chap:DWATframebasesubroutineframebaseaddress}{Subroutine frame base address}{subroutine frame base address} \\
-\livetarg{chap:DWATfriend}{DW\_AT\_friend}
+\DWATfriendTARG
&\livelinki{chap:DWATfriendfriendrelationship}{Friend relationship}{friend relationship} \\
-\livetarg{chap:DWAThighpc}{DW\_AT\_high\_pc}
+\DWAThighpcTARG
&\livelinki{chap:DWAThighpccontiguousrangeofcodeaddresses}{Contiguous range of code addresses}{contiguous range of code addresses} \\
-\livetarg{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}
+\DWATidentifiercaseTARG
&\livelinki{chap:DWATidentifiercaseidentifiercaserule}{Identifier case rule}{identifier case rule} \\
-\livetarg{chap:DWATimport}{DW\_AT\_import}
+\DWATimportTARG
&\livelinki{chap:DWATimportimporteddeclaration}{Imported declaration}{imported declaration} \\
&\livelinki{chap:DWATimportimportedunit}{Imported unit}{imported unit} \\
&\livelinki{chap:DWATimportnamespacealias}{Namespace alias}{namespace alias} \\
&\livelinki{chap:DWATimportnamespaceusingdeclaration}{Namespace using declaration}{namespace using declaration} \\
&\livelinki{chap:DWATimportnamespaceusingdirective}{Namespace using directive}{namespace using directive} \\
-\livetarg{chap:DWATinline}{DW\_AT\_inline}
+\DWATinlineTARG
&\livelinki{chap:DWATinlineabstracttinstance}{Abstract instance}{abstract instance} \\
&\livelinki{chap:DWATinlineinlinedsubroutine}{Inlined subroutine}{inlined subroutine} \\
-\livetarg{chap:DWATisoptional}{DW\_AT\_is\_optional}
+\DWATisoptionalTARG
&\livelinki{chap:DWATisoptionaloptionalparameter}{Optional parameter}{optional parameter} \\
-\livetarg{chap:DWATlanguage}{DW\_AT\_language}
+\DWATlanguageTARG
&\livelinki{chap:DWATlanguageprogramminglanguage}{Programming language}{programming language} \\
-\livetarg{chap:DWATlinkagename}{DW\_AT\_linkage\_name}
+\DWATlinkagenameTARG
&\livelinki{chap:DWATlinkagenameobjectfilelinkagenameofanentity}{Object file linkage name of an entity}{object file linkage name of an entity}\\
-\livetarg{chap:DWATlocation}{DW\_AT\_location}
+\DWATlocationTARG
&\livelinki{chap:DWATlocationdataobjectlocation}{Data object location}{data object location}\\
-\livetarg{chap:DWATlowpc}{DW\_AT\_low\_pc}
+\DWATlowpcTARG
&\livelinki{chap:DWATlowpccodeaddressorrangeofaddresses}{Code address or range of addresses}{code address or range of addresses}\\
-\livetarg{chap:DWATlowerbound}{DW\_AT\_lower\_bound}
+\DWATlowerboundTARG
&\livelinki{chap:DWATlowerboundlowerboundofsubrange}{Lower bound of subrange}{lower bound of subrange} \\
-\livetarg{chap:DWATmacroinfo}{DW\_AT\_macro\_info}
+\DWATmacroinfoTARG
&\livelinki{chap:DWATmacroinfomacroinformation}{Macro information} {macro information} (\texttt{\#define}, \texttt{\#undef})\\
-\livetarg{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram}
+\DWATmainsubprogramTARG
&\livelinki{chap:DWATmainsubprogrammainorstartingsubprogram}{Main or starting subprogram}{main or starting subprogram} \\
&\livelinki{chap:DWATmainsubprogramunitcontainingmainorstartingsubprogram}{Unit containing main or starting subprogram}{unit containing main or starting subprogram}\\
-\livetarg{chap:DWATmutable}{DW\_AT\_mutable}
+\DWATmutableTARG
&\livelinki{chap:DWATmutablemutablepropertyofmemberdata}{Mutable property of member data}{mutable property of member data} \\
-\livetarg{chap:DWATname}{DW\_AT\_name}
+\DWATnameTARG
&\livelinki{chap:DWATnamenameofdeclaration}{Name of declaration}{name of declaration}\\
&\livelinki{chap:DWATnamepathnameofcompilationsource}{Path name of compilation source}{path name of compilation source} \\
-\livetarg{chap:DWATnamelistitem}{DW\_AT\_namelist\_item}
+\DWATnamelistitemTARG
&\livelinki{chap:DWATnamelistitemnamelistitem}{Namelist item}{namelist item}\\
-\livetarg{chap:DWATobjectpointer}{DW\_AT\_object\_pointer}
+\DWATobjectpointerTARG
&\livelinki{chap:DWATobjectpointerobjectthisselfpointerofmemberfunction}{Object (\texttt{this}, \texttt{self}) pointer of member function}{object (\texttt{this}, \texttt{self}) pointer of member function}\\
-\livetarg{chap:DWATordering}{DW\_AT\_ordering}
+\DWATorderingTARG
&\livelinki{chap:DWATorderingarrayrowcolumnordering}{Array row/column ordering} {array row/column ordering}\\
-\livetarg{chap:DWATpicturestring}{DW\_AT\_picture\_string}
+\DWATpicturestringTARG
&\livelinki{chap:DWATpicturestringpicturestringfornumericstringtype}{Picture string for numeric string type}{picture string for numeric string type} \\
-\livetarg{chap:DWATpriority}{DW\_AT\_priority}
+\DWATpriorityTARG
&\livelinki{chap:DWATprioritymodulepriority}{Module priority}{module priority}\\
-\livetarg{chap:DWATproducer}{DW\_AT\_producer}
+\DWATproducerTARG
&\livelinki{chap:DWATproducercompileridentification}{Compiler identification}{compiler identification}\\
-\livetarg{chap:DWATprototyped}{DW\_AT\_prototyped}
+\DWATprototypedTARG
&\livelinki{chap:DWATprototypedsubroutineprototype}{Subroutine prototype}{subroutine prototype}\\
-\livetarg{chap:DWATpure}{DW\_AT\_pure}
+\DWATpureTARG
&\livelinki{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine}{pure property of a subroutine} \\
-\livetarg{chap:DWATranges}{DW\_AT\_ranges}
+\DWATrangesTARG
&\livelinki{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses}{non-contiguous range of code addresses} \\
\DWATrankTARG
&\livelinki{chap:DWATrankofdynamicarray}{Dynamic number of array dimensions}{dynamic number of array dimensions} \\
-\livetarg{chap:DWATrecursive}{DW\_AT\_recursive}
+\DWATrecursiveTARG
&\livelinki{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine}{recursive property of a subroutine} \\
-\livetarg{chap:DWATreturnaddr}{DW\_AT\_return\_addr}
+\DWATreturnaddrTARG
&\livelinki{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location}{subroutine return address save location} \\
-\livetarg{chap:DWATsegment}{DW\_AT\_segment}
+\DWATsegmentTARG
&\livelinki{chap:DWATsegmentaddressinginformation}{Addressing information}{addressing information} \\
-\livetarg{chap:DWATsibling}{DW\_AT\_sibling}
+\DWATsiblingTARG
&\livelinki{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship}{debugging information entry relationship} \\
-\livetarg{chap:DWATsmall}{DW\_AT\_small}
+\DWATsmallTARG
&\livelinki{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type}{scale factor for fixed-point type} \\
-\livetarg{chap:DWATsignature}{DW\_AT\_signature}
+\DWATsignatureTARG
&\livelinki{chap:DWATsignaturetypesignature}{Type signature}{type signature}\\
-\livetarg{chap:DWATspecification}{DW\_AT\_specification}
+\DWATspecificationTARG
&\livelinki{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{Incomplete, non-defining, or separate declaration corresponding to a declaration}{incomplete, non-defining, or separate declaration corresponding to a declaration} \\
-\livetarg{chap:DWATstartscope}{DW\_AT\_start\_scope}
+\DWATstartscopeTARG
&\livelinki{chap:DWATstartscopeobjectdeclaration}{Object declaration}{object declaration}\\
&\livelinki{chap:DWATstartscopetypedeclaration}{Type declaration}{type declaration}\\
-\livetarg{chap:DWATstaticlink}{DW\_AT\_static\_link}
+\DWATstaticlinkTARG
&\livelinki{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame}{location of uplevel frame} \\
-\livetarg{chap:DWATstmtlist}{DW\_AT\_stmt\_list}
+\DWATstmtlistTARG
&\livelinki{chap:DWATstmtlistlinenumberinformationforunit}{Line number information for unit}{line number information for unit}\\
-\livetarg{chap:DWATstringlength}{DW\_AT\_string\_length}
+\DWATstringlengthTARG
&\livelinki{chap:DWATstringlengthstringlengthofstringtype}{String length of string type}{string length of string type}
\\
-\livetarg{chap:DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size}
+\DWATstringlengthbitsizeTARG
&\livelinki{chap:DWATstringlengthstringlengthofstringtype}{Size of string length of string type}{string length of string type!size of}
\\
-\livetarg{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size}
+\DWATstringlengthbytesizeTARG
&\livelinki{chap:DWATstringlengthstringlengthofstringtype}{Size of string length of string type}{string length of string type!size of}
\\
-\livetarg{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled}
+\DWATthreadsscaledTARG
&\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}{UPC!array bound THREADS scale factor}\\
-\livetarg{chap:DWATtrampoline}{DW\_AT\_trampoline}
+\DWATtrampolineTARG
&\livelinki{chap:DWATtrampolinetargetsubroutine}{Target subroutine}{target subroutine of trampoline} \\
-\livetarg{chap:DWATtype}{DW\_AT\_type}
+\DWATtypeTARG
&\livelinki{chap:DWATtypetypeofdeclaration}{Type of declaration}{type of declaration} \\
&\livelinki{chap:DWATtypetypeofsubroutinereturn}{Type of subroutine return}{type of subroutine return} \\
-\livetarg{chap:DWATupperbound}{DW\_AT\_upper\_bound}
+\DWATupperboundTARG
&\livelinki{chap:DWATupperboundupperboundofsubrange}{Upper bound of subrange}{upper bound of subrange} \\
-\livetarg{chap:DWATuselocation}{DW\_AT\_use\_location}
+\DWATuselocationTARG
&\livelinki{chap:DWATuselocationmemberlocationforpointertomembertype}{Member location for pointer to member type}{member location for pointer to member type} \\
-\livetarg{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8}\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8}
+\DWATuseUTFeightTARG\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8}
&\livelinki{chap:DWATuseUTF8compilationunitusesutf8strings}{Compilation unit uses UTF-8 strings}{compilation unit uses UTF-8 strings} \\
-\livetarg{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}
+\DWATvariableparameterTARG
&\livelinki{chap:DWATvariableparameternonconstantparameterflag}{Non-constant parameter flag}{non-constant parameter flag} \\
-\livetarg{chap:DWATvirtuality}{DW\_AT\_virtuality}
+\DWATvirtualityTARG
&\livelinki{chap:DWATvirtualityvirtualityindication}{Virtuality indication}{virtuality indication} \\
&\livelinki{chap:DWATvirtualityvirtualityofbaseclass}{Virtuality of base class} {virtuality of base class} \\
&\livelinki{chap:DWATvirtualityvirtualityoffunction}{Virtuality of function}{virtuality of function} \\
-\livetarg{chap:DWATvisibility}{DW\_AT\_visibility}
+\DWATvisibilityTARG
&\livelinki{chap:DWATvisibilityvisibilityofdeclaration}{Visibility of declaration}{visibility of declaration} \\
-\livetarg{chap:DWATvtableelemlocation}{DW\_AT\_vtable\_elem\_location}
+\DWATvtableelemlocationTARG
&\livelinki{chap:DWATvtableelemlocationvirtualfunctiontablevtableslot}{Virtual function vtable slot}{virtual function vtable slot}\\
\end{longtable}
children of individual siblings, that producer may attach
\addtoindexx{sibling attribute}
a
-\livelink{chap:DWATsibling}{DW\_AT\_sibling} attribute
+\DWATsibling{} attribute
to any debugging information entry.
The
value of this attribute is a reference to the sibling entry
value is truncated to the element size and the low\dash order bits
are pushed on the stack.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPlit0}{DW\_OP\_lit0}, \livetarg{chap:DWOPlit1}{DW\_OP\_lit1}, \dots, \livetarg{chap:DWOPlit31}{DW\_OP\_lit31}}
+\itembfnl{\DWOPlitzeroTARG, \DWOPlitoneTARG, \dots, \DWOPlitthirtyoneTARG}
The \DWOPlitnTARG{} operations encode the unsigned literal values
from 0 through 31, inclusive.
-\itembfnl{\livetarg{chap:DWOPaddr}{DW\_OP\_addr}}
-The \livetarg{chap:DWOPaddr}{DW\_OP\_addr} operation has a single operand that encodes
+\itembfnl{\DWOPaddrTARG}
+The \DWOPaddrTARG{} operation has a single operand that encodes
a machine address and whose size is the \addtoindex{size of an address}
on the target machine.
-\itembfnl{\livetarg{chap:DWOPconst1u}{DW\_OP\_const1u}, \livetarg{chap:DWOPconst2u}{DW\_OP\_const2u}, \livetarg{chap:DWOPconst4u}{DW\_OP\_const4u}, \livetarg{chap:DWOPconst8u}{DW\_OP\_const8u}}
+\itembfnl{DWOPconstoneuTARG, \DWOPconsttwouTARG, \DWOPconstfouruTARG, \DWOPconsteightuTARG}
+\DWOPconstnxMARK\DWOPconstnxINDX{}
The single operand of a \DWOPconstnuTARG{} operation provides a 1,
2, 4, or 8\dash byte unsigned integer constant, respectively.
-\itembfnl{\livetarg{chap:DWOPconst1s}{DW\_OP\_const1s}, \livetarg{chap:DWOPconst2s}{DW\_OP\_const2s}, \livetarg{chap:DWOPconst4s}{DW\_OP\_const4s}, \livetarg{chap:DWOPconst8s}{DW\_OP\_const8s}}
+\itembfnl{\DWOPconstonesTARG, \DWOPconsttwosTARG, \DWOPconstfoursTARG, \DWOPconsteightsTARG}
The single operand of a \DWOPconstnsTARG{} operation provides a 1,
2, 4, or 8\dash byte signed integer constant, respectively.
-\itembfnl{\livetarg{chap:DWOPconstu}{DW\_OP\_constu}}
-The single operand of the \livetarg{chap:DWOPconstu}{DW\_OP\_constu} operation provides
+\itembfnl{\DWOPconstuTARG}
+The single operand of the \DWOPconstuTARG{} operation provides
an unsigned LEB128 integer constant.
-\itembfnl{\livetarg{chap:DWOPconsts}{DW\_OP\_consts}}
-The single operand of the \livetarg{chap:DWOPconsts}{DW\_OP\_consts} operation provides
+\itembfnl{\DWOPconstsTARG}
+The single operand of the \DWOPconstsTARG{} operation provides
a signed LEB128 integer constant.
\end{enumerate}
the result of adding the contents of a register to a given
signed offset.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPfbreg}{DW\_OP\_fbreg}}
-The \livetarg{chap:DWOPfbreg}{DW\_OP\_fbreg} operation provides a signed LEB128 offset
+\itembfnl{\DWOPfbregTARG}
+The \DWOPfbregTARG{} operation provides a signed LEB128 offset
from the address specified by the location description in the
-\livelink{chap:DWATframebase}{DW\_AT\_frame\_base} attribute of the current function. (This
+\DWATframebase{} attribute of the current function. (This
is typically a \doublequote{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
in the stack pointer as the PC changes.)
-\itembfnl{\livetarg{chap:DWOPbreg0}{DW\_OP\_breg0}, \livetarg{chap:DWOPbreg1}{DW\_OP\_breg1}, \dots, \livetarg{chap:DWOPbreg31}{DW\_OP\_breg31} }
+\itembfnl{\DWOPbregzeroTARG, \DWOPbregoneTARG, \dots, \DWOPbregthirtyoneTARG}
The single operand of the \DWOPbregnTARG{}
operations provides
a signed LEB128 offset from
the specified register.
-\itembfnl{\livetarg{chap:DWOPbregx}{DW\_OP\_bregx} }
-The \livetarg{chap:DWOPbregx}{DW\_OP\_bregx} operation has two operands: a register
+\itembfnl{\DWOPbregxTARG{} }
+The \DWOPbregxINDX{} operation has two operands: a register
which is specified by an unsigned LEB128 number, followed by
a signed LEB128 offset.
that index the stack assume that the top of the stack (most
recently added entry) has index 0.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPdup}{DW\_OP\_dup}}
-The \livetarg{chap:DWOPdup}{DW\_OP\_dup} operation duplicates the value at the top of the stack.
+\itembfnl{\DWOPdupTARG}
+The \DWOPdupTARG{} operation duplicates the value at the top of the stack.
-\itembfnl{\livetarg{chap:DWOPdrop}{DW\_OP\_drop}}
-The \livetarg{chap:DWOPdrop}{DW\_OP\_drop} operation pops the value at the top of the stack.
+\itembfnl{\DWOPdropTARG}
+The \DWOPdropTARG{} operation pops the value at the top of the stack.
-\itembfnl{\livetarg{chap:DWOPpick}{DW\_OP\_pick}}
-The single operand of the \livetarg{chap:DWOPpick}{DW\_OP\_pick} operation provides a
+\itembfnl{\DWOPpickTARG}
+The single operand of the \DWOPpickTARG{} operation provides a
1\dash byte index. A copy of the stack entry with the specified
index (0 through 255, inclusive) is pushed onto the stack.
-\itembfnl{\livetarg{chap:DWOPover}{DW\_OP\_over}}
-The \livetarg{chap:DWOPover}{DW\_OP\_over} operation duplicates the entry currently second
+\itembfnl{\DWOPoverTARG}
+The \DWOPoverTARG{} operation duplicates the entry currently second
in the stack at the top of the stack.
This is equivalent to
-a \livelink{chap:DWOPpick}{DW\_OP\_pick} operation, with index 1.
+a \DWOPpick{} operation, with index 1.
-\itembfnl{\livetarg{chap:DWOPswap}{DW\_OP\_swap}}
-The \livetarg{chap:DWOPswap}{DW\_OP\_swap} operation swaps the top two stack entries.
+\itembfnl{\DWOPswapTARG}
+The \DWOPswapTARG{} operation swaps the top two stack entries.
The entry at the top of the
stack becomes the second stack entry,
and the second entry becomes the top of the stack.
-\itembfnl{\livetarg{chap:DWOProt}{DW\_OP\_rot}}
-The \livetarg{chap:DWOProt}{DW\_OP\_rot} operation rotates the first three stack
+\itembfnl{\DWOProtTARG}
+The \DWOProtTARG{} operation rotates the first three stack
entries. The entry at the top of the stack becomes the third
stack entry, the second entry becomes the top of the stack,
and the third entry becomes the second entry.
-\itembfnl{\livetarg{chap:DWOPderef}{DW\_OP\_deref}}
-The \livetarg{chap:DWOPderef}{DW\_OP\_deref}
+\itembfnl{\DWOPderefTARG}
+The \DWOPderefTARG{}
operation pops the top stack entry and
treats it as an address. The value
retrieved from that address is pushed.
\addtoindexi{dereferenced}{address!dereference operator}
address is the \addtoindex{size of an address} on the target machine.
-\itembfnl{\livetarg{chap:DWOPderefsize}{DW\_OP\_deref\_size}}
-The \livetarg{chap:DWOPderefsize}{DW\_OP\_deref\_size} operation behaves like the
-\livelink{chap:DWOPderef}{DW\_OP\_deref}
+\itembfnl{\DWOPderefsizeTARG}
+The \DWOPderefsizeTARG{} operation behaves like the
+\DWOPderef{}
operation: it pops the top stack entry and treats it as an
address. The value retrieved from that address is pushed. In
-the \addtoindex{DW\_OP\_deref\_size} operation, however, the size in bytes
+the \DWOPderefsizeINDX{} operation, however, the size in bytes
of the data retrieved from the dereferenced address is
specified by the single operand. This operand is a 1\dash byte
unsigned integral constant whose value may not be larger
target machine before being pushed onto the expression stack.
\needlines{7}
-\itembfnl{\livetarg{chap:DWOPxderef}{DW\_OP\_xderef}}
-The \livetarg{chap:DWOPxderef}{DW\_OP\_xderef} operation provides an extended dereference
+\itembfnl{\DWOPxderefTARG}
+The \DWOPxderefTARG{} operation provides an extended dereference
mechanism. The entry at the top of the stack is treated as an
address. The second stack entry is treated as an \doublequote{address
space identifier} for those architectures that support
address is the
\addtoindex{size of an address} on the target machine.
-\itembfnl{\livetarg{chap:DWOPxderefsize}{DW\_OP\_xderef\_size}}
-The \livetarg{chap:DWOPxderefsize}{DW\_OP\_xderef\_size} operation behaves like the
-\livelink{chap:DWOPxderef}{DW\_OP\_xderef} operation. The entry at the top of the stack is
+\itembfnl{\DWOPxderefsizeTARG}
+The \DWOPxderefsizeTARG{} operation behaves like the
+\DWOPxderef{} operation. The entry at the top of the stack is
treated as an address. The second stack entry is treated as
an \doublequote{address space identifier} for those architectures
that support
address spaces. The top two stack
elements are popped, and a data item is retrieved through an
implementation\dash defined address calculation and pushed as the
-new stack top. In the \addtoindex{DW\_OP\_xderef\_size} operation, however,
+new stack top. In the \DWOPxderefsizeINDX{} operation, however,
the size in bytes of the data retrieved from the
\addtoindexi{dereferenced}{address!dereference operator}
address is specified by the single operand. This operand is a
retrieved is zero extended to the \addtoindex{size of an address} on the
target machine before being pushed onto the expression stack.
-\itembfnl{\livetarg{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}}
-The \livetarg{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
+\itembfnl{\DWOPpushobjectaddressTARG}
+The \DWOPpushobjectaddressTARG{}
operation pushes the address
of the object currently being evaluated as part of evaluation
of a user presented expression. This object may correspond
to the implicit push of the base
\addtoindexi{address}{address!implicit push of base}
of a structure prior to evaluation of a
-\livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location}
+\DWATdatamemberlocation{}
to access a data member of a structure. For an example, see
Appendix \refersec{app:aggregateexamples}.}
\needlines{4}
-\itembfnl{\livetarg{chap:DWOPformtlsaddress}{DW\_OP\_form\_tls\_address}}
-The \livetarg{chap:DWOPformtlsaddress}{DW\_OP\_form\_tls\_address}
+\itembfnl{\DWOPformtlsaddressTARG}
+The \DWOPformtlsaddressTARG{}
operation pops a value from the stack, translates this
value into an address in the
\addtoindexx{thread-local storage}
the DWARF expressions, the \DWOPformtlsaddress{} allows the consumer
to perform the computation based on the run-time environment.}
-\itembfnl{\livetarg{chap:DWOPcallframecfa}{DW\_OP\_call\_frame\_cfa}}
-The \livetarg{chap:DWOPcallframecfa}{DW\_OP\_call\_frame\_cfa}
+\itembfnl{\DWOPcallframecfaTARG}
+The \DWOPcallframecfaTARG{}
operation pushes the value of the
CFA, obtained from the Call Frame Information
(see Section \refersec{chap:callframeinformation}).
-\textit{Although the value of \addtoindex{DW\_AT\_frame\_base}
+\textit{Although the value of \DWATframebase{}
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
\needlines{4}
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPabs}{DW\_OP\_abs}}
-The \livetarg{chap:DWOPabs}{DW\_OP\_abs} operation pops the top stack entry, interprets
+\itembfnl{\DWOPabsTARG}
+The \DWOPabsTARG{} operation pops the top stack entry, interprets
it as a signed value and pushes its absolute value. If the
absolute value cannot be represented, the result is undefined.
\needlines{4}
-\itembfnl{\livetarg{chap:DWOPand}{DW\_OP\_and}}
-The \livetarg{chap:DWOPand}{DW\_OP\_and} operation pops the top two stack values, performs
+\itembfnl{\DWOPandTARG}
+The \DWOPandTARG{} operation pops the top two stack values, performs
a bitwise and operation on the two, and pushes the result.
-\itembfnl{\livetarg{chap:DWOPdiv}{DW\_OP\_div}}
-The \livetarg{chap:DWOPdiv}{DW\_OP\_div} operation pops the top two stack values, divides the former second entry by
+\itembfnl{\DWOPdivTARG}
+The \DWOPdivTARG{} operation pops the top two stack values, divides the former second entry by
the former top of the stack using signed division, and pushes the result.
-\itembfnl{\livetarg{chap:DWOPminus}{DW\_OP\_minus}}
-The \livetarg{chap:DWOPminus}{DW\_OP\_minus} operation pops the top two stack values, subtracts the former top of the
+\itembfnl{\DWOPminusTARG}
+The \DWOPminusTARG{} operation pops the top two stack values, subtracts the former top of the
stack from the former second entry, and pushes the result.
-\itembfnl{\livetarg{chap:DWOPmod}{DW\_OP\_mod}}
-The \livetarg{chap:DWOPmod}{DW\_OP\_mod} operation pops the top two stack values and pushes the result of the
+\itembfnl{\DWOPmodTARG}
+The \DWOPmodTARG{} operation pops the top two stack values and pushes the result of the
calculation: former second stack entry modulo the former top of the stack.
-\itembfnl{\livetarg{chap:DWOPmul}{DW\_OP\_mul}}
-The \livetarg{chap:DWOPmul}{DW\_OP\_mul} operation pops the top two stack entries, multiplies them together, and
+\itembfnl{\DWOPmulTARG}
+The \DWOPmulTARG{} operation pops the top two stack entries, multiplies them together, and
pushes the result.
-\itembfnl{\livetarg{chap:DWOPneg}{DW\_OP\_neg}}
-The \livetarg{chap:DWOPneg}{DW\_OP\_neg} operation pops the top stack entry, interprets
+\itembfnl{\DWOPnegTARG}
+The \DWOPnegTARG{} operation pops the top stack entry, interprets
it as a signed value and pushes its negation. If the negation
cannot be represented, the result is undefined.
-\itembfnl{\livetarg{chap:DWOPnot}{DW\_OP\_not}}
-The \livetarg{chap:DWOPnot}{DW\_OP\_not} operation pops the top stack entry, and pushes
+\itembfnl{\DWOPnotTARG}
+The \DWOPnotTARG{} operation pops the top stack entry, and pushes
its bitwise complement.
-\itembfnl{\livetarg{chap:DWOPor}{DW\_OP\_or}}
-The \livetarg{chap:DWOPor}{DW\_OP\_or} operation pops the top two stack entries, performs
+\itembfnl{\DWOPorTARG}
+The \DWOPorTARG{} operation pops the top two stack entries, performs
a bitwise or operation on the two, and pushes the result.
-\itembfnl{\livetarg{chap:DWOPplus}{DW\_OP\_plus}}
-The \livetarg{chap:DWOPplus}{DW\_OP\_plus} operation pops the top two stack entries,
+\itembfnl{\DWOPplusTARG}
+The \DWOPplusTARG{} operation pops the top two stack entries,
adds them together, and pushes the result.
-\itembfnl{\livetarg{chap:DWOPplusuconst}{DW\_OP\_plus\_uconst}}
-The \livetarg{chap:DWOPplusuconst}{DW\_OP\_plus\_uconst} operation pops the top stack entry,
+\itembfnl{\DWOPplusuconstTARG}
+The \DWOPplusuconstTARG{} operation pops the top stack entry,
adds it to the unsigned LEB128 constant operand and pushes
the result.
\doublequote{\DWOPlitn~\DWOPplus.}}
\needlines{3}
-\itembfnl{\livetarg{chap:DWOPshl}{DW\_OP\_shl}}
-The \livetarg{chap:DWOPshl}{DW\_OP\_shl} operation pops the top two stack entries,
+\itembfnl{\DWOPshlTARG}
+The \DWOPshlTARG{} operation pops the top two stack entries,
shifts the former second entry left (filling with zero bits)
by the number of bits specified by the former top of the stack,
and pushes the result.
-\itembfnl{\livetarg{chap:DWOPshr}{DW\_OP\_shr}}
-The \livetarg{chap:DWOPshr}{DW\_OP\_shr} operation pops the top two stack entries,
+\itembfnl{\DWOPshrTARG}
+The \DWOPshrTARG{} operation pops the top two stack entries,
shifts the former second entry right logically (filling with
zero bits) by the number of bits specified by the former top
of the stack, and pushes the result.
\needlines{6}
-\itembfnl{\livetarg{chap:DWOPshra}{DW\_OP\_shra}}
-The \livetarg{chap:DWOPshra}{DW\_OP\_shra} operation pops the top two stack entries,
+\itembfnl{\DWOPshraTARG}
+The \DWOPshraTARG{} operation pops the top two stack entries,
shifts the former second entry right arithmetically (divide
the magnitude by 2, keep the same sign for the result) by
the number of bits specified by the former top of the stack,
and pushes the result.
-\itembfnl{\livetarg{chap:DWOPxor}{DW\_OP\_xor}}
-The \livetarg{chap:DWOPxor}{DW\_OP\_xor} operation pops the top two stack entries,
+\itembfnl{\DWOPxorTARG}
+The \DWOPxorTARG{} operation pops the top two stack entries,
performs a bitwise exclusive\dash or operation on the two, and
pushes the result.
\addtoindexx{DWARF expression!control flow operations}
following operations provide simple control of the flow of a DWARF expression.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPle}{DW\_OP\_le}, \livetarg{chap:DWOPge}{DW\_OP\_ge}, \livetarg{chap:DWOPeq}{DW\_OP\_eq}, \livetarg{chap:DWOPlt}{DW\_OP\_lt}, \livetarg{chap:DWOPgt}{DW\_OP\_gt}, \livetarg{chap:DWOPne}{DW\_OP\_ne}}
+\itembfnl{\DWOPleTARG, \DWOPgeTARG, \DWOPeqTARG, \DWOPltTARG, \DWOPgtTARG, \DWOPneTARG}
The six relational operators each:
\begin{itemize}
\item pop the top two stack values,
\end{itemize}
Comparisons are performed as signed operations. The six
-operators are \addtoindex{DW\_OP\_le} (less than or equal to), \addtoindex{DW\_OP\_ge}
-(greater than or equal to), \addtoindex{DW\_OP\_eq} (equal to), \addtoindex{DW\_OP\_lt} (less
-than), \addtoindex{DW\_OP\_gt} (greater than) and \addtoindex{DW\_OP\_ne} (not equal to).
+operators are \DWOPleINDX{} (less than or equal to), \DWOPgeINDX{}
+(greater than or equal to), \DWOPeqINDX{} (equal to), \DWOPltINDX{} (less
+than), \DWOPgtINDX{} (greater than) and \DWOPneINDX{} (not equal to).
\needlines{6}
-\itembfnl{\livetarg{chap:DWOPskip}{DW\_OP\_skip}}
-\livetarg{chap:DWOPskip}{DW\_OP\_skip} is an unconditional branch. Its single operand
+\itembfnl{\DWOPskipTARG}
+\DWOPskipTARG{} is an unconditional branch. Its single operand
is a 2\dash byte signed integer constant. The 2\dash byte constant is
the number of bytes of the DWARF expression to skip forward
or backward from the current operation, beginning after the
2\dash byte constant.
-\itembfnl{\livetarg{chap:DWOPbra}{DW\_OP\_bra}}
-\livetarg{chap:DWOPbra}{DW\_OP\_bra} is a conditional branch. Its single operand is a
+\itembfnl{\DWOPbraTARG}
+\DWOPbraTARG{} is a conditional branch. Its single operand is a
2\dash byte signed integer constant. This operation pops the
top of stack. If the value popped is not the constant 0,
the 2\dash byte constant operand is the number of bytes of the
% The following item does not correctly hyphenate leading
% to an overfull hbox and a visible artifact.
% So we use \- to suggest hyphenation in this rare situation.
-\itembfnl{\livetarg{chap:DWOPcall2}{DW\_OP\_call2}, \livetarg{chap:DWOPcall4}{DW\_OP\_call4}, \livetarg{chap:DWOPcallref}{DW\_OP\_call\_ref}}
-\addtoindex{DW\_OP\_call2},
-\addtoindex{DW\_OP\_call4},
-and \addtoindex{DW\_OP\_call\_ref} perform
+\itembfnl{\DWOPcalltwoTARG, \DWOPcallfour, \DWOPcallrefTARG}
+\DWOPcalltwoINDX,
+\DWOPcallfourINDX,
+and \DWOPcallrefINDX{} perform
subroutine calls during evaluation of a DWARF expression or
location description.
-For \addtoindex{DW\_OP\_call2} and \addtoindex{DW\_OP\_call4},
+For \DWOPcalltwoINDX{} and \DWOPcallfour{},
the operand is the 2\dash~ or 4\dash byte unsigned offset, respectively,
of a debugging information entry in the current compilation
-unit. The \addtoindex{DW\_OP\_call\_ref} operator has a single operand. In the
+unit. The \DWOPcallref{} operator has a single operand. In the
\thirtytwobitdwarfformat,
the operand is a 4\dash byte unsigned value;
in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
must be performed by the consumer.
\textit{Operand interpretation of
-\addtoindex{DW\_OP\_call2}, \addtoindex{DW\_OP\_call4} and \addtoindex{DW\_OP\_call\_ref} is exactly like
-that for \livelink{chap:DWFORMref2}{DW\_FORM\_ref2}, \livelink{chap:DWFORMref4}{DW\_FORM\_ref4} and \livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr},
+\DWOPcalltwo, \DWOPcallfour{} and \DWOPcallref{} is exactly like
+that for \DWFORMreftwo, \DWFORMreffour{} and \DWFORMrefaddr,
respectively
(see Section \refersec{datarep:attributeencodings}).
}
control of DWARF expression evaluation to
\addtoindexx{location attribute}
the
-\livelink{chap:DWATlocation}{DW\_AT\_location}
+\DWATlocation{}
attribute of the referenced debugging information entry. If
there is no such attribute, then there is no effect. Execution
of the DWARF expression of
\addtoindexx{location attribute}
a
-\livelink{chap:DWATlocation}{DW\_AT\_location} attribute may add
+\DWATlocation{} 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
\addtoindexx{DWARF expression!special operations}
is one special operation currently defined:
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPnop}{DW\_OP\_nop}}
-The \livetarg{chap:DWOPnop}{DW\_OP\_nop} operation is a place holder. It has no effect
+\itembfnl{\DWOPnopTARG}
+The \DWOPnopTARG{} operation is a place holder. It has no effect
on the location stack or any of its values.
\end{enumerate}
\hline
\endhead
\endfoot
-0& 17& \livelink{chap:DWOPdup}{DW\_OP\_dup} &0 &17 \\
+0& 17& \DWOPdup{} &0 &17 \\
1& 29& & 1 & 17 \\
2& 1000 & & 2 & 29\\
& & & 3&1000\\
& & & & \\
-0 & 17 & \livelink{chap:DWOPdrop}{DW\_OP\_drop} & 0 & 29 \\
+0 & 17 & \DWOPdrop{} & 0 & 29 \\
1 &29 & & 1 & 1000 \\
2 &1000& & & \\
& & & & \\
-0 & 17 & \livelink{chap:DWOPpick}{DW\_OP\_pick}, 2 & 0 & 1000 \\
+0 & 17 & \DWOPpick, 2 & 0 & 1000 \\
1 & 29 & & 1&17 \\
2 &1000& &2&29 \\
& & &3&1000 \\
& & & & \\
-0&17& \livelink{chap:DWOPover}{DW\_OP\_over}&0&29 \\
+0&17& \DWOPover&0&29 \\
1&29& & 1&17 \\
2&1000 & & 2&29\\
& & & 3&1000 \\
& & & & \\
-0&17& \livelink{chap:DWOPswap}{DW\_OP\_swap} &0&29 \\
+0&17& \DWOPswap{} &0&29 \\
1&29& & 1&17 \\
2&1000 & & 2&1000 \\
& & & & \\
-0&17&\livelink{chap:DWOProt}{DW\_OP\_rot} & 0 &29 \\
+0&17&\DWOProt{} & 0 &29 \\
1&29 & & 1 & 1000 \\
2& 1000 & & 2 & 17 \\
\end{longtable}
by the ABI authoring committee for each architecture.
}
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPreg0}{DW\_OP\_reg0}, \livetarg{chap:DWOPreg1}{DW\_OP\_reg1}, ..., \livetarg{chap:DWOPreg31}{DW\_OP\_reg31}}
+\itembfnl{\DWOPregzeroTARG, \DWOPregoneTARG, ..., \DWOPregthirtyoneTARG}
The \DWOPregnTARG{} operations encode the names of up to 32
registers, numbered from 0 through 31, inclusive. The object
addressed is in register \textit{n}.
\needlines{4}
-\itembfnl{\livetarg{chap:DWOPregx}{DW\_OP\_regx}}
-The \livetarg{chap:DWOPregx}{DW\_OP\_regx} operation has a single unsigned LEB128 literal
+\itembfnl{\DWOPregxTARG}
+The \DWOPregxTARG{} operation has a single unsigned LEB128 literal
operand that encodes the name of a register.
\end{enumerate}
\textit{These operations name a register location. To
fetch the contents of a register, it is necessary to use
one of the register based addressing operations, such as
-\livelink{chap:DWOPbregx}{DW\_OP\_bregx}
+\DWOPbregx{}
(Section \refersec{chap:registerbasedaddressing})}.
\subsubsubsection{Implicit Location Descriptions}
that has no location in the program but is a known constant
or is computed from other locations and values in the program.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPimplicitvalue}{DW\_OP\_implicit\_value}}
-The \livetarg{chap:DWOPimplicitvalue}{DW\_OP\_implicit\_value}
+\itembfnl{\DWOPimplicitvalueTARG}
+The \DWOPimplicitvalueTARG{}
operation specifies an immediate value
using two operands: an unsigned LEB128 length, followed by
%FIXME: should this block be a reference? To what?
of the target machine. The length operand gives the length
in bytes of the \nolink{block}.
-\itembfnl{\livetarg{chap:DWOPstackvalue}{DW\_OP\_stack\_value}}
-The \livetarg{chap:DWOPstackvalue}{DW\_OP\_stack\_value}
+\itembfnl{\DWOPstackvalueTARG}
+The \DWOPstackvalueTARG{}
operation specifies that the object
does not exist in memory but its value is nonetheless known
and is at the top of the DWARF expression stack. In this form
of location description, the DWARF expression represents the
actual value of the object, rather than its location. The
-\addtoindex{DW\_OP\_stack\_value} operation terminates the expression.
+\DWOPstackvalueINDX{} operation terminates the expression.
\end{enumerate}
location description which describes the location where part
of the resultant value is contained.
\begin{enumerate}[1. ]
-\itembfnl{\livetarg{chap:DWOPpiece}{DW\_OP\_piece}}
-The \livetarg{chap:DWOPpiece}{DW\_OP\_piece} operation takes a
+\itembfnl{\DWOPpieceTARG}
+The \DWOPpieceTARG{} operation takes a
single operand, which is an
unsigned LEB128 number. The number describes the size in bytes
of the piece of the object referenced by the preceding simple
\textit{Many compilers store a single variable in sets of registers,
or store a variable partially in memory and partially in
-registers. \addtoindex{DW\_OP\_piece} provides a way of describing how large
+registers. \DWOPpieceINDX{} provides a way of describing how large
a part of a variable a particular DWARF location description
refers to. }
-\itembfnl{\livetarg{chap:DWOPbitpiece}{DW\_OP\_bit\_piece}}
-The \livetarg{chap:DWOPbitpiece}{DW\_OP\_bit\_piece}
+\itembfnl{\DWOPbitpieceTARG}
+The \DWOPbitpieceTARG{}
operation takes two operands. The first
is an unsigned LEB128 number that gives the size in bits
of the piece. The second is an unsigned LEB128 number that
Interpretation of the
offset depends on the kind of location description. If the
location description is empty, the offset doesn\textquoteright t matter and
-the \addtoindex{DW\_OP\_bit\_piece} operation describes a piece consisting
+the \DWOPbitpieceINDX{} operation describes a piece consisting
of the given number of bits whose values are undefined. If
the location is a register, the offset is from the least
significant bit end of the register. If the location is a
-memory address, the \addtoindex{DW\_OP\_bit\_piece} operation describes a
+memory address, the \DWOPbitpieceINDX{} operation describes a
sequence of bits relative to the location whose address is
on the top of the DWARF stack using the bit numbering and
direction conventions that are appropriate to the current
language on the target system. If the location is any implicit
-value or stack value, the \addtoindex{DW\_OP\_bit\_piece} operation describes
+value or stack value, the \DWOPbitpieceINDX{} operation describes
a sequence of bits using the least significant bits of that
value.
\end{enumerate}
-\textit{\addtoindex{DW\_OP\_bit\_piece} is
-used instead of \addtoindex{DW\_OP\_piece} when
+\textit{\DWOPbitpieceINDX{} is
+used instead of \DWOPpieceINDX{} when
the piece to be assembled into a value or assigned to is not
byte-sized or is not at the start of a register or addressable
unit of memory.}
\descriptionitemnl{\DWOPregthree}
The value is in register 3.
-\descriptionitemnl{\livelink{chap:DWOPregx}{DW\_OP\_regx} 54}
+\descriptionitemnl{\DWOPregx{} 54}
The value is in register 54.
-\descriptionitemnl{\livelink{chap:DWOPaddr}{DW\_OP\_addr} 0x80d0045c}
+\descriptionitemnl{\DWOPaddr{} 0x80d0045c}
The value of a static variable is at machine address 0x80d0045c.
\descriptionitemnl{\DWOPbregeleven{} 44}
Add 44 to the value in register 11 to get the address of an automatic
variable instance.
-\descriptionitemnl{\livelink{chap:DWOPfbreg}{DW\_OP\_fbreg} -50}
-Given a \livelink{chap:DWATframebase}{DW\_AT\_frame\_base} value of
-\doublequote{\livelink{chap:DWOPbreg31}{DW\_OP\_breg31} 64,} this example
+\descriptionitemnl{\DWOPfbreg{} -50}
+Given a \DWATframebase{} value of
+\doublequote{\DWOPbregthirtyone{} 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).
-\descriptionitemnl{\livelink{chap:DWOPbregx}{DW\_OP\_bregx} 54 32 \livelink{chap:DWOPderef}{DW\_OP\_deref}}
+\descriptionitemnl{\DWOPbregx{} 54 32 \DWOPderef}
A call-by-reference parameter whose address is in the word 32 bytes
from where register 54 points.
-\descriptionitemnl{\livelink{chap:DWOPplusuconst}{DW\_OP\_plus\_uconst} 4}
+\descriptionitemnl{\DWOPplusuconst{} 4}
A structure member is four bytes from the start of the structure
instance. The base address is assumed to be already on the stack.
-\descriptionitemnl{\DWOPregthree{} \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4 \DWOPregten{} \livelink{chap:DWOPpiece}{DW\_OP\_piece} 2}
+\descriptionitemnl{\DWOPregthree{} \DWOPpiece{} 4 \DWOPregten{} \DWOPpiece{} 2}
A variable whose first four bytes reside in register 3 and whose next
two bytes reside in register 10.
-\descriptionitemnl{\livelink{chap:DWOPreg0}{DW\_OP\_reg0} \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4 \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4 \livelink{chap:DWOPfbreg}{DW\_OP\_fbreg} -12 \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4}
+\descriptionitemnl{\DWOPregzero{} \DWOPpiece{} 4 \DWOPpiece{} 4 \DWOPfbreg{} -12 \DWOPpiece{} 4}
A twelve byte value whose first four bytes reside in register zero,
whose middle four bytes are unavailable (perhaps due to optimization),
and whose last four bytes are in memory, 12 bytes before the frame
base.
-\descriptionitemnl{\DWOPbregone{} 0 \DWOPbregtwo{} 0 \livelink{chap:DWOPplus}{DW\_OP\_plus} \livelink{chap:DWOPstackvalue}{DW\_OP\_stack\_value} }
+\descriptionitemnl{\DWOPbregone{} 0 \DWOPbregtwo{} 0 \DWOPplus{} \DWOPstackvalue{} }
Add the contents of r1 and r2 to compute a value. This value is the
\doublequote{contents} of an otherwise anonymous location.
\needlines{6}
-\descriptionitemnl{\livelink{chap:DWOPlit1}{DW\_OP\_lit1} \livelink{chap:DWOPstackvalue}{DW\_OP\_stack\_value} \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4 }
+\descriptionitemnl{\DWOPlitone{} \DWOPstackvalue{} \DWOPpiece{} 4 }
\vspace{-0.1\parsep}
-\descriptionitemnl{\DWOPbregthree 0 \DWOPbregfour 0 \livelink{chap:DWOPplus}{DW\_OP\_plus} \livelink{chap:DWOPstackvalue}{DW\_OP\_stack\_value} \livelink{chap:DWOPpiece}{DW\_OP\_piece} 4}
+\descriptionitemnl{\DWOPbregthree 0 \DWOPbregfour 0 \DWOPplus{} \DWOPstackvalue{} \DWOPpiece{} 4}
The object value is found in an anonymous (virtual) location whose
value consists of two parts, given in memory address order: the 4 byte
value 1 followed by the four byte value computed from the sum of the
debugging information entry describing a declaration that
has a type has
\addtoindexx{type attribute}
-a \livelink{chap:DWATtype}{DW\_AT\_type} attribute, whose value is a
+a \DWATtype{} 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
volatile, which in turn will reference another entry describing
a type or type modifier (using
\addtoindexx{type attribute}
-a \livelink{chap:DWATtype}{DW\_AT\_type} attribute of its
+a \DWATtype{} attribute of its
own). See
Section \refersec{chap:typeentries}
for descriptions of the entries describing
The accessibility of a declaration is
\hypertarget{chap:DWATaccessibilitycandadadeclarations}
represented by a
-\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}
+\DWATaccessibility{}
attribute, whose
\addtoindexx{accessibility attribute}
value is a constant drawn from the set of codes listed in Table
\refersec{tab:accessibilitycodes}.
\begin{simplenametable}[1.9in]{Accessibility codes}{tab:accessibilitycodes}
-\livetarg{chap:DWACCESSpublic}{DW\_ACCESS\_public} \\
-\livetarg{chap:DWACCESSprivate}{DW\_ACCESS\_private} \\
-\livetarg{chap:DWACCESSprotected}{DW\_ACCESS\_protected} \\
+\DWACCESSpublicTARG{} \\
+\DWACCESSprivateTARG{} \\
+\DWACCESSprotectedTARG{} \\
\end{simplenametable}
\section{Visibility of Declarations}
The
\hypertarget{chap:DWATvisibilityvisibilityofdeclaration}
visibility of a declaration is represented
-by a \livelink{chap:DWATvisibility}{DW\_AT\_visibility}
+by a \DWATvisibility{}
attribute\addtoindexx{visibility attribute}, whose value is a
constant drawn from the set of codes listed in
Table \refersec{tab:visibilitycodes}.
\begin{simplenametable}[1.5in]{Visibility codes}{tab:visibilitycodes}
-\livetarg{chap:DWVISlocal}{DW\_VIS\_local} \\
-\livetarg{chap:DWVISexported}{DW\_VIS\_exported} \\
-\livetarg{chap:DWVISqualified}{DW\_VIS\_qualified} \\
+\DWVISlocalTARG{} \\
+\DWVISexportedTARG{} \\
+\DWVISqualifiedTARG{} \\
\end{simplenametable}
\section{Virtuality of Declarations}
The
\hypertarget{chap:DWATvirtualityvirtualityindication}
virtuality of a declaration is represented by a
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality}
+\DWATvirtuality{}
attribute\addtoindexx{virtuality attribute}, whose value is a constant drawn
from the set of codes listed in
Table \refersec{tab:virtualitycodes}.
\begin{simplenametable}[2.4in]{Virtuality codes}{tab:virtualitycodes}
-\livetarg{chap:DWVIRTUALITYnone}{DW\_VIRTUALITY\_none} \\
-\livetarg{chap:DWVIRTUALITYvirtual}{DW\_VIRTUALITY\_virtual} \\
-\livetarg{chap:DWVIRTUALITYpurevirtual}{DW\_VIRTUALITY\_pure\_virtual} \\
+\DWVIRTUALITYnoneTARG{} \\
+\DWVIRTUALITYvirtualTARG{} \\
+\DWVIRTUALITYpurevirtualTARG{} \\
\end{simplenametable}
\section{Artificial Entries}
a compiler and not explicitly declared by the source program
\hypertarget{chap:DWATartificialobjectsortypesthat}
may have a
-\livelink{chap:DWATartificial}{DW\_AT\_artificial} attribute,
+\DWATartificial{} attribute,
which is a \livelink{chap:classflag}{flag}.
\section{Segmented Addresses}
\hypertarget{chap:DWATsegmentaddressinginformation}
of the location of an object or subroutine may have
a
-\livelink{chap:DWATsegment}{DW\_AT\_segment} attribute,
+\DWATsegment{} attribute,
\addtoindexx{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
-\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,
+\DWATsegment{} attribute has a
+\DWATlowpc,
+\DWAThighpc,
+\DWATranges{} or
+\DWATentrypc{} attribute,
\addtoindexx{entry pc attribute}
or
a location
values represent the offset portion of the address within
the segment specified
\addtoindexx{segment attribute}
-by \livelink{chap:DWATsegment}{DW\_AT\_segment}.
+by \DWATsegment.
If an entry has no
-\livelink{chap:DWATsegment}{DW\_AT\_segment} attribute, it inherits
+\DWATsegment{} attribute, it inherits
\addtoindexx{segment attribute}
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
-\livelink{chap:DWATsegment}{DW\_AT\_segment} attributes,
+\DWATsegment{} attributes,
then the entry is assumed to exist within a flat
address space.
Similarly, if the entry has a
-\livelink{chap:DWATsegment}{DW\_AT\_segment} attribute
+\DWATsegment{} attribute
\addtoindexx{segment attribute}
containing an empty location description, that
entry is assumed to exist within a
Any debugging information entry representing a pointer or
reference type or a subroutine or subroutine type may
have a
-\livelink{chap:DWATaddressclass}{DW\_AT\_address\_class}
+\DWATaddressclass{}
attribute, whose value is an integer
constant. The set of permissible values is specific to
-each target architecture. The value \livetarg{chap:DWADDRnone}{DW\_ADDR\_none},
+each target architecture. The value \DWADDRnoneTARG,
however,
is common to all encodings, and means that no address class
has been specified.
of a program entity has
\addtoindexx{declaration attribute}
a
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}
+\DWATdeclaration{}
attribute, which is a
\livelink{chap:classflag}{flag}.
\hypertarget{chap:DWATspecificationincompletenondefiningorseparatedeclaration}
declaration that completes another (earlier)
non\dash defining declaration may have a
-\livelink{chap:DWATspecification}{DW\_AT\_specification}
+\DWATspecification{}
attribute whose value is a \livelink{chap:classreference}{reference} to
the debugging information entry representing the non-defining declaration. A debugging
information entry with a
-\livelink{chap:DWATspecification}{DW\_AT\_specification}
+\DWATspecification{}
attribute does not need to duplicate information
provided by the debugging information entry referenced by that specification attribute.
It is not the case that all attributes of the debugging information entry referenced by a
-\livelink{chap:DWATspecification}{DW\_AT\_specification} attribute
+\DWATspecification{} attribute
apply to the referring debugging information entry.
\textit{For
\addtoindexx{declaration attribute}
example,
-\livelink{chap:DWATsibling}{DW\_AT\_sibling} and
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}
+\DWATsibling{} and
+\DWATdeclaration{}
\addtoindexx{declaration attribute}
clearly cannot apply to a
\addtoindexx{declaration attribute}
may
\addtoindex{declaration line attribute}
have
-\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file},
-\livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} and
-\livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}
+\DWATdeclfile,
+\DWATdeclline{} and
+\DWATdeclcolumn{}
attributes each of whose value is an unsigned
\livelink{chap:classconstant}{integer constant}.
The value of
\addtoindexx{declaration file attribute}
the
-\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}
+\DWATdeclfile{}
attribute
\addtoindexx{file containing declaration}
corresponds to
The value of
\addtoindexx{declaration line attribute}
-the \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} attribute represents
+the \DWATdeclline{} 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
\addtoindexx{declaration column attribute}
-the \livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column} attribute represents
+the \DWATdeclcolumn{} 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.
\addtoindexx{names!identifier}
a program entity
that has been given a name may have a
-\livelink{chap:DWATname}{DW\_AT\_name} attribute,
+\DWATname{} attribute,
whose
\addtoindexx{name attribute}
value is a \livelink{chap:classstring}{string}
\addtoindex{mangled names}
(as do many implementations of C++) should use the unmangled
form of the name in the
-DWARF \livelink{chap:DWATname}{DW\_AT\_name} attribute,
+DWARF \DWATname{} attribute,
\addtoindexx{name attribute}
including the keyword operator (in names such as \doublequote{operator +}),
if present. See also
Section \refersec{chap:linkagenames} regarding the use
-of \livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} for
+of \DWATlinkagename{} for
\addtoindex{mangled names}
mangled names.
Sequences of
may have
\addtoindexx{location attribute}
a
-\livelink{chap:DWATlocation}{DW\_AT\_location} attribute,
+\DWATlocation{} attribute,
\addtoindexx{location attribute}
whose value is a location description
(see Section \refersec{chap:locationdescriptions}).
kind of debugging information entry that has
\addtoindexx{location attribute}
a
-\livelink{chap:DWATlocation}{DW\_AT\_location}
+\DWATlocation{}
attribute.
\addtoindexx{location attribute}
If a suitable entry is not otherwise available,
a DWARF procedure can be represented using a debugging
\addtoindexx{DWARF procedure entry}
information entry with the
-tag \livetarg{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}
+tag \DWTAGdwarfprocedureTARG{}
together with
\addtoindexx{location attribute}
-a \livelink{chap:DWATlocation}{DW\_AT\_location} attribute.
+a \DWATlocation{} attribute.
A DWARF procedure
-is called by a \livelink{chap:DWOPcall2}{DW\_OP\_call2},
-\livelink{chap:DWOPcall4}{DW\_OP\_call4} or
-\livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}
+is called by a \DWOPcalltwo,
+\DWOPcallfour{} or
+\DWOPcallref{}
DWARF expression operator
(see Section \refersec{chap:controlflowoperations}).
try/catch \nolink{blocks} (see Section\refersec{chap:tryandcatchblockentries}),
labels and the like, may have
\begin{itemize}
-\item A \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} attribute for
+\item A \DWATlowpc{} attribute for
\hypertarget{chap:DWATlowpccodeaddressorrangeofaddresses}
a single address,
-\item A \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc}
+\item A \DWATlowpc{}
\addtoindexx{low PC attribute}
and
-\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc}
+\DWAThighpc{}
\addtoindexx{high PC attribute}
\hypertarget{chap:DWAThighpccontiguousrangeofcodeaddresses}
pair of attributes for
a single contiguous range of
addresses, or
-\item A \livelink{chap:DWATranges}{DW\_AT\_ranges} attribute
+\item A \DWATranges{} attribute
\addtoindexx{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
-\livelink{chap:DWATstartscope}{DW\_AT\_start\_scope} attribute.
+\DWATstartscope{} attribute.
\addtoindexx{start scope attribute}
If an entity has no associated machine code,
\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 \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} attribute whose value is the
+the entry has a \DWATlowpc{} attribute whose value is the
relocated address for the entity.
-\textit{While the \livelink{chap:DWATentrypc}{DW\_AT\_entry\_pc}
+\textit{While the \DWATentrypc{}
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
+historically the \DWATlowpc{} attribute was used before the
+\DWATentrypc{} was introduced
(in \addtoindex{DWARF Version 3}). There is
insufficient reason to change this.}
may
\addtoindexx{low PC attribute}
have
-a \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} and
-\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc} pair of attributes.
+a \DWATlowpc{} and
+\DWAThighpc{} pair of attributes.
The value
of the
-\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} attribute
+\DWATlowpc{} attribute
is the relocated address of the
first instruction associated with the entity. If the value of
-the \livelink{chap:DWAThighpc}{DW\_AT\_high\_pc} is of class address, it is the relocated
+the \DWAThighpc{} 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
When the set of addresses of a debugging information entry
\addtoindexx{non-contiguous address ranges}
cannot be described as a single contiguous range, the entry has
-a \livelink{chap:DWATranges}{DW\_AT\_ranges} attribute
+a \DWATranges{} attribute
\addtoindexx{ranges attribute}
whose value is of class \livelink{chap:classrangelistptr}{rangelistptr}
and indicates the beginning of a \addtoindex{range list}.
Similarly,
-a \livelink{chap:DWATstartscope}{DW\_AT\_start\_scope} attribute
+a \DWATstartscope{} attribute
\addtoindexx{start scope attribute}
may have a value of class
\livelink{chap:classrangelistptr}{rangelistptr} for the same reason.
in a separate object file section called
\dotdebugranges{}. A
\addtoindex{range list} is indicated by a
-\livelink{chap:DWATranges}{DW\_AT\_ranges} attribute whose
+\DWATranges{} attribute whose
\addtoindexx{ranges attribute}
value is represented as an offset from the beginning of the
\dotdebugranges{} section to the beginning of the
ordinary \livelink{chap:lexicalblock}{block},
try/catch \nolink{blocks} (see Section \refersec{chap:tryandcatchblockentries}),
and the like,
-may have a \livelink{chap:DWATentrypc}{DW\_AT\_entry\_pc} attribute to
+may have a \DWATentrypc{} attribute to
indicate the first executable instruction within that range
-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,
+of addresses. The value of the \DWATentrypc{} attribute is a
+relocated address. If no \DWATentrypc{} attribute is present,
then the entry address is assumed to be the same as the
-value of the \livelink{chap:DWATlowpc}{DW\_AT\_low\_pc} attribute, if present; otherwise,
+value of the \DWATlowpc{} attribute, if present; otherwise,
the entry address is unknown.
\section{Static and Dynamic Values of Attributes}
}
\textit{The applicable attributes include:
-\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: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:DWATlowerbound}{DW\_AT\_lower\_bound},
+\DWATallocated,
+\DWATassociated,
+\DWATbitoffset,
+\DWATbitsize,
+\DWATbitstride,
+\DWATbytesize,
+\DWATbytestride,
+\DWATcount,
+\DWATlowerbound,
\DWATrank,
-\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound},
+\DWATupperbound,
(and possibly oth