cannot be considered definitive.
In the following table,
-DECL means the declaration coordinates DW\_AT\_decl\_column,
-DW\_AT\_decl\_file, and DW\_AT\_decl\_line.
+DECL means the declaration coordinates DW\-\_AT\-\_decl\-\_column,
+DW\-\_AT\-\_decl\-\_file, and DW\-\_AT\-\_decl\-\_line.
\label{tab:attributesbytag}
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration}
+\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}
& DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_bit\_stride \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_ordering \\
-&DW\_AT\_sibling \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_bit\-\_stride \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_ordering \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
&DECL \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_binary\_scale \\
-&DW\_AT\_bit\_offset \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_bit\_offset \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_decimal\_scale \\
-&DW\_AT\_decimal\_sign \\
-&DW\_AT\_description \\
-&DW\_AT\_digit\_count \\
-&DW\_AT\_encoding \\
-&DW\_AT\_endianity \\
-&DW\_AT\_name \\
-&DW\_AT\_picture\_string \\
-&DW\_AT\_sibling \\
-&DW\_AT\_small \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_binary\-\_scale \\
+&DW\-\_AT\-\_bit\-\_offset \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_bit\-\_offset \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_decimal\-\_scale \\
+&DW\-\_AT\-\_decimal\-\_sign \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_digit\-\_count \\
+&DW\-\_AT\-\_encoding \\
+&DW\-\_AT\-\_endianity \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_picture\-\_string \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_small \\
-\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block}
+\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
+\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_signature \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_visibility \\
-
-
-\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_signature \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_visibility \\
+
+
+\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
&DECL \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_linkage\_name \\
-&DW\_AT\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion}
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_linkage\-\_name \\
+&DW\-\_AT\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}
&DECL \\
-&DW\_AT\_common\_reference \\
-&DW\_AT\_declaration \\
-&DW\_AT\_sibling \\
-&DW\_AT\_visibility \\
-
-
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
-&DW\_AT\_base\_types \\
-&DW\_AT\_comp\_dir \\
-&DW\_AT\_identifier\_case \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_language \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_macro\_info \\
-&DW\_AT\_main\_subprogram \\
-&DW\_AT\_name \\
-&DW\_AT\_producer \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_stmt\_list \\
-&DW\_AT\_use\_UTF8 \\
-
-\livelink{chap:DWTAGcondition}{DW\_TAG\_condition}
+&DW\-\_AT\-\_common\-\_reference \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_visibility \\
+
+
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+&DW\-\_AT\-\_base\-\_types \\
+&DW\-\_AT\-\_comp\-\_dir \\
+&DW\-\_AT\-\_identifier\-\_case \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_language \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_macro\-\_info \\
+&DW\-\_AT\-\_main\-\_subprogram \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_producer \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_stmt\-\_list \\
+&DW\-\_AT\-\_use\-\_UTF8 \\
+
+\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}
&DECL \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-
-\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+
+\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_const\_value \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_endianity \\
-&DW\_AT\_external \\
-&DW\_AT\_linkage\_name \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}
-&DW\_AT\_location \\
-
-\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_const\-\_value \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_endianity \\
+&DW\-\_AT\-\_external \\
+&DW\-\_AT\-\_linkage\-\_name \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}
+&DW\-\_AT\-\_location \\
+
+\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}
&DECL \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_description \\
-&DW\_AT\_frame\_base \\
-&DW\_AT\_linkage\_name \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_name \\
-&DW\_AT\_return\_addr \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_static\_link \\
-&DW\_AT\_type \\
-
-
-\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_frame\-\_base \\
+&DW\-\_AT\-\_linkage\-\_name \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_return\-\_addr \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_static\-\_link \\
+&DW\-\_AT\-\_type \\
+
+
+\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}
DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_bit\_stride \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_byte\_stride \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_enum\_class \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_signature \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_bit\-\_stride \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_byte\-\_stride \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_enum\-\_class \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_signature \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
&DECL \\
-&DW\_AT\_const\_value \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_const\-\_value \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type}
+\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_artificial \\
-&DW\_AT\_const\_value \\
-&DW\_AT\_default\_value \\
-&DW\_AT\_description \\
-&DW\_AT\_endianity \\
-&DW\_AT\_is\_optional \\
-&DW\_AT\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_variable\_parameter \\
-
-\livelink{chap:DWTAGfriend}{DW\_TAG\_friend}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_artificial \\
+&DW\-\_AT\-\_const\-\_value \\
+&DW\-\_AT\-\_default\-\_value \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_endianity \\
+&DW\-\_AT\-\_is\-\_optional \\
+&DW\-\_AT\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_variable\-\_parameter \\
+
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_friend \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_friend \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}
+\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_description \\
-&DW\_AT\_import \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-
-\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_import \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+
+\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}
&DECL \\
-&DW\_AT\_import \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
+&DW\-\_AT\-\_import \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
-&DW\_AT\_import \\
+\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
+&DW\-\_AT\-\_import \\
-\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance}
+\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_data\_member\_location \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_virtuality \\
-
-\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_call\_column \\
-&DW\_AT\_call\_file \\
-&DW\_AT\_call\_line \\
-&DW\_AT\_const\_expr \\
-&DW\_AT\_entry\_pc \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_ranges \\
-&DW\_AT\_return\_addr \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_trampoline \\
-
-\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_data\-\_member\-\_location \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_virtuality \\
+
+\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_call\-\_column \\
+&DW\-\_AT\-\_call\-\_file \\
+&DW\-\_AT\-\_call\-\_line \\
+&DW\-\_AT\-\_const\-\_expr \\
+&DW\-\_AT\-\_entry\-\_pc \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_return\-\_addr \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_trampoline \\
+
+\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
-\livelink{chap:DWTAGlabel}{DW\_TAG\_label}
+\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_description \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_name \\
-&DW\_AT\_segment \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_sibling \\
-
-\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_sibling \\
+
+\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_description \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_name \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-
-\livelink{chap:DWTAGmember}{DW\_TAG\_member}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+
+\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_bit\_offset \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_bit\_offset \\
-&DW\_AT\_data\_member\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_mutable \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-
-\livelink{chap:DWTAGmodule}{DW\_TAG\_module}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_bit\-\_offset \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_bit\-\_offset \\
+&DW\-\_AT\-\_data\-\_member\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_mutable \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+
+\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_entry\_pc \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_name \\
-&DW\_AT\_priority \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_specification \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_entry\-\_pc \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_priority \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_declaration \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}
&DECL \\
-&DW\_AT\_namelist\_item \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_namelist\-\_item \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
&DECL \\
-&DW\_AT\_description \\
-&DW\_AT\_extension \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type}
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
-&DW\_AT\_base\_types \\
-&DW\_AT\_comp\_dir \\
-&DW\_AT\_description \\
-&DW\_AT\_identifier\_case \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_language \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_macro\_info \\
-&DW\_AT\_main\_subprogram \\
-&DW\_AT\_name \\
-&DW\_AT\_producer \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_stmt\_list \\
-&DW\_AT\_use\_UTF8 \\
-
-
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type} \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_extension \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+
+\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}
+&DW\-\_AT\-\_base\-\_types \\
+&DW\-\_AT\-\_comp\-\_dir \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_identifier\-\_case \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_language \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_macro\-\_info \\
+&DW\-\_AT\-\_main\-\_subprogram \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_producer \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_stmt\-\_list \\
+&DW\-\_AT\-\_use\-\_UTF8 \\
+
+
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_containing\_type \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_use\_location \\
-&DW\_AT\_visibility \\
-
-
-\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
-&DW\_AT\_address\_class \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_type}
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_containing\-\_type \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_use\-\_location \\
+&DW\-\_AT\-\_visibility \\
+
+
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type}
&DECL \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
-\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type}
+\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_count \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-
-\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_count \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+
+\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_string\_length \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_string\-\_length \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_signature \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_signature \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_artificial \\
-&DW\_AT\_calling\_convention \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_elemental \\
-&DW\_AT\_entry\_pc \\
-&DW\_AT\_explicit \\
-&DW\_AT\_external \\
-&DW\_AT\_frame\_base \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_inline \\
-&DW\_AT\_linkage\_name \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_main\_subprogram \\
-&DW\_AT\_name \\
-&DW\_AT\_object\_pointer \\
-&DW\_AT\_prototyped \\
-&DW\_AT\_pure \\
-&DW\_AT\_ranges \\
-&DW\_AT\_recursive \\
-&DW\_AT\_return\_addr \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_static\_link \\
-&DW\_AT\_trampoline \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-&DW\_AT\_virtuality \\
-&DW\_AT\_vtable\_elem\_location \\
-
-\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_artificial \\
+&DW\-\_AT\-\_calling\-\_convention \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_elemental \\
+&DW\-\_AT\-\_entry\-\_pc \\
+&DW\-\_AT\-\_explicit \\
+&DW\-\_AT\-\_external \\
+&DW\-\_AT\-\_frame\-\_base \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_inline \\
+&DW\-\_AT\-\_linkage\-\_name \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_main\-\_subprogram \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_object\-\_pointer \\
+&DW\-\_AT\-\_prototyped \\
+&DW\-\_AT\-\_pure \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_recursive \\
+&DW\-\_AT\-\_return\-\_addr \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_static\-\_link \\
+&DW\-\_AT\-\_trampoline \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+&DW\-\_AT\-\_virtuality \\
+&DW\-\_AT\-\_vtable\-\_elem\-\_location \\
+
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_bit\_stride \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_byte\_stride \\
-&DW\_AT\_count \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_lower\_bound \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_threads\_scaled \\
-&DW\_AT\_type \\
-&DW\_AT\_upper\_bound \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_bit\-\_stride \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_byte\-\_stride \\
+&DW\-\_AT\-\_count \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_lower\-\_bound \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_threads\-\_scaled \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_upper\-\_bound \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_prototyped \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_prototyped \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_signature \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_signature \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
&DECL \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter}
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}
&DECL \\
-&DW\_AT\_const\_value \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
+&DW\-\_AT\-\_const\-\_value \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
-\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type}
+\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}
&DECL \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
-\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block}
+\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+
+\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
-&DW\_AT\_language \\
-
-\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
+&DW\-\_AT\-\_language \\
+
+\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_bit\_size \\
-&DW\_AT\_byte\_size \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_signature \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_visibility \\
-
-
-\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_bit\-\_size \\
+&DW\-\_AT\-\_byte\-\_size \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_signature \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_visibility \\
+
+
+\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_artificial \\
-&DW\_AT\_sibling \\
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_artificial \\
+&DW\-\_AT\-\_sibling \\
-\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
+\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}
&DECL \\
-&DW\_AT\_description \\
-&DW\_AT\_name \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_name \\
-\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_const\_expr \\
-&DW\_AT\_const\_value \\
-&DW\_AT\_declaration \\
-&DW\_AT\_description \\
-&DW\_AT\_endianity \\
-&DW\_AT\_external \\
-&DW\_AT\_linkage\_name \\
-&DW\_AT\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_specification \\
-&DW\_AT\_start\_scope \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
-
-\livelink{chap:DWTAGvariant}{DW\_TAG\_variant}
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_const\-\_expr \\
+&DW\-\_AT\-\_const\-\_value \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_description \\
+&DW\-\_AT\-\_endianity \\
+&DW\-\_AT\-\_external \\
+&DW\-\_AT\-\_linkage\-\_name \\
+&DW\-\_AT\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_specification \\
+&DW\-\_AT\-\_start\-\_scope \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
+
+\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}
&DECL \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_declaration \\
-&DW\_AT\_discr\_list \\
-&DW\_AT\_discr\_value \\
-&DW\_AT\_sibling \\
-
-\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_discr\-\_list \\
+&DW\-\_AT\-\_discr\-\_value \\
+&DW\-\_AT\-\_sibling \\
+
+\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}
&DECL \\
-&DW\_AT\_abstract\_origin \\
-&DW\_AT\_accessibility \\
-&DW\_AT\_declaration \\
-&DW\_AT\_discr \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type}
-&DW\_AT\_allocated \\
-&DW\_AT\_associated \\
-&DW\_AT\_data\_location \\
-&DW\_AT\_name \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-
-\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}
-&DW\_AT\_accessibility \\
-&DW\_AT\_address\_class \\
-&DW\_AT\_declaration \\
-&DW\_AT\_high\_pc \\
-&DW\_AT\_location \\
-&DW\_AT\_low\_pc \\
-&DW\_AT\_ranges \\
-&DW\_AT\_segment \\
-&DW\_AT\_sibling \\
-&DW\_AT\_type \\
-&DW\_AT\_visibility \\
+&DW\-\_AT\-\_abstract\-\_origin \\
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_discr \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}
+&DW\-\_AT\-\_allocated \\
+&DW\-\_AT\-\_associated \\
+&DW\-\_AT\-\_data\-\_location \\
+&DW\-\_AT\-\_name \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+
+\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}
+&DW\-\_AT\-\_accessibility \\
+&DW\-\_AT\-\_address\-\_class \\
+&DW\-\_AT\-\_declaration \\
+&DW\-\_AT\-\_high\-\_pc \\
+&DW\-\_AT\-\_location \\
+&DW\-\_AT\-\_low\-\_pc \\
+&DW\-\_AT\-\_ranges \\
+&DW\-\_AT\-\_segment \\
+&DW\-\_AT\-\_sibling \\
+&DW\-\_AT\-\_type \\
+&DW\-\_AT\-\_visibility \\
\end{longtable}
\item A means of referencing from inside one .debug\_info
compilation unit to another .debug\_info compilation unit
-(DW\_FORM\_ref\_addr provides this).
+(DW\-\_FORM\-\_ref\-\_addr provides this).
\item A means of having multiple contributions to specific sections
(for example, .debug\_info, 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 DW\_FORM\_ref4
+\textit{Local labels use references with form DW\-\_FORM\-\_ref4
or
-DW\_FORM\_ref8.
+DW\-\_FORM\-\_ref8.
(These are affected by relocations
so
-DW\_FORM\_ref\_udata,
-DW\_FORM\_ref1 and
-DW\_FORM\_ref2 are
+DW\-\_FORM\-\_ref\-\_udata,
+DW\-\_FORM\-\_ref1 and
+DW\-\_FORM\-\_ref2 are
normally not usable and
-DW\_FORM\_ref\_addr is not necessary
+DW\-\_FORM\-\_ref\-\_addr is not necessary
for a local label.)}
-\textbf{Use of \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} versus
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}}
+\textbf{Use of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} versus
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}}
A section group compilation unit that uses
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
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}.
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}.
However, an \#include appearing inside
a C++ namespace declaration or a function, for example, is
not a good candidate because the entities included are not
This also applies to 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}) in a section group whenever the section
+Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} (instead
+of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}) in a section group whenever the section
group contents are not necessarily globally visible. This
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 \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} 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 \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}.
-\textbf{Use of \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}}
+\textbf{Use of \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}}
-A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry has an
-DW\_AT\_import attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging information entry.
+A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry has an
+DW\-\_AT\-\_import attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging information entry.
-A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry refers
+A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry refers
to a
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} 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
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} contents logically appear at the point
of the
-\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} entry.
+\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} entry.
-\textbf{Use of DW\_FORM\_ref\_addr}
+\textbf{Use of DW\-\_FORM\-\_ref\-\_addr}
Use
-DW\_FORM\_ref\_addr to reference from one compilation
+DW\-\_FORM\-\_ref\-\_addr to reference from one compilation
unit's debugging information entries to those of another
compilation unit.
When referencing into a non-section group .debug\_info,
from another .debug\_info (from anywhere)
-DW\_FORM\_ref\_addr is
+DW\-\_FORM\-\_ref\-\_addr is
still the form to be used, but a section\dash relative relocation
generated by use of a non-exported name (often called an
``internal name'') may be used for references within the
my.compiler.company.cpp.wa.h.123456
== section .debug\_info
DW.cpp.wa.h.123456.1: ! linker global symbol
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- DW\_AT\_language(DW\_LANG\_C\_plus\_plus)
+ \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+ DW\-\_AT\-\_language(DW\-\_LANG\-\_C\-\_plus\-\_plus)
... ! other unit attributes
DW.cpp.wa.h.123456.2: ! linker global symbol
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("int")
+ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("int")
DW.cpp.wa.h.123456.3: ! linker global symbol
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_NAME("A")
+ \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_NAME("A")
DW.cpp.wa.h.123456.4: ! linker global symbol
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("i")
- DW\_AT\_type(DW\_FORM\_refn to DW.cpp.wa.h.123456.2)
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("i")
+ DW\-\_AT\-\_type(DW\-\_FORM\-\_refn to DW.cpp.wa.h.123456.2)
! (This is a local reference, so the more
- ! compact form DW\_FORM\_refn can be used)
+ ! compact form DW\-\_FORM\-\_refn can be used)
\end{alltt}
== section .text
[generated code for function f]
== section .debug\_info
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+ \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
.L1: ! local (non-linker) symbol
- \livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
- DW\_AT\_type(reference to DW.cpp.wa.h.123456.3)
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("f")
- DW\_AT\_type(reference to DW.cpp.wa.h.123456.2)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("a")
- DW\_AT\_type(reference to .L1)
+ \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+ DW\-\_AT\-\_type(reference to DW.cpp.wa.h.123456.3)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("f")
+ DW\-\_AT\-\_type(reference to DW.cpp.wa.h.123456.2)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("a")
+ DW\-\_AT\-\_type(reference to .L1)
...
\end{alltt}
-This example uses \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} for the section group,
+This example uses \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} for the section group,
implying that the contents of the compilation unit are
globally visible (in accordance with C++ language rules).
-\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} is not needed for the same reason.
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} is not needed for the same reason.
\subsubsection{Fortran Example}
== section .debug\_info
DW.myf90.CommonStuff.fh.654321.1: ! linker global symbol
- \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
+ \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}
! ...compilation unit attributes, including...
- DW\_AT\_language(DW\_LANG\_Fortran90)
- DW\_AT\_identifier\_case(DW\_ID\_case\_insensitive)
+ DW\-\_AT\-\_language(DW\-\_LANG\-\_Fortran90)
+ DW\-\_AT\-\_identifier\-\_case(DW\-\_ID\-\_case\-\_insensitive)
DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol
-3\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+3\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! unnamed
- DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
+ DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
! base type INTEGER)
- DW\_AT\_lower\_bound(constant 1)
- DW\_AT\_upper\_bound(constant 100)
+ DW\-\_AT\-\_lower\-\_bound(constant 1)
+ DW\-\_AT\-\_upper\-\_bound(constant 100)
DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
- \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
- DW\_AT\_name("Common1")
- DW\_AT\_location(Address of common block Common1)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("C")
- DW\_AT\_type(reference to 3\$)
- DW\_AT\_location(address of C)
+ \livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
+ DW\-\_AT\-\_name("Common1")
+ DW\-\_AT\-\_location(Address of common block Common1)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("C")
+ DW\-\_AT\-\_type(reference to 3\$)
+ DW\-\_AT\-\_location(address of C)
DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol
- \livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
- DW\_AT\_name("SEVEN")
- DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}
+ DW\-\_AT\-\_name("SEVEN")
+ DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- DW\_AT\_const\_value(constant 7)
+ DW\-\_AT\-\_const\-\_value(constant 7)
\end{alltt}
Section \refersec{app:duplicateeliminationexample2primaryunit}
[code for function Foo]
== section .debug\_info
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("Foo")
- DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("Foo")
+ DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
- \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
- DW\_AT\_import(reference to
+ \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
+ DW\-\_AT\-\_import(reference to
DW.myf90.CommonStuff.fh.654321.1)
- \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! For Common1
- DW\_AT\_common\_reference(reference to
+ \livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! For Common1
+ DW\-\_AT\-\_common\-\_reference(reference to
DW.myf90.CommonStuff.fh.654321.3)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable} ! For function result
- DW\_AT\_name("Foo")
- DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable} ! For function result
+ DW\-\_AT\-\_name("Foo")
+ DW\-\_AT\-\_type(reference to DW.f90.F90\$main.f.2)
! base type INTEGER
\end{alltt}
\begin{alltt}
== section .debug\_info
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
- DW\_AT\_name(F90\$main)
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("INTEGER")
- DW\_AT\_encoding(DW\_ATE\_signed)
- DW\_AT\_byte\_size(...)
-
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+ DW\-\_AT\-\_name(F90\$main)
+ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("INTEGER")
+ DW\-\_AT\-\_encoding(DW\-\_ATE\-\_signed)
+ DW\-\_AT\-\_byte\-\_size(...)
+
+ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
...
... ! other base types
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("F90\$main")
- \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
- DW\_AT\_import(reference to
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("F90\$main")
+ \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
+ DW\-\_AT\-\_import(reference to
DW.myf90.CommonStuff.fh.654321.1)
- \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! for Common1
- DW\_AT\_common\_reference(reference to
+ \livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! for Common1
+ DW\-\_AT\-\_common\-\_reference(reference to
DW.myf90.CommonStuff.fh.654321.3)
...
\end{alltt}
-This example uses \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} for the section group
+This example uses \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} for the section group
because the included declarations are not independently
visible as global entities.
The C++ example in this Section might appear to be equally
valid as a C example. However, it is prudent to include
-a \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} in the primary unit (see Figure 84)
-with an DW\_AT\_import attribute that refers to the proper unit
+a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} in the primary unit (see Figure 84)
+with an DW\-\_AT\-\_import attribute that refers to the proper unit
in the section group.
\textit{The C rules for consistency of global (file scope) symbols
\label{app:typesignaturecomputation1dwarfrepresentation}
\begin{alltt}
- \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
- DW\_AT\_language: DW\_LANG\_C\_plus\_plus (4)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name: "N"
+ \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
+ DW\-\_AT\-\_language: DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
+ \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name: "N"
L1:
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name: "C"
- DW\_AT\_byte\_size: 8
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 5
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "x"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 6
- DW\_AT\_type: reference to L2
- DW\_AT\_data\_member\_location: 0
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "y"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 7
- DW\_AT\_type: reference to L2
- DW\_AT\_data\_member\_location: 4
+ \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name: "C"
+ DW\-\_AT\-\_byte\-\_size: 8
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 5
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "x"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 6
+ DW\-\_AT\-\_type: reference to L2
+ DW\-\_AT\-\_data\-\_member\-\_location: 0
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "y"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 7
+ DW\-\_AT\-\_type: reference to L2
+ DW\-\_AT\-\_data\-\_member\-\_location: 4
L2:
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_byte\_size: 4
- DW\_AT\_encoding: DW\_ATE\_signed
- DW\_AT\_name: "int"
+ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_byte\-\_size: 4
+ DW\-\_AT\-\_encoding: DW\-\_ATE\-\_signed
+ DW\-\_AT\-\_name: "int"
\end{alltt}
In computing a signature for the type N::C, flatten the type
\label{app:typesignaturecomputation1flattenedbytestream}
\begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
-// Step 4: 'A' DW\_AT\_name DW\_FORM\_string "C"
+// Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "C"
0x41 0x03 0x08 0x43 0x00
-// Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 8
+// Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "x"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 0
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' DW\_AT\_type (type \#2)
+ // Step 6: 'T' DW\-\_AT\-\_type (type \#2)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "int"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 4
+ // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' DW\_AT\_encoding DW\_FORM\_sdata DW\_ATE\_signed
+ // Step 4: 'A' DW\-\_AT\-\_encoding DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
- // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
+ // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "x"
0x00
// Step 7: Second child ("y")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "y"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "y"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 4
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' DW\_AT\_type (type \#2)
+ // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "C"
0x00
\end{alltt}
\label{app:typesignaturecomputation2dwarfrepresentation}
\begin{alltt}
- \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
- DW\_AT\_language: DW\_LANG\_C\_plus\_plus (4)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name: "N"
+ \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
+ DW\-\_AT\-\_language: DW\-\_LANG\-\_C\-\_plus\-\_plus (4)
+ \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name: "N"
L1:
- \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
- DW\_AT\_name: "A"
- DW\_AT\_byte\_size: 20
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 10
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "v\_"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 15
- DW\_AT\_type: reference to L2
- DW\_AT\_data\_member\_location: 0
- DW\_AT\_accessibility: DW\_ACCESS\_private
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "next"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 16
- DW\_AT\_type: reference to L3
- DW\_AT\_data\_member\_location: 4
- DW\_AT\_accessibility: DW\_ACCESS\_private
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "bp"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 17
- DW\_AT\_type: reference to L4
- DW\_AT\_data\_member\_location: 8
- DW\_AT\_accessibility: DW\_ACCESS\_private
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name: "c"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 18
- DW\_AT\_type: 0xd28081e8 dcf5070a (signature for struct C)
- DW\_AT\_data\_member\_location: 12
- DW\_AT\_accessibility: DW\_ACCESS\_private
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_external: 1
- DW\_AT\_name: "A"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 12
- DW\_AT\_declaration: 1
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_type: reference to L3
- DW\_AT\_artificial: 1
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_type: reference to L2
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_external: 1
- DW\_AT\_name: "v"
- DW\_AT\_decl\_file: 1
- DW\_AT\_decl\_line: 13
- DW\_AT\_type: reference to L2
- DW\_AT\_declaration: 1
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_type: reference to L3
- DW\_AT\_artificial: 1
+ \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
+ DW\-\_AT\-\_name: "A"
+ DW\-\_AT\-\_byte\-\_size: 20
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 10
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "v\_"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 15
+ DW\-\_AT\-\_type: reference to L2
+ DW\-\_AT\-\_data\-\_member\-\_location: 0
+ DW\-\_AT\-\_accessibility: DW\-\_ACCESS\-\_private
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "next"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 16
+ DW\-\_AT\-\_type: reference to L3
+ DW\-\_AT\-\_data\-\_member\-\_location: 4
+ DW\-\_AT\-\_accessibility: DW\-\_ACCESS\-\_private
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "bp"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 17
+ DW\-\_AT\-\_type: reference to L4
+ DW\-\_AT\-\_data\-\_member\-\_location: 8
+ DW\-\_AT\-\_accessibility: DW\-\_ACCESS\-\_private
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name: "c"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 18
+ DW\-\_AT\-\_type: 0xd28081e8 dcf5070a (signature for struct C)
+ DW\-\_AT\-\_data\-\_member\-\_location: 12
+ DW\-\_AT\-\_accessibility: DW\-\_ACCESS\-\_private
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_external: 1
+ DW\-\_AT\-\_name: "A"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 12
+ DW\-\_AT\-\_declaration: 1
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_type: reference to L3
+ DW\-\_AT\-\_artificial: 1
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_type: reference to L2
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_external: 1
+ DW\-\_AT\-\_name: "v"
+ DW\-\_AT\-\_decl\-\_file: 1
+ DW\-\_AT\-\_decl\-\_line: 13
+ DW\-\_AT\-\_type: reference to L2
+ DW\-\_AT\-\_declaration: 1
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_type: reference to L3
+ DW\-\_AT\-\_artificial: 1
L2:
- \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_byte\_size: 4
- DW\_AT\_encoding: DW\_ATE\_signed
- DW\_AT\_name: "int"
+ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_byte\-\_size: 4
+ DW\-\_AT\-\_encoding: DW\-\_ATE\-\_signed
+ DW\-\_AT\-\_name: "int"
L3:
- \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- DW\_AT\_type: reference to L1
+ \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+ DW\-\_AT\-\_type: reference to L1
L4:
- \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- DW\_AT\_type: reference to L5
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name: "N"
+ \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+ DW\-\_AT\-\_type: reference to L5
+ \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name: "N"
L5:
- \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name: "B"
- DW\_AT\_declaration: 1
+ \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name: "B"
+ DW\-\_AT\-\_declaration: 1
\end{alltt}
In this example, the structure types N::A and N::C have each
to an incomplete type N::B, which is also included here as
a declaration, since the complete type is unknown and its
signature is therefore unavailable. There is also a reference
-to N::C, using DW\_FORM\_sig8 to refer to the type signature
+to N::C, using DW\-\_FORM\-\_sig8 to refer to the type signature
for that type.
In computing a signature for the type N::A, flatten the type
\label{app:typesignatureexample2flattenedbytestream}
\begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
+// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
0x44 0x02
-// Step 4: 'A' DW\_AT\_name DW\_FORM\_string "A"
+// Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "A"
0x41 0x03 0x08 0x41 0x00
-// Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 20
+// Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 20
0x41 0x0b 0x0d 0x14
// Step 7: First child ("v\_")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "v\_"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "v\_"
0x41 0x03 0x08 0x76 0x5f 0x00
- // Step 4: 'A' DW\_AT\_accessibility DW\_FORM\_sdata DW\_ACCESS\_private
+ // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 0
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'T' DW\_AT\_type (type \#2)
+ // Step 6: 'T' DW\-\_AT\-\_type (type \#2)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+ // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "int"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 4
+ // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' DW\_AT\_encoding DW\_FORM\_sdata DW\_ATE\_signed
+ // Step 4: 'A' DW\-\_AT\-\_encoding DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
- // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
+ // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "v\_"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "v\_"
0x00
// Step 7: Second child ("next")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "next"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "next"
0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
- // Step 4: 'A' DW\_AT\_accessibility DW\_FORM\_sdata DW\_ACCESS\_private
+ // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 4
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'T' DW\_AT\_type (type \#3)
+ // Step 6: 'T' DW\-\_AT\-\_type (type \#3)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x44 0x0f
- // Step 5: 'N' DW\_AT\_type
+ // Step 5: 'N' DW\-\_AT\-\_type
0x4e 0x49
- // Step 5: 'C' DW\_AT\_namespace "N" 'E'
+ // Step 5: 'C' DW\-\_AT\-\_namespace "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 \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "next"
0x00
// Step 7: Third child ("bp")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "bp"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "bp"
0x41 0x03 0x08 0x62 0x70 0x00
- // Step 4: 'A' DW\_AT\_accessibility DW\_FORM\_sdata DW\_ACCESS\_private
+ // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 8
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 8
0x41 0x38 0x0d 0x08
- // Step 6: 'T' DW\_AT\_type (type \#4)
+ // Step 6: 'T' DW\-\_AT\-\_type (type \#4)
0x54 0x49
- // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+ // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x44 0x0f
- // Step 5: 'N' DW\_AT\_type
+ // Step 5: 'N' DW\-\_AT\-\_type
0x4e 0x49
- // Step 5: 'C' DW\_AT\_namespace "N" 'E'
+ // Step 5: 'C' DW\-\_AT\-\_namespace "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 \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "next"
0x00
// Step 7: Fourth child ("c")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "c"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "c"
0x41 0x03 0x08 0x63 0x00
- // Step 4: 'A' DW\_AT\_accessibility DW\_FORM\_sdata DW\_ACCESS\_private
+ // Step 4: 'A' DW\-\_AT\-\_accessibility DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 12
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 12
0x41 0x38 0x0d 0x0c
- // Step 6: 'T' DW\_AT\_type (type \#5)
+ // Step 6: 'T' DW\-\_AT\-\_type (type \#5)
0x54 0x49
- // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
+ // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
0x43 0x39 0x4e 0x00
- // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+ // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "C"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "C"
0x41 0x03 0x08 0x43 0x00
- // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 8
+ // Step 4: 'A' DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_sdata 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "x"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 0
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 0
0x41 0x38 0x0d 0x00
- // Step 6: 'R' DW\_AT\_type (type \#2)
+ // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "x"
0x00
// Step 7: Second child ("y")
- // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+ // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "y"
+ // Step 4: 'A' DW\-\_AT\-\_name DW\-\_FORM\-\_string "y"
0x41 0x03 0x08 0x79 0x00
- // Step 4: 'A' DW\_AT\_data\_member\_location DW\_FORM\_sdata 4
+ // Step 4: 'A' DW\-\_AT\-\_data\-\_member\-\_location DW\-\_FORM\-\_sdata 4
0x41 0x38 0x0d 0x04
- // Step 6: 'R' DW\_AT\_type (type \#2)
+ // Step 6: 'R' DW\-\_AT\-\_type (type \#2)
0x52 0x49 0x02
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
0x00
- // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
+ // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "C"
0x00
- // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "c"
+ // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "c"
0x00
// Step 7: Fifth child ("A")
- // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "A"
+ // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} "A"
0x53 0x2e 0x41 0x00
// Step 7: Sixth child ("v")
- // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "v"
+ // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} "v"
0x53 0x2e 0x76 0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "A"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "A"
0x00
\end{alltt}
\label{app:typesignatureexampleusage}
\begin{alltt}
- \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+ \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
...
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
...
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name: "a"
- DW\_AT\_type: (signature) 0xd6d160f5 5589f6e9
- DW\_AT\_location: ...
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name: "a"
+ DW\-\_AT\-\_type: (signature) 0xd6d160f5 5589f6e9
+ DW\-\_AT\-\_location: ...
...
\end{alltt}
at-code
: <ULEB128>
form-encoded-value
- : DW\_FORM\_sdata value
- : DW\_FORM\_flag value
- : DW\_FORM\_string string
- : DW\_FORM\_block block
-DW\_FORM\_string
+ : DW\-\_FORM\-\_sdata value
+ : DW\-\_FORM\-\_flag value
+ : DW\-\_FORM\-\_string string
+ : DW\-\_FORM\-\_block block
+DW\-\_FORM\-\_string
: '\\x08'
-DW\_FORM\_block
+DW\-\_FORM\-\_block
: '\\x09'
-DW\_FORM\_flag
+DW\-\_FORM\-\_flag
: '\\x0c'
-DW\_FORM\_sdata
+DW\-\_FORM\-\_sdata
: '\\x0d'
value
: <SLEB128>
There will also be a compilation unit that has the file\dash level
declarations and definitions. Other per\dash function compilation
unit DWARF information (.debug\_info) points to this common
-file\dash level compilation unit using \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}.
+file\dash level compilation unit using \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}.
-Section groups can use DW\_FORM\_ref\_addr and internal labels
+Section groups can use DW\-\_FORM\-\_ref\-\_addr and internal labels
(section\dash relative relocations) to refer to the main object
file sections, as the section groups here are either deleted
as unused or kept. There is no possibility (aside from error)
Program variables, formal parameters and constants are
represented by debugging information entries with the tags
-\livetarg{chap:DWTAGvariable}{DW\_TAG\_variable},
-\livetarg{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter} and
-\livetarg{chap:DWTAGconstant}{DW\_TAG\_constant},
+\livetarg{chap:DWTAGvariable}{DW\-\_TAG\-\_variable},
+\livetarg{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} and
+\livetarg{chap:DWTAGconstant}{DW\-\_TAG\-\_constant},
respectively.
-\textit{The tag \livelink{chap:DWTAGconstant}{DW\_TAG\_constant} is used for languages that
+\textit{The tag \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} 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 DW\_AT\_name attribute, whose value is a null-terminated
+\item A DW\-\_AT\-\_name attribute, whose value is a null-terminated
string, containing the data object name as it appears in the
source program. If a variable entry describes an anonymous
union, the name attribute is omitted or consists of a single
zero byte.
-\item A DW\_AT\_external attribute, which is a flag, if the name
+\item A DW\-\_AT\-\_external attribute, which is a flag, if the name
of a variable is visible outside of its enclosing compilation
unit. The definitions of C++ static data members of structures
or classes are represented by variable entries flagged as
external. Both file static and local variables in C and C++
are represented by non-external variable entries.
-\item A DW\_AT\_declaration attribute, which is a flag that
+\item A DW\-\_AT\-\_declaration attribute, which is a flag that
indicates whether this entry represents a non-defining
declaration of an object.
-\item A DW\_AT\_location attribute, whose value describes the
+\item A DW\-\_AT\-\_location attribute, whose value describes the
location of a variable or parameter at run-time. In a variable
entry representing the definition of a variable (that is,
-with no DW\_AT\_declaration attribute) if no location attribute
+with no DW\-\_AT\-\_declaration attribute) if no location attribute
is present, or if the location attribute is present but has
an empty location description (as described in Section 2.6),
the variable is assumed to exist in the source code but not
specified modifies the location specified by the defining declaration and only applies for the
scope of the variable entry; if no location is specified, then the location specified in the
defining declaration applies.
-The location of a variable may be further specified with a DW\_AT\_segment attribute, if
+The location of a variable may be further specified with a DW\-\_AT\-\_segment attribute, if
appropriate.
-\item A DW\_AT\_type attribute describing the type of the variable,
+\item A DW\-\_AT\-\_type attribute describing the type of the variable,
constant or formal parameter.
\item If the variable entry represents the defining declaration
for a C++ static data member of a structure, class or union,
-the entry has a DW\_AT\_specification attribute, whose value is a
+the entry has a DW\-\_AT\-\_specification attribute, whose value is a
reference to the debugging information entry representing the
declaration of this data member. The referenced entry has the
-tag \livelink{chap:DWTAGmember}{DW\_TAG\_member} and will be a child of some class, structure
+tag \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} and will be a child of some class, structure
or union type entry. If the variable entry represents a
-non-defining declaration, DW\_AT\_specification may be used
+non-defining declaration, DW\-\_AT\-\_specification may be used
to reference the defining declaration of the variable. If
-no DW\_AT\_specification attribute is present, the defining
+no DW\-\_AT\-\_specification attribute is present, the defining
declaration may be found as a global definition either in the
current compilation unit or in another compilation unit with
-the DW\_AT\_external attribute. Variable entries containing
-the DW\_AT\_specification attribute do not need to duplicate
+the DW\-\_AT\-\_external attribute. Variable entries containing
+the DW\-\_AT\-\_specification attribute do not need to duplicate
information provided by the declaration entry referenced by
the specification attribute. In particular, such variable
entries do not need to contain attributes for the name or
type of the data member whose definition they represent.
-\item A DW\_AT\_variable\_parameter attribute, which is a flag,
+\item A DW\-\_AT\-\_variable\-\_parameter attribute, which is a flag,
if a formal parameter entry represents a parameter whose
value in the calling function may be modified by the callee..
The absence of this attribute implies that the parameter’s
value in the calling function cannot be modified by the callee.
-\item A DW\_AT\_is\_optional attribute, which is a flag, if a
+\item A DW\-\_AT\-\_is\-\_optional attribute, which is a flag, if a
parameter entry represents an optional parameter.
-\item A DW\_AT\_default\_value attribute for a formal parameter
+\item A DW\-\_AT\-\_default\-\_value attribute for a formal parameter
entry. The value of this attribute is a reference to the
debugging information entry for a variable or subroutine,
or the value may be a constant. If the attribute form is of
\textit{For a constant form there is no way to
express the absence of a default value.}
-\item A DW\_AT\_const\_value attribute for an entry describing a
+\item A DW\-\_AT\-\_const\-\_value attribute for an entry describing a
variable or formal parameter whose value is constant and not
represented by an object in the address space of the program,
or an entry describing a named constant. (Note that such
formal parameter of an inlined subprogram that corresponds
to a constant actual parameter of a call that is inlined.
-\item A DW\_AT\_start\_scope attribute if the scope of an
+\item A DW\-\_AT\-\_start\-\_scope attribute if the scope of an
object is smaller than (that is, is a subset of the addresses
of) the scope most closely enclosing the object. There are
two cases:
an object may not require its own range list even when the
containing scope is non\dash contiguous.}
-\item A DW\_AT\_endianity attribute, whose value is a constant
+\item A DW\-\_AT\-\_endianity attribute, whose value is a constant
that specifies the endianity of the object. The value of
this attribute specifies an ABI\dash defined byte ordering for
the value of the object. If omitted, the default endianity
\centering
\begin{tabular}{lp{9cm}}
Name&Meaning\\ \hline
-DW\_END\_default & Default endian encoding
+DW\-\_END\-\_default & Default endian encoding
(equivalent to the absence of a
- DW\_AT\_endianity attribute) \\
-DW\_END\_big & Big\dash endian encoding \\
-DW\_END\_little& Little-endian encoding \\
+ DW\-\_AT\-\_endianity attribute) \\
+DW\-\_END\-\_big & Big\dash endian encoding \\
+DW\-\_END\-\_little& Little-endian encoding \\
\end{tabular}
\caption{Endianity attribute values}
\label{fig:endianityattributevalues}
for different architectures.
-\item A DW\_AT\_const\_expr attribute, which is a flag, if a
+\item A DW\-\_AT\-\_const\-\_expr attribute, which is a flag, if a
variable entry represents a C++ object declared with the
constexpr specifier. This attributes indicates that the
variable can be evaluated as a compile\dash time constant.
\textit{In C++,
a variable declared with constexpr is implicitly const. Such a
-variable has a DW\_AT\_type attribute whose value is a reference
+variable has a DW\-\_AT\-\_type attribute whose value is a reference
to a debugging information entry}
-\item A DW\_AT\_linkage\_name attribute for a
+\item A DW\-\_AT\-\_linkage\-\_name attribute for a
variable or constant entry as described in
Section \refersec{chap:linkagenames}.
\label{chap:commonblockentries}
A Fortran common block may be described by a debugging
information entry with the
-tag \livetarg{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}.
+tag \livetarg{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}.
The
-common block entry has a DW\_AT\_name attribute whose value
+common block entry has a DW\-\_AT\-\_name attribute whose value
is a null-terminated string containing the common block
name as it appears in the source program. It may also have a
-DW\_AT\_linkage\_name attribute as described in
+DW\-\_AT\-\_linkage\-\_name attribute as described in
Section \refersec{chap:linkagenames}.
It
-also has a DW\_AT\_location attribute whose value describes the
+also has a DW\-\_AT\-\_location attribute whose value describes the
location of the beginning of the common block. The common
block entry owns debugging information entries describing
the variables contained within the common block.
A namelist is represented by a debugging information entry
with the
-tag \livetarg{chap:DWTAGnamelist}{DW\_TAG\_namelist}.
+tag \livetarg{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}.
If the namelist itself has a
-name, the namelist entry has a DW\_AT\_name attribute, whose
+name, the namelist entry has a DW\-\_AT\-\_name attribute, whose
value is a null-terminated string containing the namelist’s
name as it appears in the source program.
Each name that is part of the namelist is represented
by a debugging information entry with the tag
-\livetarg{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}.
+\livetarg{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}.
Each such entry is a child of the
namelist entry, and all of the namelist item entries for a
given namelist are ordered as were the list of names they
correspond to in the source program.
-Each namelist item entry contains a DW\_AT\_namelist\_item
+Each namelist item entry contains a DW\-\_AT\-\_namelist\-\_item
attribute whose value is a reference to the debugging
information entry representing the declaration of the item
whose name appears in the namelist.
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
+appropriate prefix (DW\-\_TAG, DW\-\_AT, DW\-\_END, DW\-\_ATE, DW\-\_OP,
+DW\-\_LANG, DW\-\_LNE, DW\-\_CC or DW\-\_CFA respectively) followed by
\_lo\_user or \_hi\_user.
\textit{For example, for entry tags, the special
-labels are \livetarg{chap:DWTAGlouser}{DW\_TAG\_lo\_user} and
-\livetarg{chap:DWTAGhiuser}{DW\_TAG\_hi\_user}.}
+labels are \livetarg{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user} and
+\livetarg{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}.}
Values in the
range between prefix\_lo\_user and 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,
-DW\_LNS\_lo\_user and DW\_LNS\_hi\_user symbols are not defined.}
+DW\-\_LNS\-\_lo\-\_user and DW\-\_LNS\-\_hi\-\_user symbols are not defined.}
Vendor defined tags, attributes, base type encodings, location
atoms, language names, line number actions, calling conventions
\begin{center}
\begin{tabular}{lll}
Form & Role \\ \hline
-DW\_FORM\_ref\_addr& offset in .debug\_info \\
-DW\_FORM\_sec\_offset& offset in a section other than .debug\_info or .debug\_str \\
-DW\_FORM\_strp&offset in .debug\_str \\
-DW\_OP\_call\_ref&offset in .debug\_info \\
+DW\-\_FORM\-\_ref\-\_addr& offset in .debug\_info \\
+DW\-\_FORM\-\_sec\-\_offset& offset in a section other than .debug\_info or .debug\_str \\
+DW\-\_FORM\-\_strp&offset in .debug\_str \\
+DW\-\_OP\-\_call\-\_ref&offset in .debug\_info \\
\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 \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
information entry, together with its children.
For each type defined in a compilation unit, a contribution may
be made to the .debug\_types section of the object file. Each
such contribution consists of a type unit header
(see Section \refersec{datarep:typeunitheader})
-followed by a \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} entry, together with
+followed by a \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} entry, together with
its children.
Each debugging information entry begins with a code that
A 64\dash bit unique signature of the type described in this type
unit.
-\textit{An attribute that refers(using DW\_FORM\_ref\_sig8) to
+\textit{An attribute that refers(using DW\-\_FORM\-\_ref\-\_sig8) to
the primary type contained in this type unit uses this value.}
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 DW\_CHILDREN\_yes,
+has child entries or not. If the value is DW\-\_CHILDREN\-\_yes,
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’s tag encoding is DW\_CHILDREN\_no, the next
+abbreviation’s tag encoding is DW\-\_CHILDREN\-\_no, 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
form. The series of attribute specifications ends with an
entry containing 0 for the name and 0 for the form.
-The attribute form DW\_FORM\_indirect is a special case. For
+The attribute form DW\-\_FORM\-\_indirect is a special case. For
attributes with this form, the attribute value itself in the
.debug\_info or .debug\_types section begins with an unsigned
LEB128 number that represents its form. This allows producers
and which are given a common interpretation according to the
attribute in which the form is used.
-Form DW\_FORM\_sec\_offset is a member of more than one class,
+Form DW\-\_FORM\-\_sec\-\_offset is a member of more than one class,
namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
of classes allowed by the applicable attribute in
Table \refersec{tab:attributeencodings}
determines the class of the form.
-\textit{In DWARF V3 the forms DW\_FORM\_data4 and DW\_FORM\_data8 were
+\textit{In DWARF V3 the forms DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 were
members of either class constant or one of the classes \livelink{chap:lineptr}{lineptr},
\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
-DWARF V4 DW\_FORM\_data4 and DW\_FORM\_data8 are members of class
-constant in all cases. The new DW\_FORM\_sec\_offset replaces
+DWARF V4 DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 are members of class
+constant in all cases. The new DW\-\_FORM\-\_sec\-\_offset replaces
their usage for the other classes.}
Each possible form belongs to one or more of the following classes:
\begin{itemize}
\item address \\
Represented as an object of appropriate size to hold an
-address on the target machine (DW\_FORM\_addr). The size is
+address on the target machine (DW\-\_FORM\-\_addr). The size is
encoded in the compilation unit header
(see Section \refersec{datarep:compilationunitheader}).
This address is relocatable in a relocatable object file and
\begin{myindentpara}{1cm}
A 1\dash byte length followed by 0 to 255 contiguous information
-bytes (DW\_FORM\_block1).
+bytes (DW\-\_FORM\-\_block1).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 2\dash byte length followed by 0 to 65,535 contiguous information
-bytes (DW\_FORM\_block2).
+bytes (DW\-\_FORM\-\_block2).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
-information bytes (DW\_FORM\_block4).
+information bytes (DW\-\_FORM\-\_block4).
\end{myindentpara}
\begin{myindentpara}{1cm}
An unsigned LEB128 length followed by the number of bytes
-specified by the length (DW\_FORM\_block).
+specified by the length (DW\-\_FORM\-\_block).
\end{myindentpara}
In all forms, the length is the number of information bytes
\item constant \\
There are six forms of constants. There are fixed length
constant data forms for one, two, four and eight byte values
-(respectively, DW\_FORM\_data1, DW\_FORM\_data2, DW\_FORM\_data4,
-and DW\_FORM\_data8). There are also variable length constant
+(respectively, DW\-\_FORM\-\_data1, DW\-\_FORM\-\_data2, DW\-\_FORM\-\_data4,
+and DW\-\_FORM\-\_data8). There are also variable length constant
data forms encoded using LEB128 numbers (see below). Both
-signed (DW\_FORM\_sdata) and unsigned (DW\_FORM\_udata) variable
+signed (DW\-\_FORM\-\_sdata) and unsigned (DW\-\_FORM\-\_udata) variable
length constants are available
-The data in DW\_FORM\_data1, DW\_FORM\_data2, DW\_FORM\_data4 and
-DW\_FORM\_data8 can be anything. Depending on context, it may
+The data in DW\-\_FORM\-\_data1, DW\-\_FORM\-\_data2, DW\-\_FORM\-\_data4 and
+DW\-\_FORM\-\_data8 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
know how to interpret the bits, which if they are target
machine data (such as an integer or floating point constant)
will be in target machine byte\dash order.
-\textit{If one of the DW\_FORM\_data<n> forms is used to represent a
+\textit{If one of the DW\-\_FORM\-\_data<n> 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 DW\_FORM\_sdata or DW\_FORM\_udata for signed and
+encouraged to use DW\-\_FORM\-\_sdata or DW\-\_FORM\-\_udata for signed and
unsigned integers respectively, rather than
-DW\_FORM\_data\textless n \textgreater.}
+DW\-\_FORM\-\_data\textless n \textgreater.}
\item \livelink{chap:exprloc}{exprloc} \\
This is an unsigned LEB128 length followed by the
number of information bytes specified by the length
-(DW\_FORM\_exprloc). The information bytes contain a DWARF
+(DW\-\_FORM\-\_exprloc). The information bytes contain a DWARF
expression
(see Section \refersec{chap:dwarfexpressions})
or location description
\item flag \\
A flag is represented explicitly as a single byte of data
-(DW\_FORM\_flag) or implicitly (DW\_FORM\_flag\_present). In the
+(DW\-\_FORM\-\_flag) or implicitly (DW\-\_FORM\-\_flag\-\_present). In the
first case, if the flag has value zero, it indicates the
absence of the attribute; if the flag has a non\dash zero value,
it indicates the presence of the attribute. In the second
\item \livelink{chap:lineptr}{lineptr} \\
This is an offset into the .debug\_line section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
+(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
beginning of the .debug\_line section to the first byte of
the data making up the line number list for the compilation
unit.
\item \livelink{chap:loclistptr}{loclistptr} \\
This is an offset into the .debug\_loc section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
+(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
beginning of the .debug\_loc section to the first byte of
the data making up the location list for the compilation
unit.
\item \livelink{chap:macptr}{macptr} \\
This is an offset into the .debug\_macinfo section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
+(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
beginning of the .debug\_macinfo section to the first byte of
the data making up the macro information list for the compilation
unit.
\item \livelink{chap:rangelistptr}{rangelistptr} \\
This is an offset into the .debug\_ranges section
-(DW\_FORM\_sec\_offset).
+(DW\-\_FORM\-\_sec\-\_offset).
It consists of an
offset from the beginning of the .debug\_ranges section
to the beginning of the non\dash contiguous address ranges
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, DW\_FORM\_ref1, DW\_FORM\_ref2, DW\_FORM\_ref4,
-and DW\_FORM\_ref8). There is also an unsigned variable
+(respectively, DW\-\_FORM\-\_ref1, DW\-\_FORM\-\_ref2, DW\-\_FORM\-\_ref4,
+and DW\-\_FORM\-\_ref8). There is also an unsigned variable
length offset encoded form that uses unsigned LEB128 numbers
-(DW\_FORM\_ref\_udata). Because this type of reference is within
+(DW\-\_FORM\-\_ref\-\_udata). 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
-(DW\_FORM\_ref\_addr) is an offset from the beginning of the
+(DW\-\_FORM\-\_ref\-\_addr) is an offset from the beginning of the
.debug\_info section of the target executable or shared object;
it is relocatable in a relocatable object file and frequently
relocated in an executable file or shared object. For
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
A debugging information entry that may be referenced by
-another compilation unit using DW\_FORM\_ref\_addr must have a
+another compilation unit using DW\-\_FORM\-\_ref\-\_addr must have a
global symbolic name.
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
-type unit. This type of reference (DW\_FORM\_ref\_sig8) is the
+type unit. This type of reference (DW\-\_FORM\-\_ref\-\_sig8) is the
64\dash bit type signature
(see Section \refersec{datarep:typesignaturecomputation})
that was computed
\item string \\
A string is a sequence of contiguous non\dash null bytes followed by
one null byte. A string may be represented immediately in the
-debugging information entry itself (DW\_FORM\_string), or may
+debugging information entry itself (DW\-\_FORM\-\_string), or may
be represented as an offset into a string table contained in
-the .debug\_str section of the object file (DW\_FORM\_strp). In
-the 32\dash bit DWARF format, the representation of a DW\_FORM\_strp
+the .debug\_str section of the object file (DW\-\_FORM\-\_strp). In
+the 32\dash bit DWARF format, the representation of a DW\-\_FORM\-\_strp
value is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
it is an 8\dash byte unsigned offset
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-If the DW\_AT\_use\_UTF8 attribute is specified for the
+If the DW\-\_AT\-\_use\-\_UTF8 attribute is specified for the
compilation unit entry, string values are encoded using the
UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
\endfoot
\hline
\endlastfoot
-\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}&0x3f \\
-\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}&0x40 \\
-\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} \ddag &0x41 \\
-\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type} \ddag &0x42 \\
-\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias} \ddag &0x43 \\
-\livelink{chap:DWTAGlouser}{DW\_TAG\_lo\_user}&0x4080 \\
-\livelink{chap:DWTAGhiuser}{DW\_TAG\_hi\_user}&0xffff \\
+\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}&0x3f \\
+\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40 \\
+\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41 \\
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42 \\
+\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43 \\
+\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080 \\
+\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff \\
\end{longtable}
\ddag TAG new in DWARF Version 4
\end{centering}
\label{tab:childdeterminationencodings}
\begin{tabular}{l|l} \hline
Child determination name& Value\\ \hline
-DW\_CHILDREN\_no&0x00 \\
-DW\_CHILDREN\_yes&0x01 \\ \hline
+DW\-\_CHILDREN\-\_no&0x00 \\
+DW\-\_CHILDREN\-\_yes&0x01 \\ \hline
\end{tabular}
\end{figure}
\endfoot
\hline
\endlastfoot
-DW\_AT\_sibling&0x01&reference \\
-DW\_AT\_location&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_name&0x03&string \\
-DW\_AT\_ordering&0x09&constant \\
-DW\_AT\_byte\_size&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_bit\_offset&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_bit\_size&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_stmt\_list&0x10&\livelink{chap:lineptr}{lineptr} \\
-DW\_AT\_low\_pc&0x11&address \\
-DW\_AT\_high\_pc&0x12&address, constant \\
-DW\_AT\_language&0x13&constant \\
-DW\_AT\_discr&0x15&reference \\
-DW\_AT\_discr\_value&0x16&constant \\
-DW\_AT\_visibility&0x17&constant \\
-DW\_AT\_import&0x18&reference \\
-DW\_AT\_string\_length&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_common\_reference&0x1a&reference \\
-DW\_AT\_comp\_dir&0x1b&string \\
-DW\_AT\_const\_value&0x1c&block, constant, string \\
-DW\_AT\_containing\_type&0x1d&reference \\
-DW\_AT\_default\_value&0x1e&reference \\
-DW\_AT\_inline&0x20&constant \\
-DW\_AT\_is\_optional&0x21&flag \\
-DW\_AT\_lower\_bound&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_producer&0x25&string \\
-DW\_AT\_prototyped&0x27&flag \\
-DW\_AT\_return\_addr&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_sibling&0x01&reference \\
+DW\-\_AT\-\_location&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_name&0x03&string \\
+DW\-\_AT\-\_ordering&0x09&constant \\
+DW\-\_AT\-\_byte\-\_size&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_bit\-\_offset&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_bit\-\_size&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_stmt\-\_list&0x10&\livelink{chap:lineptr}{lineptr} \\
+DW\-\_AT\-\_low\-\_pc&0x11&address \\
+DW\-\_AT\-\_high\-\_pc&0x12&address, constant \\
+DW\-\_AT\-\_language&0x13&constant \\
+DW\-\_AT\-\_discr&0x15&reference \\
+DW\-\_AT\-\_discr\-\_value&0x16&constant \\
+DW\-\_AT\-\_visibility&0x17&constant \\
+DW\-\_AT\-\_import&0x18&reference \\
+DW\-\_AT\-\_string\-\_length&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_common\-\_reference&0x1a&reference \\
+DW\-\_AT\-\_comp\-\_dir&0x1b&string \\
+DW\-\_AT\-\_const\-\_value&0x1c&block, constant, string \\
+DW\-\_AT\-\_containing\-\_type&0x1d&reference \\
+DW\-\_AT\-\_default\-\_value&0x1e&reference \\
+DW\-\_AT\-\_inline&0x20&constant \\
+DW\-\_AT\-\_is\-\_optional&0x21&flag \\
+DW\-\_AT\-\_lower\-\_bound&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_producer&0x25&string \\
+DW\-\_AT\-\_prototyped&0x27&flag \\
+DW\-\_AT\-\_return\-\_addr&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
% FIXME: lower case , not Constant
-DW\_AT\_start\_scope&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr} \\
-DW\_AT\_bit\_stride&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_upper\_bound&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_abstract\_origin&0x31&reference \\
-DW\_AT\_accessibility&0x32&constant \\
-DW\_AT\_address\_class&0x33&constant \\
-DW\_AT\_artificial&0x34&flag \\
-DW\_AT\_base\_types&0x35&reference \\
-DW\_AT\_calling\_convention&0x36&constant \\
-DW\_AT\_count&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_data\_member\_location&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_decl\_column&0x39&constant \\
-DW\_AT\_decl\_file&0x3a&constant \\
-DW\_AT\_decl\_line&0x3b&constant \\
-DW\_AT\_declaration&0x3c&flag \\
-DW\_AT\_discr\_list&0x3d&block \\
-DW\_AT\_encoding&0x3e&constant \\
-DW\_AT\_external&0x3f&flag \\
-DW\_AT\_frame\_base&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_friend&0x41&reference \\
-DW\_AT\_identifier\_case&0x42&constant \\
-DW\_AT\_macro\_info&0x43&\livelink{chap:macptr}{macptr} \\
-DW\_AT\_namelist\_item&0x44&reference \\
-DW\_AT\_priority&0x45&reference \\
-DW\_AT\_segment&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_specification&0x47&reference \\
-DW\_AT\_static\_link&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_type&0x49&reference \\
-DW\_AT\_use\_location&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-DW\_AT\_variable\_parameter&0x4b&flag \\
-DW\_AT\_virtuality&0x4c&constant \\
-DW\_AT\_vtable\_elem\_location&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-
-
-DW\_AT\_allocated&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_associated&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_data\_location&0x50&\livelink{chap:exprloc}{exprloc} \\
-DW\_AT\_byte\_stride&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-DW\_AT\_entry\_pc&0x52&address \\
-DW\_AT\_use\_UTF8&0x53&flag \\
-DW\_AT\_extension&0x54&reference \\
-DW\_AT\_ranges&0x55&\livelink{chap:rangelistptr}{rangelistptr} \\
-DW\_AT\_trampoline&0x56&address, flag, reference, string \\
-DW\_AT\_call\_column&0x57&constant \\
-DW\_AT\_call\_file&0x58&constant \\
-DW\_AT\_call\_line&0x59&constant \\
-DW\_AT\_description&0x5a&string \\
-DW\_AT\_binary\_scale&0x5b&constant \\
-DW\_AT\_decimal\_scale&0x5c&constant \\
-DW\_AT\_small &0x5d&reference \\
-DW\_AT\_decimal\_sign&0x5e&constant \\
-DW\_AT\_digit\_count&0x5f&constant \\
-DW\_AT\_picture\_string&0x60&string \\
-DW\_AT\_mutable&0x61&flag \\
-
-
-DW\_AT\_threads\_scaled&0x62&flag \\
-DW\_AT\_explicit&0x63&flag \\
-DW\_AT\_object\_pointer&0x64&reference \\
-DW\_AT\_endianity&0x65&constant \\
-DW\_AT\_elemental&0x66&flag \\
-DW\_AT\_pure&0x67&flag \\
-DW\_AT\_recursive&0x68&flag \\
-DW\_AT\_signature \ddag &0x69&reference \\
-DW\_AT\_main\_subprogram \ddag &0x6a&flag \\
-DW\_AT\_data\_bit\_offset \ddag &0x6b&constant \\
-DW\_AT\_const\_expr \ddag &0x6c&flag \\
-DW\_AT\_enum\_class \ddag &0x6d&flag \\
-DW\_AT\_linkage\_name \ddag &0x6e&string \\
-DW\_AT\_lo\_user&0x2000 & --- \\
-DW\_AT\_hi\_user&0x3fff& --- \\
+DW\-\_AT\-\_start\-\_scope&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr} \\
+DW\-\_AT\-\_bit\-\_stride&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_upper\-\_bound&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_abstract\-\_origin&0x31&reference \\
+DW\-\_AT\-\_accessibility&0x32&constant \\
+DW\-\_AT\-\_address\-\_class&0x33&constant \\
+DW\-\_AT\-\_artificial&0x34&flag \\
+DW\-\_AT\-\_base\-\_types&0x35&reference \\
+DW\-\_AT\-\_calling\-\_convention&0x36&constant \\
+DW\-\_AT\-\_count&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_data\-\_member\-\_location&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_decl\-\_column&0x39&constant \\
+DW\-\_AT\-\_decl\-\_file&0x3a&constant \\
+DW\-\_AT\-\_decl\-\_line&0x3b&constant \\
+DW\-\_AT\-\_declaration&0x3c&flag \\
+DW\-\_AT\-\_discr\-\_list&0x3d&block \\
+DW\-\_AT\-\_encoding&0x3e&constant \\
+DW\-\_AT\-\_external&0x3f&flag \\
+DW\-\_AT\-\_frame\-\_base&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_friend&0x41&reference \\
+DW\-\_AT\-\_identifier\-\_case&0x42&constant \\
+DW\-\_AT\-\_macro\-\_info&0x43&\livelink{chap:macptr}{macptr} \\
+DW\-\_AT\-\_namelist\-\_item&0x44&reference \\
+DW\-\_AT\-\_priority&0x45&reference \\
+DW\-\_AT\-\_segment&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_specification&0x47&reference \\
+DW\-\_AT\-\_static\-\_link&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_type&0x49&reference \\
+DW\-\_AT\-\_use\-\_location&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+DW\-\_AT\-\_variable\-\_parameter&0x4b&flag \\
+DW\-\_AT\-\_virtuality&0x4c&constant \\
+DW\-\_AT\-\_vtable\-\_elem\-\_location&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+
+
+DW\-\_AT\-\_allocated&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_associated&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_data\-\_location&0x50&\livelink{chap:exprloc}{exprloc} \\
+DW\-\_AT\-\_byte\-\_stride&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference \\
+DW\-\_AT\-\_entry\-\_pc&0x52&address \\
+DW\-\_AT\-\_use\-\_UTF8&0x53&flag \\
+DW\-\_AT\-\_extension&0x54&reference \\
+DW\-\_AT\-\_ranges&0x55&\livelink{chap:rangelistptr}{rangelistptr} \\
+DW\-\_AT\-\_trampoline&0x56&address, flag, reference, string \\
+DW\-\_AT\-\_call\-\_column&0x57&constant \\
+DW\-\_AT\-\_call\-\_file&0x58&constant \\
+DW\-\_AT\-\_call\-\_line&0x59&constant \\
+DW\-\_AT\-\_description&0x5a&string \\
+DW\-\_AT\-\_binary\-\_scale&0x5b&constant \\
+DW\-\_AT\-\_decimal\-\_scale&0x5c&constant \\
+DW\-\_AT\-\_small &0x5d&reference \\
+DW\-\_AT\-\_decimal\-\_sign&0x5e&constant \\
+DW\-\_AT\-\_digit\-\_count&0x5f&constant \\
+DW\-\_AT\-\_picture\-\_string&0x60&string \\
+DW\-\_AT\-\_mutable&0x61&flag \\
+
+
+DW\-\_AT\-\_threads\-\_scaled&0x62&flag \\
+DW\-\_AT\-\_explicit&0x63&flag \\
+DW\-\_AT\-\_object\-\_pointer&0x64&reference \\
+DW\-\_AT\-\_endianity&0x65&constant \\
+DW\-\_AT\-\_elemental&0x66&flag \\
+DW\-\_AT\-\_pure&0x67&flag \\
+DW\-\_AT\-\_recursive&0x68&flag \\
+DW\-\_AT\-\_signature \ddag &0x69&reference \\
+DW\-\_AT\-\_main\-\_subprogram \ddag &0x6a&flag \\
+DW\-\_AT\-\_data\-\_bit\-\_offset \ddag &0x6b&constant \\
+DW\-\_AT\-\_const\-\_expr \ddag &0x6c&flag \\
+DW\-\_AT\-\_enum\-\_class \ddag &0x6d&flag \\
+DW\-\_AT\-\_linkage\-\_name \ddag &0x6e&string \\
+DW\-\_AT\-\_lo\-\_user&0x2000 & --- \\
+DW\-\_AT\-\_hi\-\_user&0x3fff& --- \\
\end{longtable}
\ddag Attribute new in DWARF Version 4
\endfoot
\hline
\endlastfoot
-DW\_FORM\_addr&0x01&address \\
-DW\_FORM\_block2&0x03&block \\
-DW\_FORM\_block4&0x04&block \\
-DW\_FORM\_data2&0x05&constant \\
-DW\_FORM\_data4&0x06&constant \\
-DW\_FORM\_data8&0x07&constant \\
-DW\_FORM\_string&0x08&string \\
-DW\_FORM\_block&0x09&block \\
-DW\_FORM\_block1&0x0a&block \\
-DW\_FORM\_data1&0x0b&constant \\
-DW\_FORM\_flag&0x0c&flag \\
-DW\_FORM\_sdata&0x0d&constant \\
-DW\_FORM\_strp&0x0e&string \\
-DW\_FORM\_udata&0x0f&constant \\
-DW\_FORM\_ref\_addr&0x10&reference \\
-DW\_FORM\_ref1&0x11&reference \\
-DW\_FORM\_ref2&0x12&reference \\
-DW\_FORM\_ref4&0x13&reference \\
-DW\_FORM\_ref8&0x14&reference \\
-DW\_FORM\_ref\_udata&0x15&reference \\
-DW\_FORM\_indirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-DW\_FORM\_sec\_offset \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
-DW\_FORM\_exprloc \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
-DW\_FORM\_flag\_present \ddag &0x19&flag \\
-DW\_FORM\_ref\_sig8 \ddag &0x20&reference \\
+DW\-\_FORM\-\_addr&0x01&address \\
+DW\-\_FORM\-\_block2&0x03&block \\
+DW\-\_FORM\-\_block4&0x04&block \\
+DW\-\_FORM\-\_data2&0x05&constant \\
+DW\-\_FORM\-\_data4&0x06&constant \\
+DW\-\_FORM\-\_data8&0x07&constant \\
+DW\-\_FORM\-\_string&0x08&string \\
+DW\-\_FORM\-\_block&0x09&block \\
+DW\-\_FORM\-\_block1&0x0a&block \\
+DW\-\_FORM\-\_data1&0x0b&constant \\
+DW\-\_FORM\-\_flag&0x0c&flag \\
+DW\-\_FORM\-\_sdata&0x0d&constant \\
+DW\-\_FORM\-\_strp&0x0e&string \\
+DW\-\_FORM\-\_udata&0x0f&constant \\
+DW\-\_FORM\-\_ref\-\_addr&0x10&reference \\
+DW\-\_FORM\-\_ref1&0x11&reference \\
+DW\-\_FORM\-\_ref2&0x12&reference \\
+DW\-\_FORM\-\_ref4&0x13&reference \\
+DW\-\_FORM\-\_ref8&0x14&reference \\
+DW\-\_FORM\-\_ref\-\_udata&0x15&reference \\
+DW\-\_FORM\-\_indirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
+DW\-\_FORM\-\_sec\-\_offset \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
+DW\-\_FORM\-\_exprloc \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
+DW\-\_FORM\-\_flag\-\_present \ddag &0x19&flag \\
+DW\-\_FORM\-\_ref\-\_sig8 \ddag &0x20&reference \\
\end{longtable}
\ddag FORM new in DWARF Version 4
\hline
\endlastfoot
-DW\_OP\_addr&0x03&1 & constant address \\
+DW\-\_OP\-\_addr&0x03&1 & constant address \\
& & &(size target specific) \\
-DW\_OP\_deref&0x06&0 & \\
-
-
-DW\_OP\_const1u&0x08&1&1\dash byte constant \\
-DW\_OP\_const1s&0x09&1&1\dash byte constant \\
-DW\_OP\_const2u&0x0a&1&2\dash byte constant \\
-DW\_OP\_const2s&0x0b&1&2\dash byte constant \\
-DW\_OP\_const4u&0x0c&1&4\dash byte constant \\
-DW\_OP\_const4s&0x0d&1&4\dash byte constant \\
-DW\_OP\_const8u&0x0e&1&8\dash byte constant \\
-DW\_OP\_const8s&0x0f&1&8\dash byte constant \\
-DW\_OP\_constu&0x10&1&ULEB128 constant \\
-DW\_OP\_consts&0x11&1&SLEB128 constant \\
-DW\_OP\_dup&0x12&0 & \\
-DW\_OP\_drop&0x13&0 & \\
-DW\_OP\_over&0x14&0 & \\
-DW\_OP\_pick&0x15&1&1\dash byte stack index \\
-DW\_OP\_swap&0x16&0 & \\
-DW\_OP\_rot&0x17&0 & \\
-DW\_OP\_xderef&0x18&0 & \\
-DW\_OP\_abs&0x19&0 & \\
-DW\_OP\_and&0x1a&0 & \\
-DW\_OP\_div&0x1b&0 & \\
-
-
-
-DW\_OP\_minus&0x1c&0 & \\
-DW\_OP\_mod&0x1d&0 & \\
-DW\_OP\_mul&0x1e&0 & \\
-DW\_OP\_neg&0x1f&0 & \\
-DW\_OP\_not&0x20&0 & \\
-DW\_OP\_or&0x21&0 & \\
-DW\_OP\_plus&0x22&0 & \\
-DW\_OP\_plus\_uconst&0x23&1&ULEB128 addend \\
-DW\_OP\_shl&0x24&0 & \\
-DW\_OP\_shr&0x25&0 & \\
-DW\_OP\_shra&0x26&0 & \\
-DW\_OP\_xor&0x27&0 & \\
-DW\_OP\_skip&0x2f&1&signed 2\dash byte constant \\
-DW\_OP\_bra&0x28&1 & signed 2\dash byte constant \\
-DW\_OP\_eq&0x29&0 & \\
-DW\_OP\_ge&0x2a&0 & \\
-DW\_OP\_gt&0x2b&0 & \\
-DW\_OP\_le&0x2c&0 & \\
-DW\_OP\_lt&0x2d&0 & \\
-DW\_OP\_ne&0x2e&0 & \\ \hline
-
-
-
-DW\_OP\_lit0&0x30 & 0 & \\
-
-DW\_OP\_lit1&0x31 & 0& literals 0 .. 31 = \\
-\ldots & & & (DW\_OP\_lit0 + literal) \\
-DW\_OP\_lit31&0x4f & 0 & \\ \hline
-
-DW\_OP\_reg0 & 0x50 & 0 & \\
-DW\_OP\_reg1 & 0x51 & 0® 0 .. 31 = \\
-\ldots & & & (DW\_OP\_reg0 + regnum) \\
-DW\_OP\_reg31 & 0x6f & 0 & \\ \hline
-
-DW\_OP\_breg0 & 0x70 &1 & SLEB128 offset \\
-DW\_OP\_breg1 & 0x71 & 1 &base register 0 .. 31 = \\
-... & & &(DW\_OP\_breg0 + regnum) \\
-DW\_OP\_breg31 & 0x8f & 1 & \\ \hline
-
-DW\_OP\_regx & 0x90 &1&ULEB128 register \\
-DW\_OP\_fbreg & 0x91&1&SLEB128 offset \\
-DW\_OP\_bregx & 0x92&2 &ULEB128 register followed \\
+DW\-\_OP\-\_deref&0x06&0 & \\
+
+
+DW\-\_OP\-\_const1u&0x08&1&1\dash byte constant \\
+DW\-\_OP\-\_const1s&0x09&1&1\dash byte constant \\
+DW\-\_OP\-\_const2u&0x0a&1&2\dash byte constant \\
+DW\-\_OP\-\_const2s&0x0b&1&2\dash byte constant \\
+DW\-\_OP\-\_const4u&0x0c&1&4\dash byte constant \\
+DW\-\_OP\-\_const4s&0x0d&1&4\dash byte constant \\
+DW\-\_OP\-\_const8u&0x0e&1&8\dash byte constant \\
+DW\-\_OP\-\_const8s&0x0f&1&8\dash byte constant \\
+DW\-\_OP\-\_constu&0x10&1&ULEB128 constant \\
+DW\-\_OP\-\_consts&0x11&1&SLEB128 constant \\
+DW\-\_OP\-\_dup&0x12&0 & \\
+DW\-\_OP\-\_drop&0x13&0 & \\
+DW\-\_OP\-\_over&0x14&0 & \\
+DW\-\_OP\-\_pick&0x15&1&1\dash byte stack index \\
+DW\-\_OP\-\_swap&0x16&0 & \\
+DW\-\_OP\-\_rot&0x17&0 & \\
+DW\-\_OP\-\_xderef&0x18&0 & \\
+DW\-\_OP\-\_abs&0x19&0 & \\
+DW\-\_OP\-\_and&0x1a&0 & \\
+DW\-\_OP\-\_div&0x1b&0 & \\
+
+
+
+DW\-\_OP\-\_minus&0x1c&0 & \\
+DW\-\_OP\-\_mod&0x1d&0 & \\
+DW\-\_OP\-\_mul&0x1e&0 & \\
+DW\-\_OP\-\_neg&0x1f&0 & \\
+DW\-\_OP\-\_not&0x20&0 & \\
+DW\-\_OP\-\_or&0x21&0 & \\
+DW\-\_OP\-\_plus&0x22&0 & \\
+DW\-\_OP\-\_plus\-\_uconst&0x23&1&ULEB128 addend \\
+DW\-\_OP\-\_shl&0x24&0 & \\
+DW\-\_OP\-\_shr&0x25&0 & \\
+DW\-\_OP\-\_shra&0x26&0 & \\
+DW\-\_OP\-\_xor&0x27&0 & \\
+DW\-\_OP\-\_skip&0x2f&1&signed 2\dash byte constant \\
+DW\-\_OP\-\_bra&0x28&1 & signed 2\dash byte constant \\
+DW\-\_OP\-\_eq&0x29&0 & \\
+DW\-\_OP\-\_ge&0x2a&0 & \\
+DW\-\_OP\-\_gt&0x2b&0 & \\
+DW\-\_OP\-\_le&0x2c&0 & \\
+DW\-\_OP\-\_lt&0x2d&0 & \\
+DW\-\_OP\-\_ne&0x2e&0 & \\ \hline
+
+
+
+DW\-\_OP\-\_lit0&0x30 & 0 & \\
+
+DW\-\_OP\-\_lit1&0x31 & 0& literals 0 .. 31 = \\
+\ldots & & & (DW\-\_OP\-\_lit0 + literal) \\
+DW\-\_OP\-\_lit31&0x4f & 0 & \\ \hline
+
+DW\-\_OP\-\_reg0 & 0x50 & 0 & \\
+DW\-\_OP\-\_reg1 & 0x51 & 0® 0 .. 31 = \\
+\ldots & & & (DW\-\_OP\-\_reg0 + regnum) \\
+DW\-\_OP\-\_reg31 & 0x6f & 0 & \\ \hline
+
+DW\-\_OP\-\_breg0 & 0x70 &1 & SLEB128 offset \\
+DW\-\_OP\-\_breg1 & 0x71 & 1 &base register 0 .. 31 = \\
+... & & &(DW\-\_OP\-\_breg0 + regnum) \\
+DW\-\_OP\-\_breg31 & 0x8f & 1 & \\ \hline
+
+DW\-\_OP\-\_regx & 0x90 &1&ULEB128 register \\
+DW\-\_OP\-\_fbreg & 0x91&1&SLEB128 offset \\
+DW\-\_OP\-\_bregx & 0x92&2 &ULEB128 register followed \\
& & & by SLEB128 offset \\
-DW\_OP\_piece & 0x93 &1& ULEB128 size of piece addressed \\
-DW\_OP\_deref\_size & 0x94 &1& 1-byte size of data retrieved \\
-DW\_OP\_xderef\_size & 0x95&1&1-byte size of data retrieved \\
-DW\_OP\_nop & 0x96 &0& \\
+DW\-\_OP\-\_piece & 0x93 &1& ULEB128 size of piece addressed \\
+DW\-\_OP\-\_deref\-\_size & 0x94 &1& 1-byte size of data retrieved \\
+DW\-\_OP\-\_xderef\-\_size & 0x95&1&1-byte size of data retrieved \\
+DW\-\_OP\-\_nop & 0x96 &0& \\
-DW\_OP\_push\_object\_address&0x97&0 & \\
-DW\_OP\_call2&0x98&1& 2\dash byte offset of DIE \\
-DW\_OP\_call4&0x99&1& 4\dash byte offset of DIE \\
-DW\_OP\_call\_ref&0x9a&1& 4\dash\ or 8\dash byte\\
+DW\-\_OP\-\_push\-\_object\-\_address&0x97&0 & \\
+DW\-\_OP\-\_call2&0x98&1& 2\dash byte offset of DIE \\
+DW\-\_OP\-\_call4&0x99&1& 4\dash byte offset of DIE \\
+DW\-\_OP\-\_call\-\_ref&0x9a&1& 4\dash\ or 8\dash byte\\
&&& offset of DIE \\
-DW\_OP\_form\_tls\_address&0x9b &0& \\
-DW\_OP\_call\_frame\_cfa &0x9c &0& \\
-DW\_OP\_bit\_piece&0x9d &2&ULEB128 size followed by \\
+DW\-\_OP\-\_form\-\_tls\-\_address&0x9b &0& \\
+DW\-\_OP\-\_call\-\_frame\-\_cfa &0x9c &0& \\
+DW\-\_OP\-\_bit\-\_piece&0x9d &2&ULEB128 size followed by \\
&&&ULEB128 offset\\
-DW\_OP\_implicit\_value&0x9e &2&ULEB128 size followed by \\
+DW\-\_OP\-\_implicit\-\_value&0x9e &2&ULEB128 size followed by \\
&&&block of that size\\
-DW\_OP\_stack\_value\_cfa &0x9f &0& \\
-DW\_OP\_lo\_user\_cfa &0xe0 && \\
-DW\_OP\_hi\_user\_cfa &0xff && \\
+DW\-\_OP\-\_stack\-\_value\-\_cfa &0x9f &0& \\
+DW\-\_OP\-\_lo\-\_user\-\_cfa &0xe0 && \\
+DW\-\_OP\-\_hi\-\_user\-\_cfa &0xff && \\
\end{longtable}
\end{centering}
\section{Base Type Attribute Encodings}
\label{datarep:basetypeattributeencodings}
-The encodings of the constants used in the DW\_AT\_encoding
+The encodings of the constants used in the DW\-\_AT\-\_encoding
attribute are given in
Table \refersec{tab:basetypeencodingvalues}
\hline
\endlastfoot
-DW\_ATE\_address&0x01 \\
-DW\_ATE\_boolean&0x02 \\
-DW\_ATE\_complex\_float&0x03 \\
-DW\_ATE\_float&0x04 \\
-DW\_ATE\_signed&0x05 \\
-DW\_ATE\_signed\_char&0x06 \\
-DW\_ATE\_unsigned&0x07 \\
-DW\_ATE\_unsigned\_char&0x08 \\
-DW\_ATE\_imaginary\_float&0x09 \\
-DW\_ATE\_packed\_decimal&0x0a \\
-DW\_ATE\_numeric\_string&0x0b \\
-DW\_ATE\_edited&0x0c \\
-DW\_ATE\_signed\_fixed&0x0d \\
-DW\_ATE\_unsigned\_fixed&0x0e \\
-DW\_ATE\_decimal\_float & 0x0f \\
-DW\_ATE\_UTF \ddag & 0x10 \\
-DW\_ATE\_lo\_user & 0x80 \\
-DW\_ATE\_hi\_user & 0xff \\
+DW\-\_ATE\-\_address&0x01 \\
+DW\-\_ATE\-\_boolean&0x02 \\
+DW\-\_ATE\-\_complex\-\_float&0x03 \\
+DW\-\_ATE\-\_float&0x04 \\
+DW\-\_ATE\-\_signed&0x05 \\
+DW\-\_ATE\-\_signed\-\_char&0x06 \\
+DW\-\_ATE\-\_unsigned&0x07 \\
+DW\-\_ATE\-\_unsigned\-\_char&0x08 \\
+DW\-\_ATE\-\_imaginary\-\_float&0x09 \\
+DW\-\_ATE\-\_packed\-\_decimal&0x0a \\
+DW\-\_ATE\-\_numeric\-\_string&0x0b \\
+DW\-\_ATE\-\_edited&0x0c \\
+DW\-\_ATE\-\_signed\-\_fixed&0x0d \\
+DW\-\_ATE\-\_unsigned\-\_fixed&0x0e \\
+DW\-\_ATE\-\_decimal\-\_float & 0x0f \\
+DW\-\_ATE\-\_UTF \ddag & 0x10 \\
+DW\-\_ATE\-\_lo\-\_user & 0x80 \\
+DW\-\_ATE\-\_hi\-\_user & 0xff \\
\end{longtable}
\ddag Base type encoding new in DWARF Version 4
The encodings of the constants used in the
-DW\_AT\_decimal\_sign attribute
+DW\-\_AT\-\_decimal\-\_sign attribute
are given in
Table \refersec{tab:decimalsignencodings}.
\hline
\endlastfoot
-DW\_DS\_unsigned & 0x01 \\
-DW\_DS\_leading\_overpunch & 0x02 \\
-DW\_DS\_trailing\_overpunch & 0x03 \\
-DW\_DS\_leading\_separate & 0x04 \\
-DW\_DS\_trailing\_separate & 0x05 \\
+DW\-\_DS\-\_unsigned & 0x01 \\
+DW\-\_DS\-\_leading\-\_overpunch & 0x02 \\
+DW\-\_DS\-\_trailing\-\_overpunch & 0x03 \\
+DW\-\_DS\-\_leading\-\_separate & 0x04 \\
+DW\-\_DS\-\_trailing\-\_separate & 0x05 \\
\end{longtable}
\end{centering}
The encodings of the constants used in the
-DW\_AT\_endianity attribute are given in
+DW\-\_AT\-\_endianity attribute are given in
Table \refersec{tab:endianityencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_END\_default & 0x00 \\
-DW\_END\_big & 0x01 \\
-DW\_END\_little & 0x02 \\
-DW\_END\_lo\_user & 0x40 \\
-DW\_END\_hi\_user & 0xff \\
+DW\-\_END\-\_default & 0x00 \\
+DW\-\_END\-\_big & 0x01 \\
+DW\-\_END\-\_little & 0x02 \\
+DW\-\_END\-\_lo\-\_user & 0x40 \\
+DW\-\_END\-\_hi\-\_user & 0xff \\
\end{longtable}
\end{centering}
\section{Accessibility Codes}
\label{datarep:accessibilitycodes}
-The encodings of the constants used in the DW\_AT\_accessibility
+The encodings of the constants used in the DW\-\_AT\-\_accessibility
attribute are given in
Table \refersec{tab:accessibilityencodings}.
\hline
\endlastfoot
-DW\_ACCESS\_public&0x01 \\
-DW\_ACCESS\_protected&0x02 \\
-DW\_ACCESS\_private&0x03 \\
+DW\-\_ACCESS\-\_public&0x01 \\
+DW\-\_ACCESS\-\_protected&0x02 \\
+DW\-\_ACCESS\-\_private&0x03 \\
\end{longtable}
\end{centering}
\section{Visibility Codes}
\label{datarep:visibilitycodes}
The encodings of the constants used in the
-DW\_AT\_visibility attribute are given in
+DW\-\_AT\-\_visibility attribute are given in
Table \refersec{tab:visibilityencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_VIS\_local&0x01 \\
-DW\_VIS\_exported&0x02 \\
-DW\_VIS\_qualified&0x03 \\
+DW\-\_VIS\-\_local&0x01 \\
+DW\-\_VIS\-\_exported&0x02 \\
+DW\-\_VIS\-\_qualified&0x03 \\
\end{longtable}
\end{centering}
\label{datarep:vitualitycodes}
The encodings of the constants used in the
-DW\_AT\_virtuality attribute are given in
+DW\-\_AT\-\_virtuality attribute are given in
Table \refersec{tab:virtualityencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_VIRTUALITY\_none&0x00 \\
-DW\_VIRTUALITY\_virtual&0x01 \\
-DW\_VIRTUALITY\_pure\_virtual&0x02 \\
+DW\-\_VIRTUALITY\-\_none&0x00 \\
+DW\-\_VIRTUALITY\-\_virtual&0x01 \\
+DW\-\_VIRTUALITY\-\_pure\-\_virtual&0x02 \\
\end{centering}
The value
-DW\_VIRTUALITY\_none is equivalent to the absence of the
-DW\_AT\_virtuality
+DW\-\_VIRTUALITY\-\_none is equivalent to the absence of the
+DW\-\_AT\-\_virtuality
attribute.
\section{Source Languages}
\label{datarep:sourcelanguages}
-The encodings of the constants used in the DW\_AT\_language
+The encodings of the constants used in the DW\-\_AT\-\_language
attribute are given in
Table \refersec{tab:languageencodings}.
Names marked with
languages they represent are not well supported.
Table \refersec{tab:languageencodings}
also shows the default lower bound, if any, assumed for
-an omitted DW\_AT\_lower\_bound attribute in the context of a
-\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type} debugging information entry for each
+an omitted DW\-\_AT\-\_lower\-\_bound attribute in the context of a
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} debugging information entry for each
defined language.
\begin{centering}
\hline
\endlastfoot
-DW\_LANG\_C89&0x0001&0 \\
-DW\_LANG\_C&0x0002&0 \\
-DW\_LANG\_Ada83 \dag &0x0003&1 \\
-DW\_LANG\_C\_plus\_plus &0x0004&0 \\
-DW\_LANG\_Cobol74 \dag &0x0005&1 \\
-DW\_LANG\_Cobol85 \dag &0x0006&1 \\
-DW\_LANG\_Fortran77&0x0007&1 \\
-DW\_LANG\_Fortran90&0x0008&1 \\
-DW\_LANG\_Pascal83&0x0009&1 \\
-DW\_LANG\_Modula2&0x000a&1 \\
-DW\_LANG\_Java&0x000b&0 \\
-DW\_LANG\_C99&0x000c&0 \\
-DW\_LANG\_Ada95 \dag &0x000d&1 \\
-DW\_LANG\_Fortran95 &0x000e&1 \\
-DW\_LANG\_PLI \dag &0x000f&1 \\
-DW\_LANG\_ObjC&0x0010&0 \\
-DW\_LANG\_ObjC\_plus\_plus&0x0011&0 \\
-DW\_LANG\_UPC&0x0012&0 \\
-DW\_LANG\_D&0x0013&0 \\
-DW\_LANG\_Python \dag &0x0014&0 \\
-DW\_LANG\_lo\_user&0x8000 & \\
-DW\_LANG\_hi\_user&0xffff & \\
+DW\-\_LANG\-\_C89&0x0001&0 \\
+DW\-\_LANG\-\_C&0x0002&0 \\
+DW\-\_LANG\-\_Ada83 \dag &0x0003&1 \\
+DW\-\_LANG\-\_C\-\_plus\-\_plus &0x0004&0 \\
+DW\-\_LANG\-\_Cobol74 \dag &0x0005&1 \\
+DW\-\_LANG\-\_Cobol85 \dag &0x0006&1 \\
+DW\-\_LANG\-\_Fortran77&0x0007&1 \\
+DW\-\_LANG\-\_Fortran90&0x0008&1 \\
+DW\-\_LANG\-\_Pascal83&0x0009&1 \\
+DW\-\_LANG\-\_Modula2&0x000a&1 \\
+DW\-\_LANG\-\_Java&0x000b&0 \\
+DW\-\_LANG\-\_C99&0x000c&0 \\
+DW\-\_LANG\-\_Ada95 \dag &0x000d&1 \\
+DW\-\_LANG\-\_Fortran95 &0x000e&1 \\
+DW\-\_LANG\-\_PLI \dag &0x000f&1 \\
+DW\-\_LANG\-\_ObjC&0x0010&0 \\
+DW\-\_LANG\-\_ObjC\-\_plus\-\_plus&0x0011&0 \\
+DW\-\_LANG\-\_UPC&0x0012&0 \\
+DW\-\_LANG\-\_D&0x0013&0 \\
+DW\-\_LANG\-\_Python \dag &0x0014&0 \\
+DW\-\_LANG\-\_lo\-\_user&0x8000 & \\
+DW\-\_LANG\-\_hi\-\_user&0xffff & \\
\end{longtable}
\dag See text
\label{datarep:addressclassencodings}
The value of the common address class encoding
-DW\_ADDR\_none is 0.
+DW\-\_ADDR\-\_none is 0.
\section{Identifier Case}
\label{datarep:identifiercase}
The encodings of the constants used in the
-DW\_AT\_identifier\_case attribute are given in
+DW\-\_AT\-\_identifier\-\_case attribute are given in
Table \refersec{tab:identifiercaseencodings}.
\begin{centering}
\endfoot
\hline
\endlastfoot
-DW\_ID\_case\_sensitive&0x00 \\
-DW\_ID\_up\_case&0x01 \\
-DW\_ID\_down\_case&0x02 \\
-DW\_ID\_case\_insensitive&0x03 \\
+DW\-\_ID\-\_case\-\_sensitive&0x00 \\
+DW\-\_ID\-\_up\-\_case&0x01 \\
+DW\-\_ID\-\_down\-\_case&0x02 \\
+DW\-\_ID\-\_case\-\_insensitive&0x03 \\
\end{longtable}
\end{centering}
\section{Calling Convention Encodings}
\label{datarep:callingconventionencodings}
The encodings of the constants used in the
-DW\_AT\_calling\_convention attribute are given in
+DW\-\_AT\-\_calling\-\_convention attribute are given in
Table \refersec{tab:callingconventionencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_CC\_normal&0x01 \\
-DW\_CC\_program&0x02 \\
-DW\_CC\_nocall&0x03 \\
-DW\_CC\_lo\_user&0x40 \\
-DW\_CC\_hi\_user&0xff \\
+DW\-\_CC\-\_normal&0x01 \\
+DW\-\_CC\-\_program&0x02 \\
+DW\-\_CC\-\_nocall&0x03 \\
+DW\-\_CC\-\_lo\-\_user&0x40 \\
+DW\-\_CC\-\_hi\-\_user&0xff \\
\end{longtable}
\end{centering}
\label{datarep:inlinecodes}
The encodings of the constants used in the
-DW\_AT\_inline attribute are given in
+DW\-\_AT\-\_inline attribute are given in
Table \refersec{tab:inlineencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_INL\_not\_inlined&0x00 \\
-DW\_INL\_inlined&0x01 \\
-DW\_INL\_declared\_not\_inlined&0x02 \\
-DW\_INL\_declared\_inlined&0x03 \\
+DW\-\_INL\-\_not\-\_inlined&0x00 \\
+DW\-\_INL\-\_inlined&0x01 \\
+DW\-\_INL\-\_declared\-\_not\-\_inlined&0x02 \\
+DW\-\_INL\-\_declared\-\_inlined&0x03 \\
\end{longtable}
\end{centering}
\label{datarep:arrayordering}
The encodings of the constants used in the
-DW\_AT\_ordering attribute are given in
+DW\-\_AT\-\_ordering attribute are given in
Table \refersec{tab:orderingencodings}.
\begin{centering}
\hline
\endlastfoot
-DW\_ORD\_row\_major&0x00 \\
-DW\_ORD\_col\_major&0x01 \\
+DW\-\_ORD\-\_row\-\_major&0x00 \\
+DW\-\_ORD\-\_col\-\_major&0x01 \\
\end{longtable}
\end{centering}
\label{datarep:discriminantlists}
The descriptors used in the
-DW\_AT\_discr\_list attribute are
+DW\-\_AT\-\_discr\-\_list attribute are
encoded as 1\dash byte constants. The
defined values are given in
Table \refersec{tab:discriminantdescriptorencodings}.
\hline
\endlastfoot
-DW\_DSC\_label&0x00 \\
-DW\_DSC\_range&0x01 \\
+DW\-\_DSC\-\_label&0x00 \\
+DW\-\_DSC\-\_range&0x01 \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-DW\_LNS\_copy&0x01 \\
-DW\_LNS\_advance\_pc&0x02 \\
-DW\_LNS\_advance\_line&0x03 \\
-DW\_LNS\_set\_file&0x04 \\
-DW\_LNS\_set\_column&0x05 \\
-DW\_LNS\_negate\_stmt&0x06 \\
-DW\_LNS\_set\_basic\_block&0x07 \\
-DW\_LNS\_const\_add\_pc*0x08 \\
-DW\_LNS\_fixed\_advance\_pc&0x09 \\
-DW\_LNS\_set\_prologue\_end&0x0a \\
-DW\_LNS\_set\_epilogue\_begin&0x0b \\
-DW\_LNS\_set\_isa&0x0c \\
+DW\-\_LNS\-\_copy&0x01 \\
+DW\-\_LNS\-\_advance\-\_pc&0x02 \\
+DW\-\_LNS\-\_advance\-\_line&0x03 \\
+DW\-\_LNS\-\_set\-\_file&0x04 \\
+DW\-\_LNS\-\_set\-\_column&0x05 \\
+DW\-\_LNS\-\_negate\-\_stmt&0x06 \\
+DW\-\_LNS\-\_set\-\_basic\-\_block&0x07 \\
+DW\-\_LNS\-\_const\-\_add\-\_pc*0x08 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x09 \\
+DW\-\_LNS\-\_set\-\_prologue\-\_end&0x0a \\
+DW\-\_LNS\-\_set\-\_epilogue\-\_begin&0x0b \\
+DW\-\_LNS\-\_set\-\_isa&0x0c \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-DW\_LNE\_end\_sequence&0x01 \\
-DW\_LNE\_set\_address&0x02\\
-DW\_LNE\_define\_file&0x03\\
-DW\_LNE\_set\_discriminator \ddag &0x04 \\
-DW\_LNE\_lo\_user&0x80 \\
-DW\_LNE\_hi\_user&0xff \\
+DW\-\_LNE\-\_end\-\_sequence&0x01 \\
+DW\-\_LNE\-\_set\-\_address&0x02\\
+DW\-\_LNE\-\_define\-\_file&0x03\\
+DW\-\_LNE\-\_set\-\_discriminator \ddag &0x04 \\
+DW\-\_LNE\-\_lo\-\_user&0x80 \\
+DW\-\_LNE\-\_hi\-\_user&0xff \\
\end{longtable}
\ddag Extended opcode new in DWARF Version 4.
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 DW\_MACINFO\_vendor\_ext entry.
+numbers as are the constants in a DW\-\_MACINFO\-\_vendor\-\_ext entry.
The macinfo type is encoded as a single byte.
The encodings are given in
\hline
\endlastfoot
-DW\_MACINFO\_define&0x01 \\
-DW\_MACINFO\_undef&0x02 \\
-DW\_MACINFO\_start\_file&0x03 \\
-DW\_MACINFO\_end\_file&0x04 \\
-DW\_MACINFO\_vendor\_ext&0xff \\
+DW\-\_MACINFO\-\_define&0x01 \\
+DW\-\_MACINFO\-\_undef&0x02 \\
+DW\-\_MACINFO\-\_start\-\_file&0x03 \\
+DW\-\_MACINFO\-\_end\-\_file&0x04 \\
+DW\-\_MACINFO\-\_vendor\-\_ext&0xff \\
\end{longtable}
\end{centering}
\hline
\endlastfoot
-DW\_CFA\_advance\_loc&0x1&delta & \\
-DW\_CFA\_offset&0x2®ister&ULEB128 offset \\
-DW\_CFA\_restore&0x3®ister & & \\
-DW\_CFA\_nop&0&0 & & \\
-DW\_CFA\_set\_loc&0&0x01&address & \\
-DW\_CFA\_advance\_loc1&0&0x02&1\dash byte delta & \\
-DW\_CFA\_advance\_loc2&0&0x03&2\dash byte delta & \\
-DW\_CFA\_advance\_loc4&0&0x04&4\dash byte delta & \\
-DW\_CFA\_offset\_extended&0&0x05&ULEB128 register&ULEB128 offset \\
-DW\_CFA\_restore\_extended&0&0x06&ULEB128 register & \\
-DW\_CFA\_undefined&0&0x07&ULEB128 register & \\
-DW\_CFA\_same\_value&0&0x08 &ULEB128 register & \\
-DW\_CFA\_register&0&0x09&ULEB128 register &ULEB128 offset \\
-DW\_CFA\_remember\_state&0&0x0a & & \\
-DW\_CFA\_restore\_state&0&0x0b & & \\
-DW\_CFA\_def\_cfa&0&0x0c &ULEB128 register&ULEB128 offset \\
-DW\_CFA\_def\_cfa\_register&0&0x0d&ULEB128 register & \\
-DW\_CFA\_def\_cfa\_offset&0&0x0e &ULEB128 offset & \\
-DW\_CFA\_def\_cfa\_expression&0&0x0f &BLOCK \\
-DW\_CFA\_expression&0&0x10&ULEB128 register & BLOCK \\
-
-DW\_CFA\_offset\_extended\_sf&0&0x11&ULEB128 register&SLEB128 offset \\
-DW\_CFA\_def\_cfa\_sf&0&0x12&ULEB128 register&SLEB128 offset \\
-DW\_CFA\_def\_cfa\_offset\_sf&0&0x13&SLEB128 offset & \\
-DW\_CFA\_val\_offset&0&0x14&ULEB128&ULEB128 \\
-DW\_CFA\_val\_offset\_sf&0&0x15&ULEB128&SLEB128 \\
-DW\_CFA\_val\_expression&0&0x16&ULEB128&BLOCK \\
-DW\_CFA\_lo\_user&0&0x1c & & \\
-DW\_CFA\_hi\_user&0&0x3f & & \\
+DW\-\_CFA\-\_advance\-\_loc&0x1&delta & \\
+DW\-\_CFA\-\_offset&0x2®ister&ULEB128 offset \\
+DW\-\_CFA\-\_restore&0x3®ister & & \\
+DW\-\_CFA\-\_nop&0&0 & & \\
+DW\-\_CFA\-\_set\-\_loc&0&0x01&address & \\
+DW\-\_CFA\-\_advance\-\_loc1&0&0x02&1\dash byte delta & \\
+DW\-\_CFA\-\_advance\-\_loc2&0&0x03&2\dash byte delta & \\
+DW\-\_CFA\-\_advance\-\_loc4&0&0x04&4\dash byte delta & \\
+DW\-\_CFA\-\_offset\-\_extended&0&0x05&ULEB128 register&ULEB128 offset \\
+DW\-\_CFA\-\_restore\-\_extended&0&0x06&ULEB128 register & \\
+DW\-\_CFA\-\_undefined&0&0x07&ULEB128 register & \\
+DW\-\_CFA\-\_same\-\_value&0&0x08 &ULEB128 register & \\
+DW\-\_CFA\-\_register&0&0x09&ULEB128 register &ULEB128 offset \\
+DW\-\_CFA\-\_remember\-\_state&0&0x0a & & \\
+DW\-\_CFA\-\_restore\-\_state&0&0x0b & & \\
+DW\-\_CFA\-\_def\-\_cfa&0&0x0c &ULEB128 register&ULEB128 offset \\
+DW\-\_CFA\-\_def\-\_cfa\-\_register&0&0x0d&ULEB128 register & \\
+DW\-\_CFA\-\_def\-\_cfa\-\_offset&0&0x0e &ULEB128 offset & \\
+DW\-\_CFA\-\_def\-\_cfa\-\_expression&0&0x0f &BLOCK \\
+DW\-\_CFA\-\_expression&0&0x10&ULEB128 register & BLOCK \\
+
+DW\-\_CFA\-\_offset\-\_extended\-\_sf&0&0x11&ULEB128 register&SLEB128 offset \\
+DW\-\_CFA\-\_def\-\_cfa\-\_sf&0&0x12&ULEB128 register&SLEB128 offset \\
+DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf&0&0x13&SLEB128 offset & \\
+DW\-\_CFA\-\_val\-\_offset&0&0x14&ULEB128&ULEB128 \\
+DW\-\_CFA\-\_val\-\_offset\-\_sf&0&0x15&ULEB128&SLEB128 \\
+DW\-\_CFA\-\_val\-\_expression&0&0x16&ULEB128&BLOCK \\
+DW\-\_CFA\-\_lo\-\_user&0&0x1c & & \\
+DW\-\_CFA\-\_hi\-\_user&0&0x3f & & \\
\end{longtable}
\end{centering}
the type’s context as follows: For each surrounding type
or namespace, beginning with the outermost such construct,
append the letter 'C', the DWARF tag of the construct, and
-the name (taken from the DW\_AT\_name attribute) of the type
+the name (taken from the DW\-\_AT\-\_name attribute) of the type
or namespace (including its trailing null byte).
\item Append to S the letter 'D', followed by the DWARF tag of
code, and the attribute value.
\begin{itemize}
-\item DW\_AT\_name
-\item DW\_AT\_accessibility
-\item DW\_AT\_address\_class
-\item DW\_AT\_allocated
-\item DW\_AT\_artificial
-\item DW\_AT\_associated
-\item DW\_AT\_binary\_scale
-\item DW\_AT\_bit\_offset
-\item DW\_AT\_bit\_size
-\item DW\_AT\_bit\_stride
-\item DW\_AT\_byte\_size
-\item DW\_AT\_byte\_stride
-\item DW\_AT\_const\_expr
-\item DW\_AT\_const\_value
-\item DW\_AT\_containing\_type
-\item DW\_AT\_count
-\item DW\_AT\_data\_bit\_offset
-\item DW\_AT\_data\_location
-\item DW\_AT\_data\_member\_location
-\item DW\_AT\_decimal\_scale
-\item DW\_AT\_decimal\_sign
-\item DW\_AT\_default\_value
-\item DW\_AT\_digit\_count
-\item DW\_AT\_discr
-\item DW\_AT\_discr\_list
-\item DW\_AT\_discr\_value
-\item DW\_AT\_encoding
-\item DW\_AT\_enum\_class
-\item DW\_AT\_endianity
-\item DW\_AT\_explicit
-\item DW\_AT\_is\_optional
-\item DW\_AT\_location
-\item DW\_AT\_lower\_bound
-\item DW\_AT\_mutable
-\item DW\_AT\_ordering
-\item DW\_AT\_picture\_string
-\item DW\_AT\_prototyped
-\item DW\_AT\_small
-\item DW\_AT\_segment
-\item DW\_AT\_string\_length
-\item DW\_AT\_threads\_scaled
-\item DW\_AT\_upper\_bound
-\item DW\_AT\_use\_location
-\item DW\_AT\_use\_UTF8
-\item DW\_AT\_variable\_parameter
-\item DW\_AT\_virtuality
-\item DW\_AT\_visibility
-\item DW\_AT\_vtable\_elem\_location
+\item DW\-\_AT\-\_name
+\item DW\-\_AT\-\_accessibility
+\item DW\-\_AT\-\_address\-\_class
+\item DW\-\_AT\-\_allocated
+\item DW\-\_AT\-\_artificial
+\item DW\-\_AT\-\_associated
+\item DW\-\_AT\-\_binary\-\_scale
+\item DW\-\_AT\-\_bit\-\_offset
+\item DW\-\_AT\-\_bit\-\_size
+\item DW\-\_AT\-\_bit\-\_stride
+\item DW\-\_AT\-\_byte\-\_size
+\item DW\-\_AT\-\_byte\-\_stride
+\item DW\-\_AT\-\_const\-\_expr
+\item DW\-\_AT\-\_const\-\_value
+\item DW\-\_AT\-\_containing\-\_type
+\item DW\-\_AT\-\_count
+\item DW\-\_AT\-\_data\-\_bit\-\_offset
+\item DW\-\_AT\-\_data\-\_location
+\item DW\-\_AT\-\_data\-\_member\-\_location
+\item DW\-\_AT\-\_decimal\-\_scale
+\item DW\-\_AT\-\_decimal\-\_sign
+\item DW\-\_AT\-\_default\-\_value
+\item DW\-\_AT\-\_digit\-\_count
+\item DW\-\_AT\-\_discr
+\item DW\-\_AT\-\_discr\-\_list
+\item DW\-\_AT\-\_discr\-\_value
+\item DW\-\_AT\-\_encoding
+\item DW\-\_AT\-\_enum\-\_class
+\item DW\-\_AT\-\_endianity
+\item DW\-\_AT\-\_explicit
+\item DW\-\_AT\-\_is\-\_optional
+\item DW\-\_AT\-\_location
+\item DW\-\_AT\-\_lower\-\_bound
+\item DW\-\_AT\-\_mutable
+\item DW\-\_AT\-\_ordering
+\item DW\-\_AT\-\_picture\-\_string
+\item DW\-\_AT\-\_prototyped
+\item DW\-\_AT\-\_small
+\item DW\-\_AT\-\_segment
+\item DW\-\_AT\-\_string\-\_length
+\item DW\-\_AT\-\_threads\-\_scaled
+\item DW\-\_AT\-\_upper\-\_bound
+\item DW\-\_AT\-\_use\-\_location
+\item DW\-\_AT\-\_use\-\_UTF8
+\item DW\-\_AT\-\_variable\-\_parameter
+\item DW\-\_AT\-\_virtuality
+\item DW\-\_AT\-\_visibility
+\item DW\-\_AT\-\_vtable\-\_elem\-\_location
\end{itemize}
-Note that except for the initial DW\_AT\_name attribute,
+Note that except for the initial DW\-\_AT\-\_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: DW\_FORM\_sdata,
-DW\_FORM\_flag,
-DW\_FORM\_string,
-and DW\_FORM\_block.
+to the following: DW\-\_FORM\-\_sdata,
+DW\-\_FORM\-\_flag,
+DW\-\_FORM\-\_string,
+and 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},
\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 DW\_OP\_call\_ref
+another debugging information entry (e.g., a DW\-\_OP\-\_call\-\_ref
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 DW\_AT\_declaration attribute is not included because it
+\item \textit{The DW\-\_AT\-\_declaration attribute is not included because it
indicates that the debugging information entry represents an
incomplete declaration, and incomplete declarations should
not be placed in separate type units.}
-\item \textit{The DW\_AT\_description attribute is not included because
+\item \textit{The DW\-\_AT\-\_description attribute is not included because
it does not provide any information unique to the defining
declaration of the type.}
-\item \textit{The DW\_AT\_decl\_file, DW\_AT\_decl\_line, and
-DW\_AT\_decl\_column attributes are not included because they
+\item \textit{The DW\-\_AT\-\_decl\-\_file, DW\-\_AT\-\_decl\-\_line, and
+DW\-\_AT\-\_decl\-\_column attributes are not included because they
may vary from one source file to the next, and would prevent
two otherwise identical type declarations from producing the
same hash.}
\put(280,-70){\vector( 2, 1){70}}
\put(90,-150){\line(2, 1){100}}
- \put(190,-120){\framebox(110,20){DW\_FORM\_strp (d)} }
+ \put(190,-120){\framebox(110,20){DW\-\_FORM\-\_strp (d)} }
\put(300,-100){\vector( 4, 1){35}}
\put(190,-140){\vector(-2, -1){100}}
- \put(190,-150){\framebox(110,20){DW\_OP\_call\_ref(e)} }
+ \put(190,-150){\framebox(110,20){DW\-\_OP\-\_call\-\_ref(e)} }
\put(300,-150){\line(4,-1){40}}
\put(90,-195){\line(7,2){95}}
- \put(190,-180){\framebox(110,20){DW\_AT\_location(f)} }
+ \put(190,-180){\framebox(110,20){DW\-\_AT\-\_location(f)} }
\put(300,-180){\vector(1,0){40}}
\put(90,-195){\line(7,-2){95}}
- \put(190,-230){\framebox(110,20){DW\_AT\_ranges (g)} }
+ \put(190,-230){\framebox(110,20){DW\-\_AT\-\_ranges (g)} }
\put(300,-230){\vector(4,-3){40}}
\put(85,-200){\line(3,-2){95}}
- \put(180,-270){\framebox(110,20){DW\_AT\_macinfo (h)} }
+ \put(180,-270){\framebox(110,20){DW\-\_AT\-\_macinfo (h)} }
\put(230,-270){\vector(3,-2){110}}
\put(85,-200){\line(1,-1){80}}
- \put(120,-300){\framebox(110,20){DW\_AT\_stmt\_list (i)} }
+ \put(120,-300){\framebox(110,20){DW\-\_AT\-\_stmt\-\_list (i)} }
\put(180,-300){\vector(1,-2){10}}
\put(40,-250){\vector(0,1){15}}
The debug\_abbrev\_offset value in the header is the offset in the
.debug\_abbrev section of the abbreviations for that compilation unit.
(d) .debug\_info and .debug\_types
-Attribute values of class string may have form DW\_FORM\_strp, whose
+Attribute values of class string may have form DW\-\_FORM\-\_strp, whose
value is the offset in the .debug\_str section of the corresponding string.
\item .debug\_info and .debug\_types \\
-Attribute values of class string may have form DW\_FORM\_strp, whose
+Attribute values of class string may have form DW\-\_FORM\-\_strp, whose
value is the offset in the .debug\_str section of the corresponding string.
\item .debug\_loc \\
-The operand of the DW\_OP\_call\_ref DWARF expression operator is the
+The operand of the DW\-\_OP\-\_call\-\_ref DWARF expression operator is the
offset of a debugging information entry in the .debug\_info section.
\item .debug\_info \\
An attribute value of class \livelink{chap:loclistptr}{loclistptr} (specifically form
-DW\_FORM\_sec\_offset) is an offset within the .debug\_loc section of a
+DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_loc section of a
location list.
\item .debug\_info \\
An attribute value of class \livelink{chap:rangelistptr}{rangelistptr} (specifically form
-DW\_FORM\_sec\_offset) is an offset within the .debug\_ranges section of
+DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_ranges section of
a range list.
\item .debug\_info \\
An attribute value of class \livelink{chap:macptr}{macptr} (specifically form
-DW\_FORM\_sec\_offset) is an offset within the .debug\_macinfo section
+DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_macinfo section
of the beginning of the macro information for the referencing unit.
\item .debug\_info \\
An attribute value of class \livelink{chap:lineptr}{lineptr} (specifically form
-DW\_FORM\_sec\_offset) is an offset in the .debug\_line section of the
+DW\-\_FORM\-\_sec\-\_offset) is an offset in the .debug\_line section of the
beginning of the line number information for the referencing unit.
\end{enumerate}
\newcommand{\refersec}[1]{ \ref{#1} Page \pageref{#1} }
% Generate a live link in the document
-% use like \livelink{chap:DWOPdup}{DW\_OP\_dup}
+% use like \livelink{chap:DWOPdup}{DW\-\_OP\-\_dup}
\newcommand{\livelink}[2]{\hyperlink{#1}{#2}\index{#2} }
% livetarg is the declaration this is the target of livelinks.
% FIXME: we might want livetarg and livetargi #2 to be \textbf{#2}
"myfile.c"
"Best Compiler Corp: Version 1.3"
"/home/mydir/src"
-DW\_LANG\_C89
+DW\-\_LANG\-\_C89
0x0
0x55
-DW\_FORM\_sec\_offset
+DW\-\_FORM\-\_sec\-\_offset
0x0
\vspace{0.01cm}
\hrule
2
“char”
-DW\_ATE\_unsigned\_char
+DW\-\_ATE\-\_unsigned\-\_char
1
\vspace{0.01cm}
\hrule
\begin{framed}
\scriptsize
\begin{alltt}
-\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
-DW\_CHILDREN\_yes
-DW\_AT\_name DW\_FORM\_string
-DW\_AT\_producer DW\_FORM\_string
-DW\_AT\_comp\_dir DW\_FORM\_string
-DW\_AT\_language DW\_FORM\_data1
-DW\_AT\_low\_pc DW\_FORM\_addr
-DW\_AT\_high\_pc DW\_FORM\_data1
-DW\_AT\_stmt\_list DW\_FORM\_indirect
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+DW\-\_CHILDREN\-\_yes
+DW\-\_AT\-\_name DW\-\_FORM\-\_string
+DW\-\_AT\-\_producer DW\-\_FORM\-\_string
+DW\-\_AT\-\_comp\-\_dir DW\-\_FORM\-\_string
+DW\-\_AT\-\_language DW\-\_FORM\-\_data1
+DW\-\_AT\-\_low\-\_pc DW\-\_FORM\-\_addr
+DW\-\_AT\-\_high\-\_pc DW\-\_FORM\-\_data1
+DW\-\_AT\-\_stmt\-\_list DW\-\_FORM\-\_indirect
0 0
\vspace{0.01cm}
\hrule
2
-\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
-DW\_CHILDREN\_no
-DW\_AT\_name DW\_FORM\_string
-DW\_AT\_encoding DW\_FORM\_data1
-DW\_AT\_byte\_size DW\_FORM\_data1
+\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+DW\-\_CHILDREN\-\_no
+DW\-\_AT\-\_name DW\-\_FORM\-\_string
+DW\-\_AT\-\_encoding DW\-\_FORM\-\_data1
+DW\-\_AT\-\_byte\-\_size DW\-\_FORM\-\_data1
0
\vspace{0.01cm}
\hrule
3
-\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
-DW\_CHILDREN\_no
-DW\_AT\_type DW\_FORM\_ref4
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+DW\-\_CHILDREN\-\_no
+DW\-\_AT\-\_type DW\-\_FORM\-\_ref4
0
\vspace{0.01cm}
\hrule
4
-\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
-DW\_CHILDREN\_no
-DW\_AT\_name DW\_FORM\_string
-DW\_AT\_type DW\_FORM\_ref\_addr
+\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}
+DW\-\_CHILDREN\-\_no
+DW\-\_AT\-\_name DW\-\_FORM\-\_string
+DW\-\_AT\-\_type DW\-\_FORM\-\_ref\-\_addr
0
\vspace{0.01cm}
\hrule
that can be the object).
If an object has a descriptor, then the DWARF type for that
-object will have a DW\_AT\_data\_location attribute. If an object
+object will have a DW\-\_AT\-\_data\-\_location attribute. If an object
does not have a descriptor, then usually the DWARF type for the
-object will not have a DW\_AT\_data\_location. (See the following
+object will not have a DW\-\_AT\-\_data\-\_location. (See the following
Ada example for a case where the type for an object without
-a descriptor does have a DW\_AT\_data\_location attribute. In
+a descriptor does have a DW\-\_AT\-\_data\-\_location attribute. In
that case the object doubles as its own descriptor.)
The Fortran 90 derived type array\_ptr can now be redescribed
\begin{alltt}
! Description for type of 'ap'
-1\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+1\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Fortran) ordering, default stride
- DW\_AT\_type(reference to REAL)
- DW\_AT\_associated(expression= ! Test 'ptr\_assoc' flag
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n == offset(ptr\_assoc)
- DW\_OP\_plus
- DW\_OP\_deref
- DW\_OP\_lit1 ! mask for 'ptr\_assoc' flag
- DW\_OP\_and)
- DW\_AT\_data\_location(expression= ! Get raw data address
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n == offset(base)
- DW\_OP\_plus
- DW\_OP\_deref) ! Type of index of array 'ap'
-2\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+ DW\-\_AT\-\_type(reference to REAL)
+ DW\-\_AT\-\_associated(expression= ! Test 'ptr\_assoc' flag
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n == offset(ptr\_assoc)
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref
+ DW\-\_OP\-\_lit1 ! mask for 'ptr\_assoc' flag
+ DW\-\_OP\-\_and)
+ DW\-\_AT\-\_data\-\_location(expression= ! Get raw data address
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n == offset(base)
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref) ! Type of index of array 'ap'
+2\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
! No name, default stride
- DW\_AT\_type(reference to INTEGER)
- DW\_AT\_lower\_bound(expression=
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n ==
+ DW\-\_AT\-\_type(reference to INTEGER)
+ DW\-\_AT\-\_lower\-\_bound(expression=
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n ==
! offset(desc, dims) +
! offset(dims\_str, lower\_bound)
- DW\_OP\_plus
- DW\_OP\_deref)
- DW\_AT\_upper\_bound(expression=
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n ==
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref)
+ DW\-\_AT\-\_upper\-\_bound(expression=
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n ==
! offset(desc, dims) +
! offset(dims\_str, upper\_bound)
- DW\_OP\_plus
- DW\_OP\_deref)
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref)
! Note: for the m'th dimension, the second operator becomes
- ! DW\_OP\_lit<x> where
+ ! DW\-\_OP\-\_lit<x> where
! x == offset(desc, dims) +
! (m-1)*sizeof(dims\_str) +
! offset(dims\_str, [lower|upper]\_bound)
! That is, the expression does not get longer for each
! successive dimension (other than to express the larger
! offsets involved).
-3\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("array\_ptr")
- DW\_AT\_byte\_size(constant sizeof(REAL) + sizeof(desc<1>))
-4\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("myvar")
- DW\_AT\_type(reference to REAL)
- DW\_AT\_data\_member\_location(constant 0)
-5\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("ap");
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_data\_member\_location(constant sizeof(REAL))
-
-6\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+3\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("array\_ptr")
+ DW\-\_AT\-\_byte\-\_size(constant sizeof(REAL) + sizeof(desc<1>))
+4\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("myvar")
+ DW\-\_AT\-\_type(reference to REAL)
+ DW\-\_AT\-\_data\-\_member\-\_location(constant 0)
+5\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("ap");
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_data\-\_member\-\_location(constant sizeof(REAL))
+
+6\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Fortran) ordering, default stride
- DW\_AT\_type(reference to 3\$)
- DW\_AT\_allocated(expression=
+ DW\-\_AT\-\_type(reference to 3\$)
+ DW\-\_AT\-\_allocated(expression=
! Test 'ptr\_alloc' flag
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n == offset(ptr\_alloc)
- DW\_OP\_plus
- DW\_OP\_deref
- DW\_OP\_lit2
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n == offset(ptr\_alloc)
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref
+ DW\-\_OP\-\_lit2
! mask for 'ptr\_alloc' flag
- DW\_OP\_and)
- DW\_AT\_data\_location(expression= ! Get raw data address
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n = offset(base)
- DW\_OP\_plus
- DW\_OP\_deref)
-
-7\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+ DW\-\_OP\-\_and)
+ DW\-\_AT\-\_data\-\_location(expression= ! Get raw data address
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n = offset(base)
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref)
+
+7\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
! No name, default stride
- DW\_AT\_type(reference to INTEGER)
- DW\_AT\_lower\_bound(expression=
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n == ...
- DW\_OP\_plus
- DW\_OP\_deref)
- DW\_AT\_upper\_bound(expression=
- DW\_OP\_push\_object\_address
- DW\_OP\_lit<n> ! where n == ...
- DW\_OP\_plus
- DW\_OP\_deref)
-
-8\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("arrays")
- DW\_AT\_type(reference to 6\$)
- DW\_AT\_location(expression=
+ DW\-\_AT\-\_type(reference to INTEGER)
+ DW\-\_AT\-\_lower\-\_bound(expression=
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n == ...
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref)
+ DW\-\_AT\-\_upper\-\_bound(expression=
+ DW\-\_OP\-\_push\-\_object\-\_address
+ DW\-\_OP\-\_lit<n> ! where n == ...
+ DW\-\_OP\-\_plus
+ DW\-\_OP\-\_deref)
+
+8\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("arrays")
+ DW\-\_AT\-\_type(reference to 6\$)
+ DW\-\_AT\-\_location(expression=
...as appropriate...) ! Assume static allocation
\end{alltt}
\end{enumerate}
-For a), check for a DW\_AT\_data\_location attribute. Since
+For a), check for a DW\-\_AT\-\_data\-\_location attribute. Since
there is one, go execute the expression, whose result is
the address needed. The object address used in this case
is the object we are working on, namely the variable named
arrays , whose address was found in step 1. (Had there been
-no DW\_AT\_data\_location attribute, the desired address would
+no DW\-\_AT\-\_data\-\_location attribute, the desired address would
be the same as the address from step 1.)
For b), for each dimension of the array (only one
in this case), go interpret the usual lower bound
attribute. Again this is an expression, which again begins
-with DW\_OP\_push\_object\_address. This object is
+with DW\-\_OP\-\_push\-\_object\-\_address. This object is
\textbf{still} arrays,
from step 1, because we have not begun to actually perform
any indexing yet.
For c), the default stride applies. Since there is no
-DW\_AT\_byte\_stride attribute, use the size of the array element
+DW\-\_AT\-\_byte\-\_stride attribute, use the size of the array element
type, which is the size of type array\_ptr (at 3\$).
Having acquired all the necessary data, perform the indexing
\end{enumerate}
This is just like step 2), so the details are omitted. Recall
-that because the DWARF type 1\$ has a DW\_AT\_data\_location,
+that because the DWARF type 1\$ has a DW\-\_AT\-\_data\-\_location,
the address that results from step 4) is that of a
descriptor, and that address is the address pushed by the
-DW\_OP\_push\_object\_address operations in 1\$ and 2\$.
+DW\-\_OP\-\_push\-\_object\-\_address 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
\begin{enumerate}[1)]
\item The array VEC2 is ``immediately'' contained within structure
REC2 (there is no intermediate descriptor or indirection),
-which is reflected in the absence of a DW\_AT\_data\_location
+which is reflected in the absence of a DW\-\_AT\-\_data\-\_location
attribute on the array type at 28\$.
\item One of the bounds of VEC2 is nonetheless dynamic and part of
\label{app:adaexampledwarfdescription}
\begin{alltt}
-11\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("M")
- DW\_AT\_type(reference to INTEGER)
-12\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+11\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("M")
+ DW\-\_AT\-\_type(reference to INTEGER)
+12\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Ada) order, default stride
- DW\_AT\_type(reference to INTEGER)
-13\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_type(reference to INTEGER)
- DW\_AT\_lower\_bound(constant 1)
- DW\_AT\_upper\_bound(reference to variable M at 11\$)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("VEC1")
- DW\_AT\_type(reference to array type at 12\$)
+ DW\-\_AT\-\_type(reference to INTEGER)
+13\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_type(reference to INTEGER)
+ DW\-\_AT\-\_lower\-\_bound(constant 1)
+ DW\-\_AT\-\_upper\-\_bound(reference to variable M at 11\$)
+14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("VEC1")
+ DW\-\_AT\-\_type(reference to array type at 12\$)
. . .
-21\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_name("TEENY")
- DW\_AT\_type(reference to INTEGER)
- DW\_AT\_lower\_bound(constant 1)
- DW\_AT\_upper\_bound(constant 100)
+21\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_name("TEENY")
+ DW\-\_AT\-\_type(reference to INTEGER)
+ DW\-\_AT\-\_lower\-\_bound(constant 1)
+ DW\-\_AT\-\_upper\-\_bound(constant 100)
. . .
-26\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("REC2")
-27\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("N")
- DW\_AT\_type(reference to subtype TEENY at 21\$)
- DW\_AT\_data\_member\_location(constant 0)
-28\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
+26\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("REC2")
+27\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("N")
+ DW\-\_AT\-\_type(reference to subtype TEENY at 21\$)
+ DW\-\_AT\-\_data\-\_member\-\_location(constant 0)
+28\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
! No name, default (Ada) order, default stride
! Default data location
- DW\_AT\_TYPE(reference to INTEGER)
-29\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_type(reference to subrange TEENY at 21\$)
- DW\_AT\_lower\_bound(constant 1)
- DW\_AT\_upper\_bound(reference to member N at 27\$)
-30\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("VEC2")
- DW\_AT\_type(reference to array “subtype” at 28\$)
- DW\_AT\_data\_member\_location(machine=
- DW\_OP\_lit<n> ! where n == offset(REC2, VEC2)
- DW\_OP\_plus)
+ DW\-\_AT\-\_TYPE(reference to INTEGER)
+29\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_type(reference to subrange TEENY at 21\$)
+ DW\-\_AT\-\_lower\-\_bound(constant 1)
+ DW\-\_AT\-\_upper\-\_bound(reference to member N at 27\$)
+30\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("VEC2")
+ DW\-\_AT\-\_type(reference to array “subtype” at 28\$)
+ DW\-\_AT\-\_data\-\_member\-\_location(machine=
+ DW\-\_OP\-\_lit<n> ! where n == offset(REC2, VEC2)
+ DW\-\_OP\-\_plus)
. . .
-41\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("OBJ2B")
- DW\_AT\_type(reference to REC2 at 26\$)
- DW\_AT\_location(...as appropriate...)
+41\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("OBJ2B")
+ DW\-\_AT\-\_type(reference to REC2 at 26\$)
+ DW\-\_AT\-\_location(...as appropriate...)
\end{alltt}
Section \refersec{app:packedrecordexampledwarfdescription}
is
appropriate.
-\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type} entries could be added to
+\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type} 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
\label{app:packedrecordexampledwarfdescription}
\begin{alltt}
-21\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for F2
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("F3")
- DW\_AT\_type(reference to 11\$)
-22\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type} ! anonymous type for F4
- DW\_AT\_type(reference to 20\$)
- \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_type(reference to 11\$)
- DW\_AT\_lower\_bound(0)
- DW\_AT\_upper\_bound(1)
- DW\_AT\_bit\_stride(2)
- DW\_AT\_bit\_size(4)
-23\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for V
- DW\_AT\_bit\_size(39)
- \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("F1")
- DW\_AT\_type(reference to 10\$)
- DW\_AT\_data\_bit\_offset(0)! may be omitted
- DW\_AT\_bit\_size(1) ! may be omitted
- DW\_AT\_member
- DW\_AT\_name("F2")
- DW\_AT\_type(reference to 21\$)
- DW\_AT\_data\_bit\_offset(1)
- DW\_AT\_bit\_size(32) ! may be omitted
- DW\_AT\_member
- DW\_AT\_name("F4")
- DW\_AT\_type(reference to 22\$)
- DW\_AT\_data\_bit\_offset(33)
- DW\_AT\_bit\_size(4) ! may be omitted
- DW\_AT\_member
- DW\_AT\_name("F7")
- DW\_AT\_type(reference to 20\$) ! type T
- DW\_AT\_data\_bit\_offset(37)
- DW\_AT\_bit\_size(2) ! may be omitted
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("V")
- DW\_AT\_type(reference to 23\$)
- DW\_AT\_location(...)
+21\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} ! anonymous type for F2
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("F3")
+ DW\-\_AT\-\_type(reference to 11\$)
+22\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} ! anonymous type for F4
+ DW\-\_AT\-\_type(reference to 20\$)
+ \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_type(reference to 11\$)
+ DW\-\_AT\-\_lower\-\_bound(0)
+ DW\-\_AT\-\_upper\-\_bound(1)
+ DW\-\_AT\-\_bit\-\_stride(2)
+ DW\-\_AT\-\_bit\-\_size(4)
+23\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} ! anonymous type for V
+ DW\-\_AT\-\_bit\-\_size(39)
+ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("F1")
+ DW\-\_AT\-\_type(reference to 10\$)
+ DW\-\_AT\-\_data\-\_bit\-\_offset(0)! may be omitted
+ DW\-\_AT\-\_bit\-\_size(1) ! may be omitted
+ DW\-\_AT\-\_member
+ DW\-\_AT\-\_name("F2")
+ DW\-\_AT\-\_type(reference to 21\$)
+ DW\-\_AT\-\_data\-\_bit\-\_offset(1)
+ DW\-\_AT\-\_bit\-\_size(32) ! may be omitted
+ DW\-\_AT\-\_member
+ DW\-\_AT\-\_name("F4")
+ DW\-\_AT\-\_type(reference to 22\$)
+ DW\-\_AT\-\_data\-\_bit\-\_offset(33)
+ DW\-\_AT\-\_bit\-\_size(4) ! may be omitted
+ DW\-\_AT\-\_member
+ DW\-\_AT\-\_name("F7")
+ DW\-\_AT\-\_type(reference to 20\$) ! type T
+ DW\-\_AT\-\_data\-\_bit\-\_offset(37)
+ DW\-\_AT\-\_bit\-\_size(2) ! may be omitted
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("V")
+ DW\-\_AT\-\_type(reference to 23\$)
+ DW\-\_AT\-\_location(...)
...
\end{alltt}
\label{app:namespaceexampledwarfdescription}
\begin{alltt}
-1\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("int")
+1\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("int")
...
-2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("float")
+2\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("float")
...
-6\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- ! no DW\_AT\_name attribute
+6\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ ! no DW\-\_AT\-\_name attribute
7\$:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("i")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_location ...
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("i")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_location ...
...
-10\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name("A")
-20\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name("B")
-30\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("j")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_location ...
+10\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name("A")
+20\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name("B")
+30\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("j")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_location ...
...
-34\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("myfunc")
- DW\_AT\_type(reference to 1\$)
+34\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("myfunc")
+ DW\-\_AT\-\_type(reference to 1\$)
...
-36\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("myfunc")
- DW\_AT\_type(reference to 2\$)
+36\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("myfunc")
+ DW\-\_AT\-\_type(reference to 2\$)
...
-38\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("myfunc2")
- DW\_AT\_low\_pc ...
- DW\_AT\_high\_pc ...
- DW\_AT\_type(reference to 1\$)
+38\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("myfunc2")
+ DW\-\_AT\-\_low\-\_pc ...
+ DW\-\_AT\-\_high\-\_pc ...
+ DW\-\_AT\-\_type(reference to 1\$)
...
-40\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_name("Y")
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (1) using-declaration
- DW\_AT\_import(reference to 30\$)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("foo")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_location ...
+40\$: \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_name("Y")
+ \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (1) using-declaration
+ DW\-\_AT\-\_import(reference to 30\$)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("foo")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_location ...
...
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (2) using declaration
- DW\_AT\_import(reference to 30\$)
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (3) namespace alias
- DW\_AT\_name("Foo")
- DW\_AT\_import(reference to 20\$)
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (4) using declaration
- DW\_AT\_import(reference to 34\$) ! - part 1
- \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration} ! (4) using declaration
- DW\_AT\_import(reference to 36\$) ! - part 2
- \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module} ! (5) using directive
- DW\_AT\_import(reference to 20\$)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_extension(reference to 10\$)
- \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
- DW\_AT\_extension(reference to 20\$)
- \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module} ! (6) using directive
- DW\_AT\_import(reference to 40\$)
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("k")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_location ...
+ \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (2) using declaration
+ DW\-\_AT\-\_import(reference to 30\$)
+ \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (3) namespace alias
+ DW\-\_AT\-\_name("Foo")
+ DW\-\_AT\-\_import(reference to 20\$)
+ \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (4) using declaration
+ DW\-\_AT\-\_import(reference to 34\$) ! - part 1
+ \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration} ! (4) using declaration
+ DW\-\_AT\-\_import(reference to 36\$) ! - part 2
+ \livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module} ! (5) using directive
+ DW\-\_AT\-\_import(reference to 20\$)
+ \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_extension(reference to 10\$)
+ \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
+ DW\-\_AT\-\_extension(reference to 20\$)
+ \livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module} ! (6) using directive
+ DW\-\_AT\-\_import(reference to 40\$)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("k")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_location ...
...
-60\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_specification(reference to 34\$)
- DW\_AT\_low\_pc ...
- DW\_AT\_high\_pc ...
+60\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_specification(reference to 34\$)
+ DW\-\_AT\-\_low\-\_pc ...
+ DW\-\_AT\-\_high\-\_pc ...
...
\end{alltt}
\begin{alltt}
-1\$: \livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
- DW\_AT\_name("void")
+1\$: \livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}
+ DW\-\_AT\-\_name("void")
...
-2\$ \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("int")
+2\$ \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("int")
...
-3\$: \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
- DW\_AT\_name("A")
+3\$: \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
+ DW\-\_AT\-\_name("A")
...
-4\$: \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- DW\_AT\_type(reference to 3\$)
+4\$: \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+ DW\-\_AT\-\_type(reference to 3\$)
...
-5\$: \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
- DW\_AT\_type(reference to 3\$)
+5\$: \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
+ DW\-\_AT\-\_type(reference to 3\$)
...
-6\$: \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
- DW\_AT\_type(reference to 5\$)
+6\$: \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+ DW\-\_AT\-\_type(reference to 5\$)
...
-7\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_declaration
- DW\_AT\_name("func1")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_object\_pointer(reference to 8\$)
+7\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_declaration
+ DW\-\_AT\-\_name("func1")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_object\-\_pointer(reference to 8\$)
! References a formal parameter in this
! member function
...
-8\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_artificial(true)
- DW\_AT\_name("this")
- DW\_AT\_type(reference to 4\$)
+8\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_artificial(true)
+ DW\-\_AT\-\_name("this")
+ DW\-\_AT\-\_type(reference to 4\$)
! Makes type of 'this' as 'A*' =>
! func1 has not been marked const
! or volatile
- DW\_AT\_location ...
+ DW\-\_AT\-\_location ...
...
-9\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name(x1)
- DW\_AT\_type(reference to 2\$)
+9\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name(x1)
+ DW\-\_AT\-\_type(reference to 2\$)
...
-10\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_declaration
- DW\_AT\_name("func2")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_object\_pointer(reference to 11\$)
+10\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_declaration
+ DW\-\_AT\-\_name("func2")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_object\-\_pointer(reference to 11\$)
! References a formal parameter in this
! member function
...
-11\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_artificial(true)
- DW\_AT\_name("this")
- DW\_AT\_type(reference to 6\$)
+11\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_artificial(true)
+ DW\-\_AT\-\_name("this")
+ DW\-\_AT\-\_type(reference to 6\$)
! Makes type of 'this' as 'A const*' =>
! func2 marked as const
- DW\_AT\_location ...
+ DW\-\_AT\-\_location ...
...
-12\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_declaration
- DW\_AT\_name("func3")
- DW\_AT\_type(reference to 1\$)
+12\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_declaration
+ DW\-\_AT\-\_name("func3")
+ DW\-\_AT\-\_type(reference to 1\$)
...
! No object pointer reference formal parameter
! implies func3 is static
-13\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name(x3)
- DW\_AT\_type(reference to 2\$)
+13\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name(x3)
+ DW\-\_AT\-\_type(reference to 2\$)
...
\end{alltt}
\endfoot
\hline
\endlastfoot
-DW\_LNS\_advance\_pc&LEB128(0x239)&0x2, 0xb9, 0x04 \\
+DW\-\_LNS\-\_advance\-\_pc&LEB128(0x239)&0x2, 0xb9, 0x04 \\
SPECIAL(2, 0)&0xb & \\
SPECIAL(2, 3)&0x38 & \\
SPECIAL(1, 8)&0x82 & \\
SPECIAL(1, 7)&0x73 & \\
-DW\_LNS\_advance\_pc&LEB128(2)&0x2, 0x2 \\
-DW\_LNE\_end\_sequence &&0x0, 0x1, 0x1 \\
+DW\-\_LNS\-\_advance\-\_pc&LEB128(2)&0x2, 0x2 \\
+DW\-\_LNE\-\_end\-\_sequence &&0x0, 0x1, 0x1 \\
\end{longtable}
\end{centering}
\endfoot
\hline
\endlastfoot
-DW\_LNS\_fixed\_advance\_pc&0x239&0x9, 0x39, 0x2 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x239&0x9, 0x39, 0x2 \\
SPECIAL(2, 0)&& 0xb \\
-DW\_LNS\_fixed\_advance\_pc&0x3&0x9, 0x3, 0x0 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x3&0x9, 0x3, 0x0 \\
SPECIAL(2, 0)&&0xb \\
-DW\_LNS\_fixed\_advance\_pc&0x8&0x9, 0x8, 0x0 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x8&0x9, 0x8, 0x0 \\
SPECIAL(1, 0)&& 0xa \\
-DW\_LNS\_fixed\_advance\_pc&0x7&0x9, 0x7, 0x0 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x7&0x9, 0x7, 0x0 \\
SPECIAL(1, 0) && 0xa \\
-DW\_LNS\_fixed\_advance\_pc&0x2&0x9, 0x2, 0x0 \\
-DW\_LNE\_end\_sequence&&0x0, 0x1, 0x1 \\
+DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x2&0x9, 0x2, 0x0 \\
+DW\-\_LNE\-\_end\-\_sequence&&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&DW\_CFA\_def\_cfa (7, 0)&CFA = [R7]+0 \\
-cie+18&DW\_CFA\_same\_value (0)&R0 not modified (=0) \\
-cie+20&DW\_CFA\_undefined (1)&R1 scratch \\
-cie+22&DW\_CFA\_undefined (2)&R2 scratch \\
-cie+24&DW\_CFA\_undefined (3)&R3 scratch \\
-cie+26&DW\_CFA\_same\_value (4)&R4 preserve \\
-cie+28&DW\_CFA\_same\_value (5)&R5 preserve \\
-cie+30&DW\_CFA\_same\_value (6)&R6 preserve \\
-cie+32&DW\_CFA\_same\_value (7)&R7 preserve \\
-cie+34&DW\_CFA\_register (8, 1)&R8 is in R1 \\
-cie+37&DW\_CFA\_nop&padding \\
-cie+38&DW\_CFA\_nop& padding \\
-cie+39& DW\_CFA\_nop&padding \\
+cie+15&DW\-\_CFA\-\_def\-\_cfa (7, 0)&CFA = [R7]+0 \\
+cie+18&DW\-\_CFA\-\_same\-\_value (0)&R0 not modified (=0) \\
+cie+20&DW\-\_CFA\-\_undefined (1)&R1 scratch \\
+cie+22&DW\-\_CFA\-\_undefined (2)&R2 scratch \\
+cie+24&DW\-\_CFA\-\_undefined (3)&R3 scratch \\
+cie+26&DW\-\_CFA\-\_same\-\_value (4)&R4 preserve \\
+cie+28&DW\-\_CFA\-\_same\-\_value (5)&R5 preserve \\
+cie+30&DW\-\_CFA\-\_same\-\_value (6)&R6 preserve \\
+cie+32&DW\-\_CFA\-\_same\-\_value (7)&R7 preserve \\
+cie+34&DW\-\_CFA\-\_register (8, 1)&R8 is in R1 \\
+cie+37&DW\-\_CFA\-\_nop&padding \\
+cie+38&DW\-\_CFA\-\_nop& padding \\
+cie+39& DW\-\_CFA\-\_nop&padding \\
cie+40 && \\
\end{longtable}
\end{centering}
fde+4&cie&CIE\_ptr \\
fde+8&foo&initial\_location \\
fde+12&84&address\_range \\
-fde+16&DW\_CFA\_advance\_loc(1)&instructions \\
-fde+17&DW\_CFA\_def\_cfa\_offset(12)& \textless fs \textgreater \\
-fde+19&DW\_CFA\_advance\_loc(1)&4/ \textless caf \textgreater \\
-fde+20&DW\_CFA\_offset(8,1)&-4/ \textless daf \textgreater (second parameter) \\
-fde+22&DW\_CFA\_advance\_loc(1)& \\
-fde+23&DW\_CFA\_offset(6,2)&-8/ \textless daf> \textgreater (2nd parameter) \\
-fde+25&DW\_CFA\_advance\_loc(1) & \\
-fde+26&DW\_CFA\_def\_cfa\_register(6) & \\
-fde+28&DW\_CFA\_advance\_loc(1) & \\
-fde+29&DW\_CFA\_offset(4,3)&-12/ \textless daf \textgreater (2nd parameter) \\
-fde+31&DW\_CFA\_advance\_loc(12)&44/ \textless caf \textgreater \\
-fde+32&DW\_CFA\_restore(4)& \\
-fde+33&DW\_CFA\_advance\_loc(1) & \\
-fde+34&DW\_CFA\_restore(6) & \\
-fde+35&DW\_CFA\_def\_cfa\_register(7) & \\
-fde+37&DW\_CFA\_advance\_loc(1) & \\
-fde+38&DW\_CFA\_restore(8) &\\
-fde+39&DW\_CFA\_advance\_loc(1) &\\
-fde+40&DW\_CFA\_def\_cfa\_offset(0) &\\
-fde+42&DW\_CFA\_nop&padding \\
-fde+43&DW\_CFA\_nop&padding \\
+fde+16&DW\-\_CFA\-\_advance\-\_loc(1)&instructions \\
+fde+17&DW\-\_CFA\-\_def\-\_cfa\-\_offset(12)& \textless fs \textgreater \\
+fde+19&DW\-\_CFA\-\_advance\-\_loc(1)&4/ \textless caf \textgreater \\
+fde+20&DW\-\_CFA\-\_offset(8,1)&-4/ \textless daf \textgreater (second parameter) \\
+fde+22&DW\-\_CFA\-\_advance\-\_loc(1)& \\
+fde+23&DW\-\_CFA\-\_offset(6,2)&-8/ \textless daf> \textgreater (2nd parameter) \\
+fde+25&DW\-\_CFA\-\_advance\-\_loc(1) & \\
+fde+26&DW\-\_CFA\-\_def\-\_cfa\-\_register(6) & \\
+fde+28&DW\-\_CFA\-\_advance\-\_loc(1) & \\
+fde+29&DW\-\_CFA\-\_offset(4,3)&-12/ \textless daf \textgreater (2nd parameter) \\
+fde+31&DW\-\_CFA\-\_advance\-\_loc(12)&44/ \textless caf \textgreater \\
+fde+32&DW\-\_CFA\-\_restore(4)& \\
+fde+33&DW\-\_CFA\-\_advance\-\_loc(1) & \\
+fde+34&DW\-\_CFA\-\_restore(6) & \\
+fde+35&DW\-\_CFA\-\_def\-\_cfa\-\_register(7) & \\
+fde+37&DW\-\_CFA\-\_advance\-\_loc(1) & \\
+fde+38&DW\-\_CFA\-\_restore(8) &\\
+fde+39&DW\-\_CFA\-\_advance\-\_loc(1) &\\
+fde+40&DW\-\_CFA\-\_def\-\_cfa\-\_offset(0) &\\
+fde+42&DW\-\_CFA\-\_nop&padding \\
+fde+43&DW\-\_CFA\-\_nop&padding \\
fde+44 && \\
\end{longtable}
\end{centering}
! Abstract instance for OUTER
!
OUTER.AI.1.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("OUTER")
- DW\_AT\_inline(DW\_INL\_declared\_inlined)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("OUTER")
+ DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("OUTER\_FORMAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("OUTER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
OUTER.AI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("OUTER\_LOCAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("OUTER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
!
! Abstract instance for INNER
!
INNER.AI.1.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("INNER")
- DW\_AT\_inline(DW\_INL\_declared\_inlined)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("INNER")
+ DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
INNER.AI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("INNER\_FORMAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("INNER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
INNER.AI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("INNER\_LOCAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("INNER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
...
0
- ! No \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} (concrete instance)
+ ! No \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine} (concrete instance)
! for INNER corresponding to calls of INNER
...
0
! Concrete instance for call "OUTER(7)"
!
OUTER.CI.1.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.1.1)
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.1)
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
OUTER.CI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.1.2)
- DW\_AT\_const\_value(7)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.2)
+ DW\-\_AT\-\_const\-\_value(7)
OUTER.CI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.1.3)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.1.3)
+ DW\-\_AT\-\_location(...)
!
- ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} (abstract instance) for INNER
+ ! No \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} (abstract instance) for INNER
!
! Concrete instance for call INNER(OUTER\_LOCAL)
!
INNER.CI.1.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\_AT\_abstract\_origin(reference to INNER.AI.1.1)
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
- DW\_AT\_static\_link(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.1)
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
+ DW\-\_AT\-\_static\-\_link(...)
INNER.CI.1.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\_AT\_abstract\_origin(reference to INNER.AI.1.2)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.2)
+ DW\-\_AT\-\_location(...)
INNER.CI.1.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\_AT\_abstract\_origin(reference to INNER.AI.1.3)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to INNER.AI.1.3)
+ DW\-\_AT\-\_location(...)
...
0
! Another concrete instance of INNER within OUTER
Note that the debugging information in this Figure differs from
that in
Section \refersec{app:inliningexample1abstractinstance}
-in that INNER lacks a DW\_AT\_inline attribute
+in that INNER lacks a DW\-\_AT\-\_inline attribute
and therefore is not a distinct abstract instance. INNER
is merely an out\dash of\dash line routine that is part of OUTER’s
abstract instance. This is reflected in the Figure 70 by
concrete out\dash of\dash line subprogram. Because INNER is cloned
for each inline expansion of OUTER, only the invariant
attributes of INNER
-(for example, DW\_AT\_name) are specified
+(for example, DW\-\_AT\-\_name) are specified
in the abstract instance of OUTER, and the low\dash level,
instance\dash specific attributes of INNER (for example,
-DW\_AT\_low\_pc) are specified in each concrete instance of OUTER.
+DW\-\_AT\-\_low\-\_pc) are specified in each concrete instance of OUTER.
The several calls of INNER within OUTER are compiled as normal
calls to the instance of INNER that is specific to the same
! Abstract instance for OUTER
!
OUTER.AI.2.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("OUTER")
- DW\_AT\_inline(DW\_INL\_declared\_inlined)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("OUTER")
+ DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.2.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("OUTER\_FORMAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("OUTER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
OUTER.AI.2.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("OUTER\_LOCAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("OUTER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
!
! Nested out-of-line INNER subprogram
!
OUTER.AI.2.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("INNER")
- ! No DW\_AT\_inline
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("INNER")
+ ! No DW\-\_AT\-\_inline
! No low/high PCs, frame\_base, etc.
OUTER.AI.2.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("INNER\_FORMAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("INNER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
OUTER.AI.2.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("INNER\_LOCAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("INNER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
...
0
! Concrete instance for call "OUTER(7)"
!
OUTER.CI.2.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.2.1)
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.1)
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
OUTER.CI.2.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.2.2)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.2)
+ DW\-\_AT\-\_location(...)
OUTER.CI.2.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.2.3)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.3)
+ DW\-\_AT\-\_location(...)
!
! Nested out-of-line INNER subprogram
!
OUTER.CI.2.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.2.4)
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
- DW\_AT\_frame\_base(...)
- DW\_AT\_static\_link(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.4)
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
+ DW\-\_AT\-\_frame\-\_base(...)
+ DW\-\_AT\-\_static\-\_link(...)
OUTER.CI.2.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.2.5)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.2.5)
+ DW\-\_AT\-\_location(...)
OUTER.CI.2.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AT.2.6)
- DW\_AT\_location(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AT.2.6)
+ DW\-\_AT\-\_location(...)
...
0
...
and not in OUTER’s concrete instance. In the abstract
instance of OUTER, the description of INNER has the full
complement of attributes that would be expected for a
-normal subprogram. While attributes such as DW\_AT\_low\_pc,
-DW\_AT\_high\_pc, DW\_AT\_location, and so on, typically are omitted
+normal subprogram. While attributes such as DW\-\_AT\-\_low\-\_pc,
+DW\-\_AT\-\_high\-\_pc, DW\-\_AT\-\_location, and so on, typically are omitted
from an abstract instance because they are not invariant across
instances of the containing abstract instance, in this case
those same attributes are included precisely because they are
! Abstract instance for OUTER
!
OUTER.AI.3.1:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("OUTER")
- DW\_AT\_inline(DW\_INL\_declared\_inlined)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("OUTER")
+ DW\-\_AT\-\_inline(DW\-\_INL\-\_declared\-\_inlined)
! No low/high PCs
OUTER.AI.3.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("OUTER\_FORMAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("OUTER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
OUTER.AI.3.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("OUTER\_LOCAL")
- DW\_AT\_type(reference to integer)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("OUTER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
! No location
!
! Normal INNER
!
OUTER.AI.3.4:
- \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("INNER")
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
- DW\_AT\_frame\_base(...)
- DW\_AT\_static\_link(...)
+ \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("INNER")
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
+ DW\-\_AT\-\_frame\-\_base(...)
+ DW\-\_AT\-\_static\-\_link(...)
OUTER.AI.3.5:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("INNER\_FORMAL")
- DW\_AT\_type(reference to integer)
- DW\_AT\_location(...)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("INNER\_FORMAL")
+ DW\-\_AT\-\_type(reference to integer)
+ DW\-\_AT\-\_location(...)
OUTER.AI.3.6:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("INNER\_LOCAL")
- DW\_AT\_type(reference to integer)
- DW\_AT\_location(...)
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("INNER\_LOCAL")
+ DW\-\_AT\-\_type(reference to integer)
+ DW\-\_AT\-\_location(...)
...
0
...
! Concrete instance for call "OUTER(7)"
!
OUTER.CI.3.1:
- \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
+ \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.3.1)
- DW\_AT\_low\_pc(...)
- DW\_AT\_high\_pc(...)
- DW\_AT\_frame\_base(...)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.1)
+ DW\-\_AT\-\_low\-\_pc(...)
+ DW\-\_AT\-\_high\-\_pc(...)
+ DW\-\_AT\-\_frame\-\_base(...)
OUTER.CI.3.2:
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.3.2)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.2)
! No type
- DW\_AT\_location(...)
+ DW\-\_AT\-\_location(...)
OUTER.CI.3.3:
- \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+ \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
! No name
- DW\_AT\_abstract\_origin(reference to OUTER.AI.3.3)
+ DW\-\_AT\-\_abstract\-\_origin(reference to OUTER.AI.3.3)
! No type
- DW\_AT\_location(...)
- ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} for "INNER"
+ DW\-\_AT\-\_location(...)
+ ! No \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} for "INNER"
...
0
\end{alltt}
! For variable mass
!
-1\$: \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
- DW\_AT\_type(reference to "double")
-2\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("mass")
- DW\_AT\_type(reference to 1\$)
- DW\_AT\_const\_expr(true)
- DW\_AT\_const\_value(9.8)
+1\$: \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}
+ DW\-\_AT\-\_type(reference to "double")
+2\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("mass")
+ DW\-\_AT\-\_type(reference to 1\$)
+ DW\-\_AT\-\_const\-\_expr(true)
+ DW\-\_AT\-\_const\-\_value(9.8)
! Abstract instance for square
!
-10\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("square")
- DW\_AT\_type(reference to "int")
- DW\_AT\_inline(DW\_INL\_inlined)
-11\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("x")
- DW\_AT\_type(reference to "int")
+10\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("square")
+ DW\-\_AT\-\_type(reference to "int")
+ DW\-\_AT\-\_inline(DW\-\_INL\-\_inlined)
+11\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("x")
+ DW\-\_AT\-\_type(reference to "int")
! Concrete instance for square(9)
!
-20\$: \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
- DW\_AT\_abstract\_origin(reference to 10\$)
- DW\_AT\_const\_expr(present)
- DW\_AT\_const\_value(81)
- \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_abstract\_origin(reference to 11\$)
- DW\_AT\_const\_value(9)
+20\$: \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
+ DW\-\_AT\-\_abstract\-\_origin(reference to 10\$)
+ DW\-\_AT\-\_const\-\_expr(present)
+ DW\-\_AT\-\_const\-\_value(81)
+ \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_abstract\-\_origin(reference to 11\$)
+ DW\-\_AT\-\_const\-\_value(9)
! Anonymous array type for arr
!
-30\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
- DW\_AT\_type(reference to "float")
- DW\_AT\_byte\_size(324) ! 81*4
- \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
- DW\_AT\_type(reference to "int")
- DW\_AT\_upper\_bound(reference to 20\$)
+30\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
+ DW\-\_AT\-\_type(reference to "float")
+ DW\-\_AT\-\_byte\-\_size(324) ! 81*4
+ \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
+ DW\-\_AT\-\_type(reference to "int")
+ DW\-\_AT\-\_upper\-\_bound(reference to 20\$)
! Variable arr
!
-40\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("arr")
- DW\_AT\_type(reference to 30\$)
+40\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("arr")
+ DW\-\_AT\-\_type(reference to 30\$)
\end{alltt}
! DWARF description
!
-1\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("char16\_t")
- DW\_AT\_encoding(DW\_ATE\_UTF)
- DW\_AT\_byte\_size(2)
-2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
- DW\_AT\_name("char32\_t")
- DW\_AT\_encoding(DW\_ATE\_UTF)
- DW\_AT\_byte\_size(4)
-3\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("chr\_a")
- DW\_AT\_type(reference to 1\$)
-4\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("chr\_b")
- DW\_AT\_type(reference to 2\$)
+1\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("char16\_t")
+ DW\-\_AT\-\_encoding(DW\-\_ATE\-\_UTF)
+ DW\-\_AT\-\_byte\-\_size(2)
+2\$: \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+ DW\-\_AT\-\_name("char32\_t")
+ DW\-\_AT\-\_encoding(DW\-\_ATE\-\_UTF)
+ DW\-\_AT\-\_byte\-\_size(4)
+3\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("chr\_a")
+ DW\-\_AT\-\_type(reference to 1\$)
+4\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("chr\_b")
+ DW\-\_AT\-\_type(reference to 2\$)
\end{alltt}
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
- DW\_AT\_name("E")
- DW\_AT\_type(reference to "int")
- DW\_AT\_enum\_class(present)
-12\$: \livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
- DW\_AT\_name("E1")
- DW\_AT\_const\_value(0)
+11\$: \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}
+ DW\-\_AT\-\_name("E")
+ DW\-\_AT\-\_type(reference to "int")
+ DW\-\_AT\-\_enum\-\_class(present)
+12\$: \livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
+ DW\-\_AT\-\_name("E1")
+ DW\-\_AT\-\_const\-\_value(0)
13\$:
- \livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
- DW\_AT\_name("E2")
- DW\_AT\_const\_value(100)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("e1")
- DW\_AT\_type(reference to 11\$)
+ \livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}
+ DW\-\_AT\-\_name("E2")
+ DW\-\_AT\-\_const\-\_value(100)
+14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("e1")
+ DW\-\_AT\-\_type(reference to 11\$)
\end{alltt}
\section{Template Example}
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("wrapper")
-12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("T")
- DW\_AT\_type(reference to "int")
-13\$ \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("comp")
- DW\_AT\_type(reference to 12\$)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("obj")
- DW\_AT\_type(reference to 11\$)
+11\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("wrapper")
+12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("T")
+ DW\-\_AT\-\_type(reference to "int")
+13\$ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("comp")
+ DW\-\_AT\-\_type(reference to 12\$)
+14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("obj")
+ DW\-\_AT\-\_type(reference to 11\$)
\end{alltt}
The actual type of the component comp is int, but in the DWARF
-the type references the \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter} for
+the type references the \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter} for
T, which in turn references int. This implies that in the
original template comp was of type T and that was replaced
with int in the instance. There exist situations where it is
\begin{alltt}
! DWARF description
!
-11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("wrapper")
-12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("T")
- DW\_AT\_type(reference to "int")
-13\$ \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("comp")
- DW\_AT\_type(reference to 12\$)
-14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("obj")
- DW\_AT\_type(reference to 11\$)
-21\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
- DW\_AT\_name("consume")
-22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("U")
- DW\_AT\_type(reference to "int")
-23\$: \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
- DW\_AT\_name("formal")
- DW\_AT\_type(reference to 11\$)
+11\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("wrapper")
+12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("T")
+ DW\-\_AT\-\_type(reference to "int")
+13\$ \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("comp")
+ DW\-\_AT\-\_type(reference to 12\$)
+14\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("obj")
+ DW\-\_AT\-\_type(reference to 11\$)
+21\$: \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+ DW\-\_AT\-\_name("consume")
+22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("U")
+ DW\-\_AT\-\_type(reference to "int")
+23\$: \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
+ DW\-\_AT\-\_name("formal")
+ DW\-\_AT\-\_type(reference to 11\$)
\end{alltt}
-In the \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} entry for the instance of consume,
+In the \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} entry for the instance of consume,
U is described as
int.
The type of formal is
\begin{alltt}
wrapper<U>,
\end{alltt}
-in the DW\_AT\_type attribute at
+in the DW\-\_AT\-\_type 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}
- DW\_AT\_name("Alpha")
-21\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("T")
- DW\_AT\_type(reference to "long")
-22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("U")
- DW\_AT\_type(reference to "long")
-23\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("tango")
- DW\_AT\_type(reference to 21\$)
-24\$: \livelink{chap:DWTAGmember}{DW\_TAG\_member}
- DW\_AT\_name("uniform")
- DW\_AT\_type(reference to 22\$)
-25\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
- DW\_AT\_name("Beta")
- DW\_AT\_type(reference to 20\$)
-26\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("V")
- DW\_AT\_type(reference to "long")
-27\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("b")
- DW\_AT\_type(reference to 25\$)
+20\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("Alpha")
+21\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("T")
+ DW\-\_AT\-\_type(reference to "long")
+22\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("U")
+ DW\-\_AT\-\_type(reference to "long")
+23\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("tango")
+ DW\-\_AT\-\_type(reference to 21\$)
+24\$: \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+ DW\-\_AT\-\_name("uniform")
+ DW\-\_AT\-\_type(reference to 22\$)
+25\$: \livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
+ DW\-\_AT\-\_name("Beta")
+ DW\-\_AT\-\_type(reference to 20\$)
+26\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("V")
+ DW\-\_AT\-\_type(reference to "long")
+27\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("b")
+ DW\-\_AT\-\_type(reference to 25\$)
\end{alltt}
\begin{alltt}
! DWARF representation for X<Y<int>>
!
-30\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("Y")
-31\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("TY")
- DW\_AT\_type(reference to "int")
-32\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("X")
-33\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("TX")
- DW\_AT\_type(reference to 30\$)
+30\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("Y")
+31\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("TY")
+ DW\-\_AT\-\_type(reference to "int")
+32\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("X")
+33\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("TX")
+ DW\-\_AT\-\_type(reference to 30\$)
! DWARF representation for X<Z<int>>
!
-40\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
+40\$: \livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias}
using Z = Y<int>;
- DW\_AT\_name("Z")
- DW\_AT\_type(reference to 30\$)
-41\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("T")
- DW\_AT\_type(reference to "int")
-42\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
- DW\_AT\_name("X")
-43\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
- DW\_AT\_name("TX")
- DW\_AT\_type(reference to 40\$)
+ DW\-\_AT\-\_name("Z")
+ DW\-\_AT\-\_type(reference to 30\$)
+41\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("T")
+ DW\-\_AT\-\_type(reference to "int")
+42\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+ DW\-\_AT\-\_name("X")
+43\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}
+ DW\-\_AT\-\_name("TX")
+ DW\-\_AT\-\_type(reference to 40\$)
! Note that 32\$ and 42\$ are actually the same type
!
-50\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("y")
- DW\_AT\_type(reference to \$32)
-51\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
- DW\_AT\_name("z")
- DW\_AT\_type(reference to \$42)
+50\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("y")
+ DW\-\_AT\-\_type(reference to \$32)
+51\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
+ DW\-\_AT\-\_name("z")
+ DW\-\_AT\-\_type(reference to \$42)
\end{alltt}
debugging information entries, are described in
this section and not necessarily mentioned in all
contexts where they may be appropriate.
-Examples include DW\_AT\_artificial, the declaration
-coordinates, and DW\_AT\_description, among others.
+Examples include DW\-\_AT\-\_artificial, the declaration
+coordinates, and DW\-\_AT\-\_description, among others.
The debugging information entries are contained
in the .debug\_info and .debug\_types
% These each need to link to definition page: FIXME
\begin{figure}[here]
\autorows[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},
-\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},
-\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},
+\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},
+\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},
+\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},
}
\caption{Tag names}\label{fig:tagnames}
\end{figure}
\endfoot
\hline
\endlastfoot
-DW\_AT\_abstract\_origin
+DW\-\_AT\-\_abstract\-\_origin
&Inline instances of inline subprograms \\
&Out\dash{} of\dash{} line instances of inline subprograms \\
-DW\_AT\_accessibility
+DW\-\_AT\-\_accessibility
&C++ and Ada declarations \\
&C++ base classes \\
&C++ inherited members \\
-DW\_AT\_address\_class
+DW\-\_AT\-\_address\-\_class
&Pointer or reference types \\
&Subroutine or subroutine type \\
-DW\_AT\_allocated
+DW\-\_AT\-\_allocated
&Allocation status of types \\
-DW\_AT\_artificial
+DW\-\_AT\-\_artificial
&Objects or types that are not
actually declared in the source \\
-DW\_AT\_associated
+DW\-\_AT\-\_associated
&Association status of types \\
-DW\_AT\_base\_types
+DW\-\_AT\-\_base\-\_types
&Primitive data types of compilation unit \\
-DW\_AT\_binary\_scale
+DW\-\_AT\-\_binary\-\_scale
&Binary scale factor for fixed\dash point type \\
-DW\_AT\_bit\_offset
+DW\-\_AT\-\_bit\-\_offset
&Base type bit location \\
&Data member bit location \\
-DW\_AT\_bit\_size
+DW\-\_AT\-\_bit\-\_size
&Base type bit size \\
&Data member bit size \\
-DW\_AT\_bit\_stride
+DW\-\_AT\-\_bit\-\_stride
&Array element stride (of array type) \\
&Subrange stride (dimension of array type) \\
&Enumeration stride (dimension of array type) \\
-DW\_AT\_byte\_size
+DW\-\_AT\-\_byte\-\_size
&Data object or data type size \\
-DW\_AT\_byte\_stride
+DW\-\_AT\-\_byte\-\_stride
&Array element stride (of array type) \\
&Subrange stride (dimension of array type) \\
&Enumeration stride (dimension of array type) \\
-DW\_AT\_call\_column
+DW\-\_AT\-\_call\-\_column
&Column position of inlined subroutine call \\
-DW\_AT\_call\_file
+DW\-\_AT\-\_call\-\_file
&File containing inlined subroutine call \\
-DW\_AT\_call\_line
+DW\-\_AT\-\_call\-\_line
&Line number of inlined subroutine call \\
-DW\_AT\_calling\_convention
+DW\-\_AT\-\_calling\-\_convention
&Subprogram calling convention \\
-&DW\_AT\_common\_reference \\
+&DW\-\_AT\-\_common\-\_reference \\
&Common block usage \\
-DW\_AT\_comp\_dir
+DW\-\_AT\-\_comp\-\_dir
&Compilation directory \\
-DW\_AT\_const\_value
+DW\-\_AT\-\_const\-\_value
&Constant object \\
-DW\_AT\_const\_value
+DW\-\_AT\-\_const\-\_value
&Enumeration literal value \\
&Template value parameter \\
-DW\_AT\_const\_expr
+DW\-\_AT\-\_const\-\_expr
&Compile\dash time constant object \\
&Compile\dash time constant function \\
-DW\_AT\_containing\_type
+DW\-\_AT\-\_containing\-\_type
&Containing type of pointer to member type \\
-DW\_AT\_count
+DW\-\_AT\-\_count
&Elements of subrange type \\
-DW\_AT\_data\_bit\_offset
+DW\-\_AT\-\_data\-\_bit\-\_offset
&Base type bit location \\
&Data member bit location \\
-DW\_AT\_data\_location
+DW\-\_AT\-\_data\-\_location
&Indirection to actual data \\
-DW\_AT\_data\_member\_location
+DW\-\_AT\-\_data\-\_member\-\_location
&Data member location \\
&Inherited member location \\
-DW\_AT\_decimal\_scale
+DW\-\_AT\-\_decimal\-\_scale
&Decimal scale factor \\
-DW\_AT\_decimal\_sign
+DW\-\_AT\-\_decimal\-\_sign
&Decimal sign representation \\
-DW\_AT\_decl\_column
+DW\-\_AT\-\_decl\-\_column
&Column position of source declaration \\
-DW\_AT\_decl\_file
+DW\-\_AT\-\_decl\-\_file
&File containing source declaration \\
-DW\_AT\_decl\_line
+DW\-\_AT\-\_decl\-\_line
&Line number of source declaration \\
-DW\_AT\_declaration
+DW\-\_AT\-\_declaration
&Incomplete, non\dash defining, or separate entity declaration \\
-DW\_AT\_default\_value
+DW\-\_AT\-\_default\-\_value
&Default value of parameter \\
-DW\_AT\_description
+DW\-\_AT\-\_description
& Artificial name or description \\
-DW\_AT\_digit\_count
+DW\-\_AT\-\_digit\-\_count
&Digit count for packed decimal or numeric string type\\
-DW\_AT\_discr
+DW\-\_AT\-\_discr
&Discriminant of variant part\\
-DW\_AT\_discr\_list
+DW\-\_AT\-\_discr\-\_list
&List of discriminant values\\
-DW\_AT\_discr\_value
+DW\-\_AT\-\_discr\-\_value
&Discriminant value\\
-DW\_AT\_elemental
+DW\-\_AT\-\_elemental
&Elemental property of a subroutine\\
-DW\_AT\_encoding
+DW\-\_AT\-\_encoding
&Encoding of base type\\
-DW\_AT\_endianity
+DW\-\_AT\-\_endianity
&Endianity of data\\
-DW\_AT\_entry\_pc
+DW\-\_AT\-\_entry\-\_pc
&Entry address of module initialization\\
&Entry address of subprogram\\
&Entry address of inlined subprogram\\
-DW\_AT\_enum\_class
+DW\-\_AT\-\_enum\-\_class
&Type safe enumeration definition\\
-DW\_AT\_explicit
+DW\-\_AT\-\_explicit
&Explicit property of member function\\
-DW\_AT\_extension
+DW\-\_AT\-\_extension
&Previous namespace extension or original namespace\\
-DW\_AT\_external
+DW\-\_AT\-\_external
&External subroutine\\
&External variable\\
-DW\_AT\_frame\_base
+DW\-\_AT\-\_frame\-\_base
&Subroutine frame base address\\
-DW\_AT\_friend
+DW\-\_AT\-\_friend
&Friend relationship\\
-DW\_AT\_high\_pc
+DW\-\_AT\-\_high\-\_pc
&Contiguous range of code addresses\\
-DW\_AT\_identifier\_case
+DW\-\_AT\-\_identifier\-\_case
&Identifier case rule \\
-DW\_AT\_import
+DW\-\_AT\-\_import
&Imported declaration \\
&Imported unit \\
&Namespace alias \\
&Namespace using declaration \\
&Namespace using directive \\
-DW\_AT\_inline
+DW\-\_AT\-\_inline
&Abstract instance\\
&Inlined subroutine\\
-DW\_AT\_is\_optional
+DW\-\_AT\-\_is\-\_optional
&Optional parameter\\
-DW\_AT\_language
+DW\-\_AT\-\_language
&Programming language\\
-DW\_AT\_linkage\_name
+DW\-\_AT\-\_linkage\-\_name
&Object file linkage name of an entity\\
-DW\_AT\_location
+DW\-\_AT\-\_location
&Data object location\\
-DW\_AT\_low\_pc
+DW\-\_AT\-\_low\-\_pc
&Code address or range of addresses\\
-DW\_AT\_lower\_bound
+DW\-\_AT\-\_lower\-\_bound
&Lower bound of subrange\\
-DW\_AT\_macro\_info
+DW\-\_AT\-\_macro\-\_info
&Macro information (\#define, \#undef)\\
-DW\_AT\_main\_subprogram
+DW\-\_AT\-\_main\-\_subprogram
&Main or starting subprogram\\
&Unit containing main or starting subprogram\\
-DW\_AT\_mutable
+DW\-\_AT\-\_mutable
&Mutable property of member data\\
-DW\_AT\_name
+DW\-\_AT\-\_name
&Name of declaration\\
&Path name of compilation source\\
-DW\_AT\_namelist\_item
+DW\-\_AT\-\_namelist\-\_item
&Namelist item\\
-DW\_AT\_object\_pointer
+DW\-\_AT\-\_object\-\_pointer
&Object (this, self) pointer of member function\\
-DW\_AT\_ordering
+DW\-\_AT\-\_ordering
&Array row/column ordering\\
-DW\_AT\_picture\_string
+DW\-\_AT\-\_picture\-\_string
&Picture string for numeric string type\\
-DW\_AT\_priority
+DW\-\_AT\-\_priority
&Module priority\\
-DW\_AT\_producer
+DW\-\_AT\-\_producer
&Compiler identification\\
-DW\_AT\_prototyped
+DW\-\_AT\-\_prototyped
&Subroutine prototype\\
-DW\_AT\_pure
+DW\-\_AT\-\_pure
&Pure property of a subroutine\\
-DW\_AT\_ranges
+DW\-\_AT\-\_ranges
&Non\dash contiguous range of code addresses\\
-DW\_AT\_recursive
+DW\-\_AT\-\_recursive
&Recursive property of a subroutine\\
-DW\_AT\_return\_addr
+DW\-\_AT\-\_return\-\_addr
&Subroutine return address save location\\
-DW\_AT\_segment
+DW\-\_AT\-\_segment
&Addressing information\\
-DW\_AT\_sibling
+DW\-\_AT\-\_sibling
&Debugging information entry relationship\\
-DW\_AT\_small
+DW\-\_AT\-\_small
&Scale factor for fixed\dash point type\\
-DW\_AT\_signature
+DW\-\_AT\-\_signature
&Type signature\\
-DW\_AT\_specification
+DW\-\_AT\-\_specification
&Incomplete, non\dash defining, or separate declaration
corresponding to a declaration\\
-DW\_AT\_start\_scope
+DW\-\_AT\-\_start\-\_scope
&Object declaration\\
&Type declaration\\
-DW\_AT\_static\_link
+DW\-\_AT\-\_static\-\_link
&Location of uplevel frame\\
-DW\_AT\_stmt\_list
+DW\-\_AT\-\_stmt\-\_list
&Line number information for unit\\
-DW\_AT\_string\_length
+DW\-\_AT\-\_string\-\_length
&String length of string type\\
-DW\_AT\_threads\_scaled
+DW\-\_AT\-\_threads\-\_scaled
&UPC array bound THREADS scale factor\\
-DW\_AT\_trampoline
+DW\-\_AT\-\_trampoline
&Target subroutine\\
-DW\_AT\_type
+DW\-\_AT\-\_type
&Type of declaration\\
&Type of subroutine return\\
-DW\_AT\_upper\_bound
+DW\-\_AT\-\_upper\-\_bound
&Upper bound of subrange\\
-DW\_AT\_use\_location
+DW\-\_AT\-\_use\-\_location
&Member location for pointer to member type\\
-DW\_AT\_use\_UTF8
+DW\-\_AT\-\_use\-\_UTF8
&Compilation unit uses UTF\dash 8 strings \\
-DW\_AT\_variable\_parameter
+DW\-\_AT\-\_variable\-\_parameter
&Non\dash constant parameter flag \\
-DW\_AT\_virtuality
+DW\-\_AT\-\_virtuality
&Virtuality indication \\
&Virtuality of base class \\
&Virtuality of function \\
-DW\_AT\_visibility
+DW\-\_AT\-\_visibility
&Visibility of declaration\\
-DW\_AT\_vtable\_elem\_location
+DW\-\_AT\-\_vtable\-\_elem\-\_location
&Virtual function vtable slot\\
\end{longtable}
it will be important for consumers of that information to
quickly scan chains of sibling entries, while ignoring the
children of individual siblings, that producer may attach a
-DW\_AT\_sibling attribute to any debugging information entry.
+DW\-\_AT\-\_sibling attribute to any debugging information entry.
The
value of this attribute is a reference to the sibling entry
of the entry to which the attribute is attached.
are pushed on the stack.
\begin{enumerate}[1]
-\item DW\_OP\_lit0, DW\_OP\_lit1, \dots, DW\_OP\_lit31 \\
-The DW\_OP\_litn operations encode the unsigned literal values
+\item DW\-\_OP\-\_lit0, DW\-\_OP\-\_lit1, \dots, DW\-\_OP\-\_lit31 \\
+The DW\-\_OP\-\_litn operations encode the unsigned literal values
from 0 through 31, inclusive.
-\item DW\_OP\_addr \\
-The DW\_OP\_addr operation has a single operand that encodes
+\item DW\-\_OP\-\_addr \\
+The DW\-\_OP\-\_addr operation has a single operand that encodes
a machine address and whose size is the size of an address
on the target machine.
-\item DW\_OP\_const1u, DW\_OP\_const2u, DW\_OP\_const4u, DW\_OP\_const8u \\
-The single operand of a DW\_OP\_constnu operation provides a 1,
+\item DW\-\_OP\-\_const1u, DW\-\_OP\-\_const2u, DW\-\_OP\-\_const4u, DW\-\_OP\-\_const8u \\
+The single operand of a DW\-\_OP\-\_constnu operation provides a 1,
2, 4, or 8\dash byte unsigned integer constant, respectively.
-\item DW\_OP\_const1s , DW\_OP\_const2s, DW\_OP\_const4s, DW\_OP\_const8s \\
-The single operand of a DW\_OP\_constns operation provides a 1,
+\item DW\-\_OP\-\_const1s , DW\-\_OP\-\_const2s, DW\-\_OP\-\_const4s, DW\-\_OP\-\_const8s \\
+The single operand of a DW\-\_OP\-\_constns operation provides a 1,
2, 4, or 8\dash byte signed integer constant, respectively.
-\item DW\_OP\_constu \\
-The single operand of the DW\_OP\_constu operation provides
+\item DW\-\_OP\-\_constu \\
+The single operand of the DW\-\_OP\-\_constu operation provides
an unsigned LEB128 integer constant.
-\item DW\_OP\_consts \\
-The single operand of the DW\_OP\_consts operation provides
+\item DW\-\_OP\-\_consts \\
+The single operand of the DW\-\_OP\-\_consts operation provides
a signed LEB128 integer constant.
\end{enumerate}
\begin{enumerate}[1]
-\item DW\_OP\_fbreg \\
-The DW\_OP\_fbreg operation provides a signed LEB128 offset
+\item DW\-\_OP\-\_fbreg \\
+The DW\-\_OP\-\_fbreg operation provides a signed LEB128 offset
from the address specified by the location description in the
-DW\_AT\_frame\_base attribute of the current function. (This
+DW\-\_AT\-\_frame\-\_base attribute of the current function. (This
is typically a “stack pointer” register plus or minus
some offset. On more sophisticated systems it might be a
location list that adjusts the offset according to changes
in the stack pointer as the PC changes.)
-\item DW\_OP\_breg0, DW\_OP\_breg1, \dots, DW\_OP\_breg31\\
-The single operand of the DW\_OP\_bregn operations provides
+\item DW\-\_OP\-\_breg0, DW\-\_OP\-\_breg1, \dots, DW\-\_OP\-\_breg31\\
+The single operand of the DW\-\_OP\-\_bregn operations provides
a signed LEB128 offset from
the specified register.
-\item DW\_OP\_bregx \\
-The DW\_OP\_bregx operation has two operands: a register
+\item DW\-\_OP\-\_bregx \\
+The DW\-\_OP\-\_bregx operation has two operands: a register
which is specified by an unsigned LEB128 number, followed by
a signed LEB128 offset.
recently added entry) has index 0.
\begin{enumerate}[1]
-\item \livetarg{chap:DWOPdup}{DW\_OP\_dup} \\
-The DW\_OP\_dup operation duplicates the value at the top of the stack.
+\item \livetarg{chap:DWOPdup}{DW\-\_OP\-\_dup} \\
+The DW\-\_OP\-\_dup operation duplicates the value at the top of the stack.
-\item \livetarg{chap:DWOPdrop}{DW\_OP\_drop} \\
-The DW\_OP\_drop operation pops the value at the top of the stack.
+\item \livetarg{chap:DWOPdrop}{DW\-\_OP\-\_drop} \\
+The DW\-\_OP\-\_drop operation pops the value at the top of the stack.
-\item \livetarg{chap:DWOPpick}{DW\_OP\_pick} \\
-The single operand of the DW\_OP\_pick operation provides a
+\item \livetarg{chap:DWOPpick}{DW\-\_OP\-\_pick} \\
+The single operand of the DW\-\_OP\-\_pick 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.
-\item \livetarg{chap:DWOPover}{DW\_OP\_over} \\
-The DW\_OP\_over operation duplicates the entry currently second
+\item \livetarg{chap:DWOPover}{DW\-\_OP\-\_over} \\
+The DW\-\_OP\-\_over operation duplicates the entry currently second
in the stack at the top of the stack.
This is equivalent to
-a DW\_OP\_pick operation, with index 1.
+a DW\-\_OP\-\_pick operation, with index 1.
-\item \livetarg{chap:DWOPswap}{DW\_OP\_swap} \\
-The DW\_OP\_swap operation swaps the top two stack entries.
+\item \livetarg{chap:DWOPswap}{DW\-\_OP\-\_swap} \\
+The DW\-\_OP\-\_swap 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.
-\item \livetarg{chap:DWOProt}{DW\_OP\_rot} \\
-The DW\_OP\_rot operation rotates the first three stack
+\item \livetarg{chap:DWOProt}{DW\-\_OP\-\_rot} \\
+The DW\-\_OP\-\_rot 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.
-\item \livetarg{chap:DWOPderef}{DW\_OP\_deref} \\
-The DW\_OP\_deref operation pops the top stack entry and
+\item \livetarg{chap:DWOPderef}{DW\-\_OP\-\_deref} \\
+The DW\-\_OP\-\_deref operation pops the top stack entry and
treats it as an address. The value
retrieved from that address is pushed.
The size of the data retrieved from the dereferenced
address is the size of an address on the target machine.
-\item \livetarg{chap:DWOPderefsize}{DW\_OP\_deref\_size} \\
-The DW\_OP\_deref\_size operation behaves like the DW\_OP\_deref
+\item \livetarg{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} \\
+The DW\-\_OP\-\_deref\-\_size operation behaves like the DW\-\_OP\-\_deref
operation: it pops the top stack entry and treats it as an
address. The value retrieved from that address is pushed. In
-the DW\_OP\_deref\_size operation, however, the size in bytes
+the DW\-\_OP\-\_deref\-\_size 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
retrieved is zero extended to the size of an address on the
target machine before being pushed onto the expression stack.
-\item \livetarg{chap:DWOPxderef}{DW\_OP\_xderef} \\
-The DW\_OP\_xderef operation provides an extended dereference
+\item \livetarg{chap:DWOPxderef}{DW\-\_OP\-\_xderef} \\
+The DW\-\_OP\-\_xderef 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 “address
space identifier” for those architectures that support
of the data retrieved from the dereferenced address is the
size of an address on the target machine.
-\item \livetarg{chap:DWOPxderefsize}{DW\_OP\_xderef\_size}\\
-The DW\_OP\_xderef\_size operation behaves like the
-DW\_OP\_xderef operation.The entry at the top of the stack is
+\item \livetarg{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size}\\
+The DW\-\_OP\-\_xderef\-\_size operation behaves like the
+DW\-\_OP\-\_xderef operation.The entry at the top of the stack is
treated as an address. The second stack entry is treated as
an “address space identifier” for those architectures
that support multiple 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 DW\_OP\_xderef\_size operation, however,
+new stack top. In the DW\-\_OP\-\_xderef\-\_size 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
retrieved is zero extended to the size of an address on the
target machine before being pushed onto the expression stack.
-\item \livetarg{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}\\
-The DW\_OP\_push\_object\_address operation pushes the address
+\item \livetarg{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}\\
+The DW\-\_OP\-\_push\-\_object\-\_address operation pushes the address
of the object currently being evaluated as part of evaluation
of a user presented expression. This object may correspond
to an independent variable described by its own debugging
evaluation. This operator provides explicit functionality
(especially for arrays involving descriptors) that is analogous
to the implicit push of the base address of a structure prior
-to evaluation of a DW\_AT\_data\_member\_location to access a
+to evaluation of a DW\-\_AT\-\_data\-\_member\-\_location to access a
data member of a structure. For an example, see
Appendix \refersec{app:aggregateexamples}.
-\item \livetarg{chap:DWOPformtlsaddress}{DW\_OP\_form\_tls\_address} \\
-The DW\_OP\_form\_tls\_address operation pops a value from the
+\item \livetarg{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address} \\
+The DW\-\_OP\-\_form\-\_tls\-\_address operation pops a value from the
stack, translates it into an address in the current thread's
thread\dash local storage block, and pushes the address. If the
-DWARF expression containing the DW\_OP\_form\_tls\_address
+DWARF expression containing the DW\-\_OP\-\_form\-\_tls\-\_address
operation belongs to the main executable's DWARF info, the
operation uses the main executable's thread\dash local storage
block; if the expression belongs to a shared library's
the appropriate block can be complex (in some cases, the
compiler emits a function call to do it), and difficult
to describe using ordinary DWARF location descriptions.
-DW\_OP\_form\_tls\_address leaves the computation to the
+DW\-\_OP\-\_form\-\_tls\-\_address leaves the computation to the
consumer.
-\item \livetarg{chap:DWOPcallframecfa}{DW\_OP\_call\_frame\_cfa} \\
-The DW\_OP\_call\_frame\_cfa operation pushes the value of the
+\item \livetarg{chap:DWOPcallframecfa}{DW\-\_OP\-\_call\-\_frame\-\_cfa} \\
+The DW\-\_OP\-\_call\-\_frame\-\_cfa operation pushes the value of the
CFA, obtained from the Call Frame Information
(see Section \refersec{chap:callframeinformation}).
-Although the value of DW\_AT\_frame\_base
+Although the value of DW\-\_AT\-\_frame\-\_base
can be computed using other DWARF expression operators,
in some cases this would require an extensive location list
because the values of the registers used in computing the
bits). Such operations do not cause an exception on overflow.
\begin{enumerate}[1]
-\item \livetarg{chap:DWOPabs}{DW\_OP\_abs} \\
-The DW\_OP\_abs operation pops the top stack entry, interprets
+\item \livetarg{chap:DWOPabs}{DW\-\_OP\-\_abs} \\
+The DW\-\_OP\-\_abs 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.
-\item \livetarg{chap:DWOPand}{DW\_OP\_and} \\
-The DW\_OP\_and operation pops the top two stack values, performs
+\item \livetarg{chap:DWOPand}{DW\-\_OP\-\_and} \\
+The DW\-\_OP\-\_and operation pops the top two stack values, performs
a bitwise and operation on the two, and pushes the result.
-\item \label{chap:DWOPdiv}{DW\_OP\_div} \\
-The DW\_OP\_div operation pops the top two stack values, divides the former second entry by
+\item \label{chap:DWOPdiv}{DW\-\_OP\-\_div} \\
+The DW\-\_OP\-\_div 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.
-\item \livetarg{chap:DWOPminus}{DW\_OP\_minus} \\
-The DW\_OP\_minus operation pops the top two stack values, subtracts the former top of the
+\item \livetarg{chap:DWOPminus}{DW\-\_OP\-\_minus} \\
+The DW\-\_OP\-\_minus operation pops the top two stack values, subtracts the former top of the
stack from the former second entry, and pushes the result.
-\item \livetarg{chap:DWOPmod}{DW\_OP\_mod}\\
-The DW\_OP\_mod operation pops the top two stack values and pushes the result of the
+\item \livetarg{chap:DWOPmod}{DW\-\_OP\-\_mod}\\
+The DW\-\_OP\-\_mod 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.
-\item \livetarg{chap:DWOPmul}{DW\_OP\_mul} \\
-The DW\_OP\_mul operation pops the top two stack entries, multiplies them together, and
+\item \livetarg{chap:DWOPmul}{DW\-\_OP\-\_mul} \\
+The DW\-\_OP\-\_mul operation pops the top two stack entries, multiplies them together, and
pushes the result.
-\item \livetarg{chap:DWOPneg}{DW\_OP\_neg} \\
-The DW\_OP\_neg operation pops the top stack entry, interprets
+\item \livetarg{chap:DWOPneg}{DW\-\_OP\-\_neg} \\
+The DW\-\_OP\-\_neg 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.
-\item \livetarg{chap:DWOPnot}{DW\_OP\_not} \\
-The DW\_OP\_not operation pops the top stack entry, and pushes
+\item \livetarg{chap:DWOPnot}{DW\-\_OP\-\_not} \\
+The DW\-\_OP\-\_not operation pops the top stack entry, and pushes
its bitwise complement.
-\item \livetarg{chap:DWOPor}{DW\_OP\_or} \\
-The DW\_OP\_or operation pops the top two stack entries, performs
+\item \livetarg{chap:DWOPor}{DW\-\_OP\-\_or} \\
+The DW\-\_OP\-\_or operation pops the top two stack entries, performs
a bitwise or operation on the two, and pushes the result.
-\item \livetarg{chap:DWOPplus}{DW\_OP\_plus} \\
-The DW\_OP\_plus operation pops the top two stack entries,
+\item \livetarg{chap:DWOPplus}{DW\-\_OP\-\_plus} \\
+The DW\-\_OP\-\_plus operation pops the top two stack entries,
adds them together, and pushes the result.
-\item \livetarg{chap:DWOPplusuconst}{DW\_OP\_plus\_uconst} \\
-The DW\_OP\_plus\_uconst operation pops the top stack entry,
+\item \livetarg{chap:DWOPplusuconst}{DW\-\_OP\-\_plus\-\_uconst} \\
+The DW\-\_OP\-\_plus\-\_uconst operation pops the top stack entry,
adds it to the unsigned LEB128 constant operand and pushes
the result. This operation is supplied specifically to be
able to encode more field offsets in two bytes than can be
-done with “DW\_OP\_litn DW\_OP\_plus”.
+done with “DW\-\_OP\-\_litn DW\-\_OP\-\_plus”.
-\item \livetarg{chap:DWOPshl}{DW\_OP\_shl} \\
-The DW\_OP\_shl operation pops the top two stack entries,
+\item \livetarg{chap:DWOPshl}{DW\-\_OP\-\_shl} \\
+The DW\-\_OP\-\_shl 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.
-\item \livetarg{chap:DWOPshr}{DW\_OP\_shr} \\
-The DW\_OP\_shr operation pops the top two stack entries,
+\item \livetarg{chap:DWOPshr}{DW\-\_OP\-\_shr} \\
+The DW\-\_OP\-\_shr 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.
-\item \livetarg{chap:DWOPshra}{DW\_OP\_shra} \\
-The DW\_OP\_shra operation pops the top two stack entries,
+\item \livetarg{chap:DWOPshra}{DW\-\_OP\-\_shra} \\
+The DW\-\_OP\-\_shra 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.
-\item \livetarg{chap:DWOPxor}{DW\_OP\_xor} \\
-The DW\_OP\_xor operation pops the top two stack entries,
+\item \livetarg{chap:DWOPxor}{DW\-\_OP\-\_xor} \\
+The DW\-\_OP\-\_xor operation pops the top two stack entries,
performs a bitwise exclusive\dash or operation on the two, and
pushes the result.
\label{chap:controlflowoperations}
The following operations provide simple control of the flow of a DWARF expression.
\begin{enumerate}[1]
-\item DW\_OP\_le, DW\_OP\_ge, DW\_OP\_eq, DW\_OP\_lt, DW\_OP\_gt, DW\_OP\_ne \\
+\item DW\-\_OP\-\_le, DW\-\_OP\-\_ge, DW\-\_OP\-\_eq, DW\-\_OP\-\_lt, DW\-\_OP\-\_gt, DW\-\_OP\-\_ne \\
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 DW\_OP\_le (less than or equal to), DW\_OP\_ge
-(greater than or equal to), DW\_OP\_eq (equal to), DW\_OP\_lt (less
-than), DW\_OP\_gt (greater than) and DW\_OP\_ne (not equal to).
+operators are DW\-\_OP\-\_le (less than or equal to), DW\-\_OP\-\_ge
+(greater than or equal to), DW\-\_OP\-\_eq (equal to), DW\-\_OP\-\_lt (less
+than), DW\-\_OP\-\_gt (greater than) and DW\-\_OP\-\_ne (not equal to).
-\item DW\_OP\_skip \\
-DW\_OP\_skip is an unconditional branch. Its single operand
+\item DW\-\_OP\-\_skip \\
+DW\-\_OP\-\_skip 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.
-\item DW\_OP\_bra \\
-DW\_OP\_bra is a conditional branch. Its single operand is a
+\item DW\-\_OP\-\_bra \\
+DW\-\_OP\-\_bra 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.
-\item DW\_OP\_call2, DW\_OP\_call4, DW\_OP\_call\_ref \\
-DW\_OP\_call2, DW\_OP\_call4, and DW\_OP\_call\_ref perform
+\item DW\-\_OP\-\_call2, DW\-\_OP\-\_call4, DW\-\_OP\-\_call\-\_ref \\
+DW\-\_OP\-\_call2, DW\-\_OP\-\_call4, and DW\-\_OP\-\_call\-\_ref perform
subroutine calls during evaluation of a DWARF expression or
location description.
-For DW\_OP\_call2 and
+For DW\-\_OP\-\_call2 and
DW\-\_OP\-\_call4,
the
operand is the 2\dash~ or 4\dash byte
unsigned offset, respectively,
of a debugging information entry in the current compilation
-unit. The DW\_OP\_call\_ref operator has a single operand. In the
+unit. The DW\-\_OP\-\_call\-\_ref operator has a single operand. In the
32\dash bit DWARF format, the operand is a 4\dash byte unsigned value;
in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
must be performed by the consumer.
\textit{Operand interpretation of
-DW\_OP\_call2, DW\_OP\_call4 and DW\_OP\_call\_ref is exactly like
-that for DW\_FORM\_ref2, DW\_FORM\_ref4 and DW\_FORM\_ref\_addr,
+DW\-\_OP\-\_call2, DW\-\_OP\-\_call4 and DW\-\_OP\-\_call\-\_ref is exactly like
+that for DW\-\_FORM\-\_ref2, DW\-\_FORM\-\_ref4 and DW\-\_FORM\-\_ref\-\_addr,
respectively
(see Section \refersec{datarep:attributeencodings}).
}
\subsubsection{Special Operations}
There is one special operation currently defined:
\begin{enumerate}[1]
-\item DW\_OP\_nop \\
-The DW\_OP\_nop operation is a place holder. It has no effect
+\item DW\-\_OP\-\_nop \\
+The DW\-\_OP\-\_nop operation is a place holder. It has no effect
on the location stack or any of its values.
\end{enumerate}
\begin{tabular}{rrcrr}
&Before & Operation&& After \\
-0& 17& \livelink{chap:DWOPdup}{DW\_OP\_dup} &0 &17 \\
+0& 17& \livelink{chap:DWOPdup}{DW\-\_OP\-\_dup} &0 &17 \\
1& 29& & 1 & 17 \\
2& 1000 & & 2 & 29\\
& & & 3&1000\\
& & & & \\
-0 & 17 & \livelink{chap:DWOPdrop}{DW\_OP\_drop} & 0 & 29 \\
+0 & 17 & \livelink{chap:DWOPdrop}{DW\-\_OP\-\_drop} & 0 & 29 \\
1 &29 & & 1 & 1000 \\
2 &1000& & & \\
& & & & \\
-0 & 17 & \livelink{chap:DWOPpick}{DW\_OP\_pick} & 0 & 1000 \\
+0 & 17 & \livelink{chap:DWOPpick}{DW\-\_OP\-\_pick} & 0 & 1000 \\
1 & 29 & & 1&17 \\
2 &1000& &2&29 \\
& & &3&1000 \\
& & & & \\
-0&17& \livelink{chap:DWOPover}{DW\_OP\_over}&0&29 \\
+0&17& \livelink{chap:DWOPover}{DW\-\_OP\-\_over}&0&29 \\
1&29& & 1&17 \\
2&1000 & & 2&29\\
& & & 3&1000 \\
& & & & \\
-0&17& \livelink{chap:DWOPswap}{DW\_OP\_swap} &0&29 \\
+0&17& \livelink{chap:DWOPswap}{DW\-\_OP\-\_swap} &0&29 \\
1&29& & 1&17 \\
2&1000 & & 2&1000 \\
& & & & \\
-0&17&\livelink{chap:DWOProt}{DW\_OP\_rot} & 0 &29 \\
+0&17&\livelink{chap:DWOProt}{DW\-\_OP\-\_rot} & 0 &29 \\
1&29 & & 1 & 1000 \\
2& 1000 & & 2 & 17 \\
\end{tabular}
by the ABI authoring committee for each architecture.
}
\begin{enumerate}[1]
-\item DW\_OP\_reg0, DW\_OP\_reg1, ..., DW\_OP\_reg31 \\
-The DW\_OP\_regn operations encode the names of up to 32
+\item DW\-\_OP\-\_reg0, DW\-\_OP\-\_reg1, ..., DW\-\_OP\-\_reg31 \\
+The DW\-\_OP\-\_regn operations encode the names of up to 32
registers, numbered from 0 through 31, inclusive. The object
addressed is in register n.
-\item DW\_OP\_regx \\
-The DW\_OP\_regx operation has a single unsigned LEB128 literal
+\item DW\-\_OP\-\_regx \\
+The DW\-\_OP\-\_regx 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
-DW\_OP\_bregx
+DW\-\_OP\-\_bregx
(Section \refersec{chap:registerbasedaddressing})}.
or is computed from other locations and values in the program.
\begin{enumerate}[1]
-\item DW\_OP\_implicit\_value \\
-The DW\_OP\_implicit\_value operation specifies an immediate value
+\item DW\-\_OP\-\_implicit\-\_value \\
+The DW\-\_OP\-\_implicit\-\_value operation specifies an immediate value
using two operands: an unsigned LEB128 length, followed by
a block representing the value in the memory representation
of the target machine. The length operand gives the length
in bytes of the block.
-\item DW\_OP\_stack\_value \\
-The DW\_OP\_stack\_value operation specifies that the object
+\item DW\-\_OP\-\_stack\-\_value \\
+The DW\-\_OP\-\_stack\-\_value 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
-DW\_OP\_stack\_value operation terminates the expression.
+DW\-\_OP\-\_stack\-\_value operation terminates the expression.
\end{enumerate}
of the resultant value is contained.
\begin{enumerate}[1]
-\item DW\_OP\_piece \\
-The DW\_OP\_piece operation takes a single operand, which is an
+\item DW\-\_OP\-\_piece \\
+The DW\-\_OP\-\_piece 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
location description. If the piece is located in a register,
\textit{Many compilers store a single variable in sets of registers,
or store a variable partially in memory and partially in
-registers. DW\_OP\_piece provides a way of describing how large
+registers. DW\-\_OP\-\_piece provides a way of describing how large
a part of a variable a particular DWARF location description
refers to. }
-\item DW\_OP\_bit\_piece \\
-The DW\_OP\_bit\_piece operation takes two operands. The first
+\item DW\-\_OP\-\_bit\-\_piece \\
+The DW\-\_OP\-\_bit\-\_piece 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
gives the offset in bits from the location defined by the
Interpretation of the
offset depends on the kind of location description. If the
location description is empty, the offset doesn’t matter and
-the DW\_OP\_bit\_piece operation describes a piece consisting
+the DW\-\_OP\-\_bit\-\_piece 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 DW\_OP\_bit\_piece operation describes a
+memory address, the DW\-\_OP\-\_bit\-\_piece 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 DW\_OP\_bit\_piece operation describes
+value or stack value, the DW\-\_OP\-\_bit\-\_piece operation describes
a sequence of bits using the least significant bits of that
value.
\end{enumerate}
-\textit{DW\_OP\_bit\_piece is used instead of DW\_OP\_piece when
+\textit{DW\-\_OP\-\_bit\-\_piece is used instead of DW\-\_OP\-\_piece 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.}
Here are some examples of how DWARF operations are used to form location descriptions:
-DW\_OP\_reg3
+DW\-\_OP\-\_reg3
\begin{myindentpara}{1cm}
The value is in register 3.
\end{myindentpara}
-DW\_OP\_regx 54
+DW\-\_OP\-\_regx 54
\begin{myindentpara}{1cm}
The value is in register 54.
\end{myindentpara}
-DW\_OP\_addr 0x80d0045c
+DW\-\_OP\-\_addr 0x80d0045c
\begin{myindentpara}{1cm}
The value of a static variable is at machine address 0x80d0045c.
\end{myindentpara}
-DW\_OP\_breg11 44
+DW\-\_OP\-\_breg11 44
\begin{myindentpara}{1cm}
Add 44 to the value in register 11 to get the address of an automatic
variable instance.
\end{myindentpara}
-DW\_OP\_fbreg -50
+DW\-\_OP\-\_fbreg -50
\begin{myindentpara}{1cm}
-Given a DW\_AT\_frame\_base value of ``DW\_OP\_breg31 64,''this example
+Given a DW\-\_AT\-\_frame\-\_base value of ``DW\-\_OP\-\_breg31 64,''this example
computes the address of a local variable that is -50 bytes from a
logical frame pointer that is computed by adding 64 to the current
stack pointer (register 31).
\end{myindentpara}
-DW\_OP\_bregx 54 32 DW\_OP\_deref
+DW\-\_OP\-\_bregx 54 32 DW\-\_OP\-\_deref
\begin{myindentpara}{1cm}
A call-by-reference parameter whose address is in the word 32 bytes
from where register 54 points.
\end{myindentpara}
-DW\_OP\_plus\_uconst 4
+DW\-\_OP\-\_plus\-\_uconst 4
\begin{myindentpara}{1cm}
A structure member is four bytes from the start of the structure
instance. The base address is assumed to be already on the stack.
\end{myindentpara}
-DW\_OP\_reg3 DW\_OP\_piece 4 DW\_OP\_reg10 DW\_OP\_piece 2
+DW\-\_OP\-\_reg3 DW\-\_OP\-\_piece 4 DW\-\_OP\-\_reg10 DW\-\_OP\-\_piece 2
\begin{myindentpara}{1cm}
A variable whose first four bytes reside in register 3 and whose next
two bytes reside in register 10.
\end{myindentpara}
-DW\_OP\_reg0 DW\_OP\_piece 4 DW\_OP\_piece 4 DW\_OP\_fbreg -12 DW\_OP\_piece 4
+DW\-\_OP\-\_reg0 DW\-\_OP\-\_piece 4 DW\-\_OP\-\_piece 4 DW\-\_OP\-\_fbreg -12 DW\-\_OP\-\_piece 4
\begin{myindentpara}{1cm}
A twelve byte value whose first four bytes reside in register zero,
whose middle four bytes are unavailable (perhaps due to optimization),
base.
\end{myindentpara}
-DW\_OP\_breg1 0 DW\_OP\_breg2 0 DW\_OP\_plus DW\_OP\_stack\_value
+DW\-\_OP\-\_breg1 0 DW\-\_OP\-\_breg2 0 DW\-\_OP\-\_plus DW\-\_OP\-\_stack\-\_value
\begin{myindentpara}{1cm}
Add the contents of r1 and r2 to compute a value. This value is the
“contents” of an otherwise anonymous location.
\end{myindentpara}
-DW\_OP\_lit1 DW\_OP\_stack\_value DW\_OP\_piece a \\
-DW\_OP\_breg3 0 DW\_OP\_breg4 0 DW\_OP\_plus DW\_OP\_stack\_value DW\_OP\_piece 4
+DW\-\_OP\-\_lit1 DW\-\_OP\-\_stack\-\_value DW\-\_OP\-\_piece a \\
+DW\-\_OP\-\_breg3 0 DW\-\_OP\-\_breg4 0 DW\-\_OP\-\_plus DW\-\_OP\-\_stack\-\_value DW\-\_OP\-\_piece 4
\begin{myindentpara}{1cm}
The object value is found in an anonymous (virtual) location whose
value consists of two parts, given in memory address order: the 4 byte
entity. The accessibility specifies which classes of other
program objects are permitted access to the object in question.}
-The accessibility of a declaration is represented by a DW\_AT\_accessibility attribute, whose
+The accessibility of a declaration is represented by a DW\-\_AT\-\_accessibility attribute, whose
value is a constant drawn from the set of codes listed in Figure
\ref{fig:accessibilitycodes}.
\begin{figure}[here]
\begin{description}
\centering
-\item [DW\_ACCESS\_public]
-\item [DW\_ACCESS\_private]
-\item [DW\_ACCESS\_protected]
+\item [DW\-\_ACCESS\-\_public]
+\item [DW\-\_ACCESS\-\_private]
+\item [DW\-\_ACCESS\-\_protected]
\end{description}
\caption{Accessibility codes}
\label{fig:accessibilitycodes}
declared.}
The visibility of a declaration is represented
-by a DW\_AT\_visibility attribute, whose value is a
+by a DW\-\_AT\-\_visibility attribute, whose value is a
constant drawn from the set of codes listed in
Figure \ref{fig:visibilitycodes}.
\begin{figure}[here]
\begin{description}
\centering
-\item [DW\_VIS\_local]
-\item [DW\_VIS\_exported]
-\item [DW\_VIS\_qualified]
+\item [DW\-\_VIS\-\_local]
+\item [DW\-\_VIS\-\_exported]
+\item [DW\-\_VIS\-\_qualified]
\end{description}
\caption{Visibility codes}
\label{fig:visibilitycodes}
member functions and for virtual base classes.}
The virtuality of a declaration is represented by a
-DW\_AT\_virtuality attribute, whose value is a constant drawn
+DW\-\_AT\-\_virtuality attribute, whose value is a constant drawn
from the set of codes listed in
Figure \ref{fig:virtualitycodes}.
\begin{figure}[here]
\begin{description}
\centering
-\item [DW\_VIRTUALITY\_none]
-\item [DW\_VIRTUALITY\_virtual]
-\item [DW\_VIRTUALITY\_pure\_virtual]
+\item [DW\-\_VIRTUALITY\-\_none]
+\item [DW\-\_VIRTUALITY\-\_virtual]
+\item [DW\-\_VIRTUALITY\-\_pure\-\_virtual]
\end{description}
\caption{Virtuality codes}
\label{fig:virtualitycodes}
Any debugging information entry representing the
declaration of an object or type artificially generated by
a compiler and not explicitly declared by the source program
-may have a DW\_AT\_artificial attribute, which is a flag.
+may have a DW\-\_AT\-\_artificial attribute, which is a flag.
\section{Segmented Addresses}
\label{chap:segmentedaddresses}
Any debugging information entry that contains a description
of the location of an object or subroutine may have
-a DW\_AT\_segment attribute, whose value is a location
+a DW\-\_AT\-\_segment attribute, whose value is a location
description. The description evaluates to the segment selector
of the item being described. If the entry containing the
-DW\_AT\_segment attribute has a DW\_AT\_low\_pc, DW\_AT\_high\_pc,
-DW\_AT\_ranges or DW\_AT\_entry\_pc attribute, or a location
+DW\-\_AT\-\_segment attribute has a DW\-\_AT\-\_low\-\_pc, DW\-\_AT\-\_high\-\_pc,
+DW\-\_AT\-\_ranges or DW\-\_AT\-\_entry\-\_pc attribute, or a location
description that evaluates to an address, then those address
values represent the offset portion of the address within
-the segment specified by DW\_AT\_segment.
+the segment specified by DW\-\_AT\-\_segment.
-If an entry has no DW\_AT\_segment attribute, it inherits
+If an entry has no DW\-\_AT\-\_segment attribute, it inherits
the segment value from its parent entry. If none of the
entries in the chain of parents for this entry back to
-its containing compilation unit entry have DW\_AT\_segment
+its containing compilation unit entry have DW\-\_AT\-\_segment
attributes, then the entry is assumed to exist within a flat
-address space. Similarly, if the entry has a DW\_AT\_segment
+address space. Similarly, if the entry has a DW\-\_AT\-\_segment
attribute containing an empty location description, that
entry is assumed to exist within a flat address space.
Any debugging information entry representing a pointer or
reference type or a subroutine or subroutine type may have
-a DW\_AT\_address\_class attribute, whose value is an integer
+a DW\-\_AT\-\_address\-\_class attribute, whose value is an integer
constant. The set of permissible values is specific to
-each target architecture. The value DW\_ADDR\_none, however,
+each target architecture. The value DW\-\_ADDR\-\_none, however,
is common to all encodings, and means that no address class
has been specified.
\begin{tabular}{lll}
Name&Value&Meaning \\
\hline
-\textit{DW\_ADDR\_none}& 0 & \textit{no class specified} \\
-\textit{DW\_ADDR\_near16}& 1 & \textit{16\dash bit offset, no segment} \\
-\textit{DW\_ADDR\_far16}& 2 & \textit{16\dash bit offset, 16\dash bit segment} \\
-\textit{DW\_ADDR\_huge16}& 3 & \textit{16\dash bit offset, 16\dash bit segment} \\
-\textit{DW\_ADDR\_near32}& 4 & \textit{32\dash bit offset, no segment} \\
-\textit{DW\_ADDR\_far32}& 5 & \textit{32\dash bit offset, 16\dash bit segment}
+\textit{DW\-\_ADDR\-\_none}& 0 & \textit{no class specified} \\
+\textit{DW\-\_ADDR\-\_near16}& 1 & \textit{16\dash bit offset, no segment} \\
+\textit{DW\-\_ADDR\-\_far16}& 2 & \textit{16\dash bit offset, 16\dash bit segment} \\
+\textit{DW\-\_ADDR\-\_huge16}& 3 & \textit{16\dash bit offset, 16\dash bit segment} \\
+\textit{DW\-\_ADDR\-\_near32}& 4 & \textit{32\dash bit offset, no segment} \\
+\textit{DW\-\_ADDR\-\_far32}& 5 & \textit{32\dash bit offset, 16\dash bit segment}
\end{tabular}
\caption{Example address class codes}
\label{fig:inteladdressclasstable}
Any debugging information entry representing the
declaration of an object, module, subprogram or type may have
-DW\_AT\_decl\_file, DW\_AT\_decl\_line and DW\_AT\_decl\_column
+DW\-\_AT\-\_decl\-\_file, DW\-\_AT\-\_decl\-\_line and DW\-\_AT\-\_decl\-\_column
attributes each of whose value is an unsigned integer constant.
-The value of the DW\_AT\_decl\_file attribute corresponds to
+The value of the DW\-\_AT\-\_decl\-\_file attribute corresponds to
a file number from the line number information table for the
compilation unit containing the debugging information entry and
represents the source file in which the declaration appeared
(see Section 6.2). The value 0 indicates that no source file
has been specified.
-The value of the DW\_AT\_decl\_line attribute represents
+The value of the DW\-\_AT\-\_decl\-\_line attribute represents
the source line number at which the first character of
the identifier of the declared object appears. The value 0
indicates that no source line has been specified.
-The value of the DW\_AT\_decl\_column attribute represents
+The value of the DW\-\_AT\-\_decl\-\_column attribute represents
the source column number at which the first character of
the identifier of the declared object appears. The value 0
indicates that no column has been specified.
\section{Identifier Names}
\label{chap:identifiernames}
Any debugging information entry representing a program entity
-that has been given a name may have a DW\_AT\_name attribute,
+that has been given a name may have a DW\-\_AT\-\_name attribute,
whose value is a string representing the name as it appears in
the source program. A debugging information entry containing
no name attribute, or containing a name attribute whose value
names as they appear in the source program, implementations
of language translators that use some form of mangled name
(as do many implementations of C++) should use the unmangled
-form of the name in the DWARF DW\_AT\_name attribute,
+form of the name in the DWARF DW\-\_AT\-\_name attribute,
including the keyword operator (in names such as “operator
+”), if present. See also
Section \refersec{chap:linkagenames} regarding the use
-of DW\_AT\_linkage\_name for mangled names. Sequences of
+of DW\-\_AT\-\_linkage\-\_name for mangled names. Sequences of
multiple whitespace characters may be compressed.}
\section{Data Locations and DWARF Procedures}
Any debugging information entry describing a data object (which
includes variables and parameters) or common block may have a
-DW\_AT\_location attribute, whose value is a location description
+DW\-\_AT\-\_location attribute, whose value is a location description
(see Section 2.6).
A DWARF procedure is represented by any
the like, may have
\begin{itemize}
-\item A DW\_AT\_low\_pc and DW\_AT\_high\_pc pair of
+\item A DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of
attributes for a single contiguous range of
addresses, or
-\item A DW\_AT\_ranges attribute for a non-contiguous range of addresses.
+\item A DW\-\_AT\-\_ranges attribute for a non-contiguous range of addresses.
\end{itemize}
In addition, a non-contiguous range of
addresses may also be specified for the
-DW\_AT\_start\_scope attribute.
+DW\-\_AT\-\_start\-\_scope attribute.
If an entity has no associated machine code,
none of these attributes are specified.
\subsection{Single Address}
When there is a single address associated with an entity,
such as a label or alternate entry point of a subprogram,
-the entry has a DW\_AT\_low\_pc attribute whose value is the
-relocated address for the entity. While the DW\_AT\_entry\_pc
+the entry has a DW\-\_AT\-\_low\-\_pc attribute whose value is the
+relocated address for the entity. While the DW\-\_AT\-\_entry\-\_pc
attribute might also seem appropriate for this purpose,
-historically the DW\_AT\_low\_pc attribute was used before the
-DW\_AT\_entry\_pc was introduced (in DWARF Version 3). There is
+historically the DW\-\_AT\-\_low\-\_pc attribute was used before the
+DW\-\_AT\-\_entry\-\_pc was introduced (in DWARF Version 3). There is
insufficient reason to change this.
\subsection{Continuous Address Range}
\label{chap:contiguousaddressranges}
When the set of addresses of a debugging information entry can
be described as a single continguous range, the entry may have
-a DW\_AT\_low\_pc and DW\_AT\_high\_pc pair of attributes. The value
-of the DW\_AT\_low\_pc attribute is the relocated address of the
+a DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of attributes. The value
+of the DW\-\_AT\-\_low\-\_pc attribute is the relocated address of the
first instruction associated with the entity. If the value of
-the DW\_AT\_high\_pc is of class address, it is the relocated
+the DW\-\_AT\-\_high\-\_pc is of class address, it is the relocated
address of the first location past the last instruction
associated with the entity; if it is of class constant, the
value is an unsigned integer offset which when added to the
\label{chap:noncontiguousaddressranges}
When the set of addresses of a debugging information entry
cannot be described as a single contiguous range, the entry has
-a DW\_AT\_ranges attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
+a DW\-\_AT\-\_ranges attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
and indicates the beginning of a range list. Similarly,
-a DW\_AT\_start\_scope attribute may have a value of class
+a DW\-\_AT\-\_start\-\_scope attribute may have a value of class
\livelink{chap:rangelistptr}{rangelistptr} for the same reason.
Range lists are contained
in a separate object file section called .debug\_ranges. A
-range list is indicated by a DW\_AT\_ranges attribute whose
+range list is indicated by a DW\-\_AT\-\_ranges attribute whose
value is represented as an offset from the beginning of the
.debug\_ranges section to the beginning of the range list.
Any debugging information entry describing an entity that has
a range of code addresses, which includes compilation units,
module initialization, subroutines, ordinary blocks, try/catch
-blocks, and the like, may have a DW\_AT\_entry\_pc attribute to
+blocks, and the like, may have a DW\-\_AT\-\_entry\-\_pc attribute to
indicate the first executable instruction within that range
-of addresses. The value of the DW\_AT\_entry\_pc attribute is a
-relocated address. If no DW\_AT\_entry\_pc attribute is present,
+of addresses. The value of the DW\-\_AT\-\_entry\-\_pc attribute is a
+relocated address. If no DW\-\_AT\-\_entry\-\_pc attribute is present,
then the entry address is assumed to be the same as the
-value of the DW\_AT\_low\_pc attribute, if present; otherwise,
+value of the DW\-\_AT\-\_low\-\_pc attribute, if present; otherwise,
the entry address is unknown.
\section{Static and Dynamic Values of Attributes}
``access typename'' parameters. }
Generally, any debugging information
-entry that has, or may have, a DW\_AT\_name attribute, may
-also have a DW\_AT\_description attribute whose value is a
+entry that has, or may have, a DW\-\_AT\-\_name attribute, may
+also have a DW\-\_AT\-\_description attribute whose value is a
null-terminated string providing a description of the entity.
whose integer constant value
(see \refersec{chap:staticanddynamicvaluesofattributes})
specifies an
-amount of storage. The value of the DW\_AT\_byte\_size attribute
-is interpreted in bytes and the value of the DW\_AT\_bit\_size
+amount of storage. The value of the DW\-\_AT\-\_byte\-\_size attribute
+is interpreted in bytes and the value of the DW\-\_AT\-\_bit\-\_size
attribute is interpreted in bits.
Similarly, the integer
-constant value of a DW\_AT\_byte\_stride attribute is interpreted
-in bytes and the integer constant value of a DW\_AT\_bit\_stride
+constant value of a DW\-\_AT\-\_byte\-\_stride attribute is interpreted
+in bytes and the integer constant value of a DW\-\_AT\-\_bit\-\_stride
attribute is interpreted in bits.
\section{Linkage Names}
name) from DWARF expressions, which compute a final value (such as an array bound).
\item Add support for bundled instructions on machine architectures where instructions do not
occupy a whole number of bytes.
-\item Add a new attribute form for section offsets, DW\_FORM\_sec\_offset, to replace the use
-of DW\_FORM\_data4 and DW\_FORM\_data8 for section offsets.
-\item Add an attribute, DW\_AT\_main\_subprogram, to identify the main subprogram of a
+\item Add a new attribute form for section offsets, DW\-\_FORM\-\_sec\-\_offset, to replace the use
+of DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 for section offsets.
+\item Add an attribute, DW\-\_AT\-\_main\-\_subprogram, to identify the main subprogram of a
program.
\item Define default array lower bound values for each supported language.
\item Add a new technique using separate type units, type signatures and COMDAT sections to
(see Section 7.4).
\item
-References that use the attribute form DW\_FORM\_ref\_addr
+References that use the attribute form DW\-\_FORM\-\_ref\-\_addr
are specified to be four bytes in the DWARF 32-bit format and
eight bytes in the DWARF 64-bit format, while DWARF Version
2 specifies that such references have the same size as an
beginning of the compilation unit corresponding to the current
set to the debugging information entry for the given object,
followed by a null\dash terminated character string representing
-the name of the object as given by the DW\_AT\_name attribute
+the name of the object as given by the DW\-\_AT\-\_name attribute
of the referenced debugging information entry. Each set of
names is terminated by an offset field containing zero (and
no following string).
In the case of the name of a function member or static data
member of a C++ structure, class or union, the name presented
in the .debug\_pubnames section is not the simple name given
-by the DW\_AT\_name attribute of the referenced debugging
+by the DW\-\_AT\-\_name attribute of the referenced debugging
information entry, but rather the fully qualified name of
the data or function member.
\textit{A more sophisticated approach might involve multiple entries in
the matrix for a line number; in this case, at least one entry
(often but not necessarily only one) specifies a recommended
-breakpoint location for the line number. DW\_LNS\_negate\_stmt
+breakpoint location for the line number. DW\-\_LNS\-\_negate\-\_stmt
opcodes in the line number program control which matrix entries
constitute such a recommendation and default\_is\_stmt might
be either ``true'' or ``false''. This approach might be
path name of a source file. If the entry contains a file
name or relative path name, the file is located relative
to either the compilation directory (as specified by the
-DW\_AT\_comp\_dir attribute given in the compilation unit) or one
+DW\-\_AT\-\_comp\-\_dir attribute given in the compilation unit) or one
of the directories listed in the include\_directories section.
\item An unsigned LEB128 number representing the directory
names that represent full path names.
The primary source file is described by an entry whose path
-name exactly matches that given in the DW\_AT\_name attribute
+name exactly matches that given in the DW\-\_AT\-\_name attribute
in the compilation unit, and whose directory is understood
to be given by the implicit entry with index 0.
\textit{A compiler may generate a single null byte for the file
names field and define file names using the extended opcode
-DW\_LNE\_define\_file.}
+DW\-\_LNE\-\_define\-\_file.}
\end{enumerate}
\begin{enumerate}[1.]
-\item \textbf{DW\_LNS\_copy} \\
-The DW\_LNS\_copy opcode takes no operands. It appends a row
+\item \textbf{DW\-\_LNS\-\_copy} \\
+The DW\-\_LNS\-\_copy opcode takes no operands. It appends a row
to the matrix using the current values of the state machine
registers. Then it sets the discriminator register to 0,
and sets the basic\_block, prologue\_end and epilogue\_begin
registers to ``false.''
-\item \textbf{DW\_LNS\_advance\_pc} \\
-The DW\_LNS\_advance\_pc opcode takes a single unsigned LEB128
+\item \textbf{DW\-\_LNS\-\_advance\-\_pc} \\
+The DW\-\_LNS\-\_advance\-\_pc opcode takes a single unsigned LEB128
operand as the operation advance and modifies the address
and op\_index registers as specified in
Section \refersec{chap:specialopcodes}.
-\item \textbf{DW\_LNS\_advance\_line} \\
-The DW\_LNS\_advance\_line opcode takes a single signed LEB128
+\item \textbf{DW\-\_LNS\-\_advance\-\_line} \\
+The DW\-\_LNS\-\_advance\-\_line opcode takes a single signed LEB128
operand and adds that value to the line register of the
state machine.
-\item \textbf{DW\_LNS\_set\_file} \\
-The DW\_LNS\_set\_file opcode takes a single
+\item \textbf{DW\-\_LNS\-\_set\-\_file} \\
+The DW\-\_LNS\-\_set\-\_file opcode takes a single
unsigned LEB128 operand and stores it in the file register
of the state machine.
-\item \textbf{DW\_LNS\_set\_column} \\
-The DW\_LNS\_set\_column opcode takes a
+\item \textbf{DW\-\_LNS\-\_set\-\_column} \\
+The DW\-\_LNS\-\_set\-\_column opcode takes a
single unsigned LEB128 operand and stores it in the column
register of the state machine.
-\item \textbf{DW\_LNS\_negate\_stmt} \\
-The DW\_LNS\_negate\_stmt opcode takes no
+\item \textbf{DW\-\_LNS\-\_negate\-\_stmt} \\
+The DW\-\_LNS\-\_negate\-\_stmt opcode takes no
operands. It sets the is\_stmt register of the state machine
to the logical negation of its current value.
-\item \textbf{DW\_LNS\_set\_basic\_block} \\
-The DW\_LNS\_set\_basic\_block opcode
+\item \textbf{DW\-\_LNS\-\_set\-\_basic\-\_block} \\
+The DW\-\_LNS\-\_set\-\_basic\-\_block opcode
takes no operands. It sets the basic\_block register of the
state machine to ``true.''
-\item \textbf{DW\_LNS\_const\_add\_pc} \\
-The DW\_LNS\_const\_add\_pc opcode takes
+\item \textbf{DW\-\_LNS\-\_const\-\_add\-\_pc} \\
+The DW\-\_LNS\-\_const\-\_add\-\_pc opcode takes
no operands. It advances the address and op\_index registers
by the increments corresponding to special opcode 255.
by a small amount, it can use a single special opcode,
which occupies a single byte. When it needs to advance the
address by up to twice the range of the last special opcode,
-it can use DW\_LNS\_const\_add\_pc followed by a special opcode,
+it can use DW\-\_LNS\-\_const\-\_add\-\_pc followed by a special opcode,
for a total of two bytes. Only if it needs to advance the
address by more than twice that range will it need to use
-both DW\_LNS\_advance\_pc and a special opcode, requiring three
+both DW\-\_LNS\-\_advance\-\_pc and a special opcode, requiring three
or more bytes.}
-\item \textbf{DW\_LNS\_fixed\_advance\_pc} \\
-The DW\_LNS\_fixed\_advance\_pc opcode
+\item \textbf{DW\-\_LNS\-\_fixed\-\_advance\-\_pc} \\
+The DW\-\_LNS\-\_fixed\-\_advance\-\_pc opcode
takes a single uhalf (unencoded) operand and adds it to the
address register of the state machine and sets the op\_index
register to 0. This is the only standard opcode whose operand
\textbf{not} multiply the
operand by the minimum\_instruction\_length field of the header.
-\textit{Existing assemblers cannot emit DW\_LNS\_advance\_pc or special
+\textit{Existing assemblers cannot emit DW\-\_LNS\-\_advance\-\_pc or special
opcodes because they cannot encode LEB128 numbers or judge when
the computation of a special opcode overflows and requires
-the use of DW\_LNS\_advance\_pc. Such assemblers, however, can
-use DW\_LNS\_fixed\_advance\_pc instead, sacrificing compression.}
+the use of DW\-\_LNS\-\_advance\-\_pc. Such assemblers, however, can
+use DW\-\_LNS\-\_fixed\-\_advance\-\_pc instead, sacrificing compression.}
-\item \textbf{DW\_LNS\_set\_prologue\_end} \\
-The DW\_LNS\_set\_prologue\_end
+\item \textbf{DW\-\_LNS\-\_set\-\_prologue\-\_end} \\
+The DW\-\_LNS\-\_set\-\_prologue\-\_end
opcode takes no operands. It sets the prologue\_end register
to ``true''.
subroutines).}
-\item \textbf{DW\_LNS\_set\_epilogue\_begin} \\
-The DW\_LNS\_set\_epilogue\_begin opcode takes no operands. It
+\item \textbf{DW\-\_LNS\-\_set\-\_epilogue\-\_begin} \\
+The DW\-\_LNS\-\_set\-\_epilogue\-\_begin opcode takes no operands. It
sets the epilogue\_begin register to ``true''.
\textit{When a breakpoint is set on the exit of a function or execution
\textit{In the case of a trivial function, both prologue end and
epilogue begin may occur at the same address.}
-\item \textbf{DW\_LNS\_set\_isa} \\
-The DW\_LNS\_set\_isa opcode takes a single
+\item \textbf{DW\-\_LNS\-\_set\-\_isa} \\
+The DW\-\_LNS\-\_set\-\_isa opcode takes a single
unsigned LEB128 operand and stores that value in the isa
register of the state machine.
\end{enumerate}
\begin{enumerate}[1.]
-\item \textbf{DW\_LNE\_end\_sequence} \\
-The DW\_LNE\_end\_sequence opcode takes no operands. It sets the
+\item \textbf{DW\-\_LNE\-\_end\-\_sequence} \\
+The DW\-\_LNE\-\_end\-\_sequence opcode takes no operands. It sets the
end\_sequence register of the state machine to “true” and
appends a row to the matrix using the current values of the
state-machine registers. Then it resets the registers to the
initial values specified above
(see Section \refersec{chap:statemachineregisters}).
Every line
-number program sequence must end with a DW\_LNE\_end\_sequence
+number program sequence must end with a DW\-\_LNE\-\_end\-\_sequence
instruction which creates a row whose address is that of the
byte after the last target machine instruction of the sequence.
-\item \textbf{DW\_LNE\_set\_address} \\
-The DW\_LNE\_set\_address opcode takes a single relocatable
+\item \textbf{DW\-\_LNE\-\_set\-\_address} \\
+The DW\-\_LNE\-\_set\-\_address opcode takes a single relocatable
address as an operand. The size of the operand is the size
of an address on the target machine. It sets the address
register to the value given by the relocatable address and
stores a relocatable value into it instead.}
-\item \textbf{DW\_LNE\_define\_file} \\
+\item \textbf{DW\-\_LNE\-\_define\-\_file} \\
-The DW\_LNE\_define\_file opcode takes four operands:
+The DW\-\_LNE\-\_define\-\_file opcode takes four operands:
\begin{enumerate}[1.]
path name of a source file. If the entry contains a file
name or a relative path name, the file is located relative
to either the compilation directory (as specified by the
-DW\_AT\_comp\_dir attribute given in the compilation unit)
+DW\-\_AT\-\_comp\-\_dir attribute given in the compilation unit)
or one of the directories in the include\_directories section.
\item An unsigned LEB128 number representing the directory index
path names.
The primary source file is described by an entry whose path
-name exactly matches that given in the DW\_AT\_name attribute
+name exactly matches that given in the DW\-\_AT\-\_name attribute
in the compilation unit, and whose directory index is 0. The
files are numbered, starting at 1, in the order in which they
appear; the names in the header come before names defined by
-the DW\_LNE\_define\_file instruction. These numbers are used
+the DW\-\_LNE\-\_define\-\_file instruction. These numbers are used
in the file register of the state machine.
-\item \textbf{DW\_LNE\_set\_discriminator} \\
-The DW\_LNE\_set\_discriminator opcode takes a single
+\item \textbf{DW\-\_LNE\-\_set\-\_discriminator} \\
+The DW\-\_LNE\-\_set\-\_discriminator opcode takes a single
parameter, an unsigned LEB128 integer. It sets the
discriminator register to the new value.
The valid macinfo types are as follows:
\begin{tabular}{ll}
-DW\_MACINFO\_define
+DW\-\_MACINFO\-\_define
&A macro definition.\\
-DW\_MACINFO\_undef
+DW\-\_MACINFO\-\_undef
&A macro undefinition.\\
-DW\_MACINFO\_start\_file
+DW\-\_MACINFO\-\_start\-\_file
&The start of a new source file inclusion.\\
-DW\_MACINFO\_end\_file
+DW\-\_MACINFO\-\_end\-\_file
&The end of the current source file inclusion.\\
-DW\_MACINFO\_vendor\_ext
+DW\-\_MACINFO\-\_vendor\-\_ext
& Vendor specific macro information directives.\\
\end{tabular}
\subsubsection{Define and Undefine Entries}
\label{chap:defineandundefineentries}
-All DW\_MACINFO\_define and DW\_MACINFO\_undef entries have two
+All DW\-\_MACINFO\-\_define and DW\-\_MACINFO\-\_undef entries have two
operands. The first operand encodes the line number of the
source line on which the relevant defining or undefining
macro directives appeared.
The second operand consists of a null-terminated character
-string. In the case of a DW\_MACINFO\_undef entry, the value
+string. In the case of a DW\-\_MACINFO\-\_undef entry, the value
of this string will be simply the name of the pre- processor
symbol that was undefined at the indicated source line.
-In the case of a DW\_MACINFO\_define entry, the value of this
+In the case of a DW\-\_MACINFO\-\_define entry, the value of this
string will be the name of the macro symbol that was defined
at the indicated source line, followed immediately by the macro
formal parameter list including the surrounding parentheses (in
\subsubsection{Start File Entries}
\label{chap:startfileentries}
-Each DW\_MACINFO\_start\_file entry also has two operands. The
+Each DW\-\_MACINFO\-\_start\-\_file entry also has two operands. The
first operand encodes the line number of the source line on
which the inclusion macro directive occurred.
\subsubsection{End File Entries}
\label{chap:endfileentries}
-A DW\_MACINFO\_end\_file entry has no operands. The presence of
+A DW\-\_MACINFO\-\_end\-\_file entry has no operands. The presence of
the entry marks the end of the current source file inclusion.
\subsubsection{Vendor Extension Entries}
\label{chap:vendorextensionentries}
-A DW\_MACINFO\_vendor\_ext entry has two operands. The first
+A DW\-\_MACINFO\-\_vendor\-\_ext entry has two operands. The first
is a constant. The second is a null-terminated character
string. The meaning and/or significance of these operands is
intentionally left undefined by this specification.
\textit{A consumer must be able to totally ignore all
-DW\_MACINFO\_vendor\_ext entries that it does not understand
+DW\-\_MACINFO\-\_vendor\-\_ext entries that it does not understand
(see Section \refersec{datarep:vendorextensibility}).}
\subsection{Base Source Entries}
\label{chap:basesourceentries}
-A producer shall generate DW\_MACINFO\_start\_file and
-DW\_MACINFO\_end\_file entries for the source file submitted to
-the compiler for compilation. This DW\_MACINFO\_start\_file entry
+A producer shall generate DW\-\_MACINFO\-\_start\-\_file and
+DW\-\_MACINFO\-\_end\-\_file entries for the source file submitted to
+the compiler for compilation. This DW\-\_MACINFO\-\_start\-\_file entry
has the value 0 in its line number operand and references
the file entry in the line number information table for the
primary source file.
\subsection{Macinfo Entries For Command Line Options}
\label{chap:macinfoentriesforcommandlineoptions}
-In addition to producing DW\_MACINFO\_define and DW\_MACINFO\_undef
+In addition to producing DW\-\_MACINFO\-\_define and DW\-\_MACINFO\-\_undef
entries for each of the define and undefine directives
processed during compilation, the DWARF producer should
-generate a DW\_MACINFO\_define or DW\_MACINFO\_undef entry for
+generate a DW\-\_MACINFO\-\_define or DW\-\_MACINFO\-\_undef entry for
each pre-processor symbol which is defined or undefined by
some means other than via a define or undefine directive
within the compiled source text. In particular, pre-processor
symbol definitions and un- definitions which occur as a
result of command line options (when invoking the compiler)
-should be represented by their own DW\_MACINFO\_define and
-DW\_MACINFO\_undef entries.
+should be represented by their own DW\-\_MACINFO\-\_define and
+DW\-\_MACINFO\-\_undef entries.
-All such DW\_MACINFO\_define and DW\_MACINFO\_undef entries
+All such DW\-\_MACINFO\-\_define and DW\-\_MACINFO\-\_undef entries
representing compilation options should appear before the
-first DW\_MACINFO\_start\_file entry for that compilation unit
+first DW\-\_MACINFO\-\_start\-\_file entry for that compilation unit
and should encode the value 0 in their line number operands.
default value for any or all columns.
\item padding (array of ubyte) \\
-Enough DW\_CFA\_nop instructions to make the size of this entry
+Enough DW\-\_CFA\-\_nop instructions to make the size of this entry
match the length value above.
\end{enumerate}
A sequence of table defining instructions that are described below.
\item 6. padding (array of ubyte) \\
-Enough DW\_CFA\_nop instructions to make the size of this
+Enough DW\-\_CFA\-\_nop instructions to make the size of this
entry match the length value above.
\end{enumerate}
any corresponding debugging compilation unit information,
thus there is no way to interpret the call offset.
-\item DW\_OP\_push\_object\_address is not meaningful in an operand
+\item DW\-\_OP\-\_push\-\_object\-\_address is not meaningful in an operand
of these instructions because there is no object context to
provide a value to push.
-\item DW\_OP\_call\_frame\_cfa is not meaningful in an operand of
+\item DW\-\_OP\-\_call\-\_frame\-\_cfa is not meaningful in an operand of
these instructions because its use would be circular.
\end{itemize}
\textit{Call frame instructions to which these restrictions apply
-include DW\_CFA\_def\_cfa\_expression, DW\_CFA\_expression
-and DW\_CFA\_val\_expression.}
+include DW\-\_CFA\-\_def\-\_cfa\-\_expression, DW\-\_CFA\-\_expression
+and DW\-\_CFA\-\_val\-\_expression.}
\subsubsection{Row Creation Instructions}
\label{chap:rowcreationinstructions}
\begin{enumerate}[1.]
-\item \textbf{DW\_CFA\_set\_loc} \\
-The DW\_CFA\_set\_loc instruction takes a single operand that
+\item \textbf{DW\-\_CFA\-\_set\-\_loc} \\
+The DW\-\_CFA\-\_set\-\_loc instruction takes a single operand that
represents a target address. The required action is to create a
new table row using the specified address as the location. All
other values in the new row are initially identical to the
selector of the given length.
-\item \textbf{DW\_CFA\_advance\_loc} \\
-The DW\_CFA\_advance instruction takes a single operand (encoded
+\item \textbf{DW\-\_CFA\-\_advance\-\_loc} \\
+The DW\-\_CFA\-\_advance instruction takes a single operand (encoded
with the opcode) that represents a constant delta. The required
action is to create a new table row with a location value that
is computed by taking the current entry’s location value
other values in the new row are initially identical to the
current row
-\item \textbf{DW\_CFA\_advance\_loc1} \\
-The DW\_CFA\_advance\_loc1 instruction takes a single ubyte
+\item \textbf{DW\-\_CFA\-\_advance\-\_loc1} \\
+The DW\-\_CFA\-\_advance\-\_loc1 instruction takes a single ubyte
operand that represents a constant delta. This instruction
-is identical to DW\_CFA\_advance\_loc except for the encoding
+is identical to DW\-\_CFA\-\_advance\-\_loc except for the encoding
and size of the delta operand.
-\item \textbf{DW\_CFA\_advance\_loc2} \\
-The DW\_CFA\_advance\_loc2 instruction takes a single uhalf
+\item \textbf{DW\-\_CFA\-\_advance\-\_loc2} \\
+The DW\-\_CFA\-\_advance\-\_loc2 instruction takes a single uhalf
operand that represents a constant delta. This instruction
-is identical to DW\_CFA\_advance\_loc except for the encoding
+is identical to DW\-\_CFA\-\_advance\-\_loc except for the encoding
and size of the delta operand.
-\item \textbf{DW\_CFA\_advance\_loc4} \\
-The DW\_CFA\_advance\_loc4 instruction takes a single uword
+\item \textbf{DW\-\_CFA\-\_advance\-\_loc4} \\
+The DW\-\_CFA\-\_advance\-\_loc4 instruction takes a single uword
operand that represents a constant delta. This instruction
-is identical to DW\_CFA\_advance\_loc except for the encoding
+is identical to DW\-\_CFA\-\_advance\-\_loc except for the encoding
and size of the delta operand.
\end{enumerate}
\label{chap:cfadefinitioninstructions}
\begin{enumerate}[1.]
-\item \textbf{DW\_CFA\_def\_cfa} \\
-The DW\_CFA\_def\_cfa instruction takes two unsigned LEB128
+\item \textbf{DW\-\_CFA\-\_def\-\_cfa} \\
+The DW\-\_CFA\-\_def\-\_cfa instruction takes two unsigned LEB128
operands representing a register number and a (non\dash factored)
offset. The required action is to define the current CFA rule
to use the provided register and offset.
-\item \textbf{ DW\_CFA\_def\_cfa\_sf} \\
-The DW\_CFA\_def\_cfa\_sf instruction takes two operands:
+\item \textbf{ DW\-\_CFA\-\_def\-\_cfa\-\_sf} \\
+The DW\-\_CFA\-\_def\-\_cfa\-\_sf instruction takes two operands:
an unsigned LEB128 value representing a register number and a
signed LEB128 factored offset. This instruction is identical
-to DW\_CFA\_def\_cfa except that the second operand is signed
+to DW\-\_CFA\-\_def\-\_cfa except that the second operand is signed
and factored. The resulting offset is factored\_offset *
data\_alignment\_factor.
-\item \textbf{DW\_CFA\_def\_cfa\_register} \\
-The DW\_CFA\_def\_cfa\_register instruction takes a single
+\item \textbf{DW\-\_CFA\-\_def\-\_cfa\-\_register} \\
+The DW\-\_CFA\-\_def\-\_cfa\-\_register instruction takes a single
unsigned LEB128 operand representing a register number. The
required action is to define the current CFA rule to use
the provided register (but to keep the old offset). This
-\item \textbf{DW\_CFA\_def\_cfa\_offset} \\
-The DW\_CFA\_def\_cfa\_offset instruction takes a single
+\item \textbf{DW\-\_CFA\-\_def\-\_cfa\-\_offset} \\
+The DW\-\_CFA\-\_def\-\_cfa\-\_offset instruction takes a single
unsigned LEB128 operand representing a (non-factored)
offset. The required action is to define the current CFA rule
to use the provided offset (but to keep the old register). This
to use a register and offset.
-\item \textbf{DW\_CFA\_def\_cfa\_offset\_sf} \\
-The DW\_CFA\_def\_cfa\_offset\_sf instruction takes a signed
+\item \textbf{DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf} \\
+The DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf instruction takes a signed
LEB128 operand representing a factored offset. This instruction
-is identical to DW\_CFA\_def\_cfa\_offset except that the
+is identical to DW\-\_CFA\-\_def\-\_cfa\-\_offset except that the
operand is signed and factored. The resulting offset is
factored\_offset * data\_alignment\_factor. This operation
is valid only if the current CFA rule is defined to use a
register and offset.
-\item \textbf{DW\_CFA\_def\_cfa\_expression} \\
-The DW\_CFA\_def\_cfa\_expression instruction takes a single
-operand encoded as a DW\_FORM\_exprloc value representing a
+\item \textbf{DW\-\_CFA\-\_def\-\_cfa\-\_expression} \\
+The DW\-\_CFA\-\_def\-\_cfa\-\_expression instruction takes a single
+operand encoded as a DW\-\_FORM\-\_exprloc value representing a
DWARF expression. The required action is to establish that
expression as the means by which the current CFA is computed.
See
\label{chap:registerruleinstructions}
\begin{enumerate}[1.]
-\item \textbf{DW\_CFA\_undefined} \\
-The DW\_CFA\_undefined instruction takes a single unsigned
+\item \textbf{DW\-\_CFA\-\_undefined} \\
+The DW\-\_CFA\-\_undefined instruction takes a single unsigned
LEB128 operand that represents a register number. The required
action is to set the rule for the specified register to
``undefined.''
-\item \textbf{DW\_CFA\_same\_value} \\
-The DW\_CFA\_same\_value instruction takes a single unsigned
+\item \textbf{DW\-\_CFA\-\_same\-\_value} \\
+The DW\-\_CFA\-\_same\-\_value instruction takes a single unsigned
LEB128 operand that represents a register number. The required
action is to set the rule for the specified register to
``same value.''
-\item \textbf{DW\_CFA\_offset} \\
-The DW\_CFA\_offset instruction takes two operands: a register
+\item \textbf{DW\-\_CFA\-\_offset} \\
+The DW\-\_CFA\-\_offset instruction takes two operands: a register
number (encoded with the opcode) and an unsigned LEB128
constant representing a factored offset. The required action
is to change the rule for the register indicated by the
N is
\textit{factored offset * data\_alignment\_factor.}
-\item \textbf{DW\_CFA\_offset\_extended} \\
-The DW\_CFA\_offset\_extended instruction takes two unsigned
+\item \textbf{DW\-\_CFA\-\_offset\-\_extended} \\
+The DW\-\_CFA\-\_offset\-\_extended instruction takes two unsigned
LEB128 operands representing a register number and a factored
-offset. This instruction is identical to DW\_CFA\_offset except
+offset. This instruction is identical to DW\-\_CFA\-\_offset except
for the encoding and size of the register operand.
-\item \textbf{ DW\_CFA\_offset\_extended\_sf} \\
-The DW\_CFA\_offset\_extended\_sf instruction takes two operands:
+\item \textbf{ DW\-\_CFA\-\_offset\-\_extended\-\_sf} \\
+The DW\-\_CFA\-\_offset\-\_extended\-\_sf instruction takes two operands:
an unsigned LEB128 value representing a register number and a
signed LEB128 factored offset. This instruction is identical
-to DW\_CFA\_offset\_extended except that the second operand is
+to DW\-\_CFA\-\_offset\-\_extended except that the second operand is
signed and factored. The resulting offset is
\textit{factored\_offset * data\_alignment\_factor}.
-\item \textbf{DW\_CFA\_val\_offset} \\
-The DW\_CFA\_val\_offset instruction takes two unsigned
+\item \textbf{DW\-\_CFA\-\_val\-\_offset} \\
+The DW\-\_CFA\-\_val\-\_offset instruction takes two unsigned
LEB128 operands representing a register number and a
factored offset. The required action is to change the rule
for the register indicated by the register number to be a
val\_offset(N) rule where the value of N is
\textit{factored\_offset * data\_alignment\_factor}.
-\item \textbf{DW\_CFA\_val\_offset\_sf} \\
-The DW\_CFA\_val\_offset\_sf instruction takes two operands: an
+\item \textbf{DW\-\_CFA\-\_val\-\_offset\-\_sf} \\
+The DW\-\_CFA\-\_val\-\_offset\-\_sf instruction takes two operands: an
unsigned LEB128 value representing a register number and a
signed LEB128 factored offset. This instruction is identical
-to DW\_CFA\_val\_offset except that the second operand is signed
+to DW\-\_CFA\-\_val\-\_offset except that the second operand is signed
and factored. The resulting offset is
\textit{factored\_offset * data\_alignment\_factor}.
-\item \textbf{DW\_CFA\_register} \\
-The DW\_CFA\_register instruction takes two unsigned LEB128
+\item \textbf{DW\-\_CFA\-\_register} \\
+The DW\-\_CFA\-\_register instruction takes two unsigned LEB128
operands representing register numbers. The required action
is to set the rule for the first register to be register(R)
where R is the second register.
-\item \textbf{DW\_CFA\_expression} \\
-The DW\_CFA\_expression instruction takes two operands: an
+\item \textbf{DW\-\_CFA\-\_expression} \\
+The DW\-\_CFA\-\_expression instruction takes two operands: an
unsigned LEB128 value representing a register number, and
-a DW\_FORM\_block value representing a DWARF expression. The
+a DW\-\_FORM\-\_block value representing a DWARF expression. The
required action is to change the rule for the register
indicated by the register number to be an expression(E)
rule where E is the DWARF expression. That is, the DWARF
regarding restrictions on the DWARF
expression operators that can be used.
-\item \textbf{DW\_CFA\_val\_expression} \\
-The DW\_CFA\_val\_expression instruction takes two operands:
+\item \textbf{DW\-\_CFA\-\_val\-\_expression} \\
+The DW\-\_CFA\-\_val\-\_expression instruction takes two operands:
an unsigned LEB128 value representing a register number, and
-a DW\_FORM\_block value representing a DWARF expression. The
+a DW\-\_FORM\-\_block value representing a DWARF expression. The
required action is to change the rule for the register
indicated by the register number to be a val\_expression(E)
rule where E is the DWARF expression. That is, the DWARF
regarding restrictions on the DWARF
expression operators that can be used.
-\item \textbf{ DW\_CFA\_restore} \\
-The DW\_CFA\_restore instruction takes a single operand (encoded
+\item \textbf{ DW\-\_CFA\-\_restore} \\
+The DW\-\_CFA\-\_restore instruction takes a single operand (encoded
with the opcode) that represents a register number. The
required action is to change the rule for the indicated
register to the rule assigned it by the initial\_instructions
in the CIE.
-\item \textbf{DW\_CFA\_restore\_extended} \\
-The DW\_CFA\_restore\_extended instruction takes a single unsigned
+\item \textbf{DW\-\_CFA\-\_restore\-\_extended} \\
+The DW\-\_CFA\-\_restore\-\_extended instruction takes a single unsigned
LEB128 operand that represents a register number. This
-instruction is identical to DW\_CFA\_restore except for the
+instruction is identical to DW\-\_CFA\-\_restore except for the
encoding and size of the register operand.
\end{enumerate}
\begin{enumerate}[1.]
-\item \textbf{DW\_CFA\_remember\_state} \\
-The DW\_CFA\_remember\_state instruction takes no operands. The
+\item \textbf{DW\-\_CFA\-\_remember\-\_state} \\
+The DW\-\_CFA\-\_remember\-\_state instruction takes no operands. The
required action is to push the set of rules for every register
onto an implicit stack.
-\item \textbf{DW\_CFA\_restore\_state} \\
-The DW\_CFA\_restore\_state instruction takes no operands. The
+\item \textbf{DW\-\_CFA\-\_restore\-\_state} \\
+The DW\-\_CFA\-\_restore\-\_state instruction takes no operands. The
required action is to pop the set of rules off the implicit
stack and place them in the current row.
\subsubsection{Padding Instruction}
\label{chap:paddinginstruction}
\begin{enumerate}[1.]
-\item \textbf{DW\_CFA\_nop} \\
-The DW\_CFA\_nop instruction has no operands and no required
+\item \textbf{DW\-\_CFA\-\_nop} \\
+The DW\-\_CFA\-\_nop instruction has no operands and no required
actions. It is used as padding to make a CIE or FDE an
appropriate size
initial\_instructions field of the associated CIE.}
\item \textit{Read and process the FDE’s instruction
-sequence until a DW\_CFA\_advance\_loc, DW\_CFA\_set\_loc, or the
+sequence until a DW\-\_CFA\-\_advance\-\_loc, DW\-\_CFA\-\_set\-\_loc, or the
end of the instruction stream is encountered.}
-\item \textit{ If a DW\_CFA\_advance\_loc or DW\_CFA\_set\_loc
+\item \textit{ If a DW\-\_CFA\-\_advance\-\_loc or DW\-\_CFA\-\_set\-\_loc
instruction is encountered, then compute a new location value
(L2). If L1 >= L2 then process the instruction and go back
to step 2.}
\item \textit{ The end of the instruction stream can be thought
-of as a DW\_CFA\_set\_loc (initial\_location + address\_range)
+of as a DW\-\_CFA\-\_set\-\_loc (initial\_location + address\_range)
instruction. Note that the FDE is ill-formed if L2 is less
than L1.}
If a Return Address register is defined in the virtual
unwind table, and its rule is undefined (for example, by
-DW\_CFA\_undefined), then there is no return address and no
+DW\-\_CFA\-\_undefined), then there is no return address and no
call address, and the virtual unwind of stack activations
is complete.
A normal compilation unit is represented by a debugging
information entry with the
-tag \livetarg{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}. A partial
+tag \livetarg{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}. A partial
compilation unit is represented by a debugging information
entry with the
-tag \livetarg{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}.
+tag \livetarg{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}.
In a simple normal compilation, a single compilation unit with
the tag
Compilation unit entries may have the following attributes:
\begin{enumerate}[1]
-\item Either a DW\_AT\_low\_pc and DW\_AT\_high\_pc pair of
-attributes or a DW\_AT\_ranges attribute whose values encode the
+\item Either a DW\-\_AT\-\_low\-\_pc and DW\-\_AT\-\_high\-\_pc pair of
+attributes or a DW\-\_AT\-\_ranges attribute whose values encode the
contiguous or non\dash contiguous address ranges, respectively,
of the machine instructions generated for the compilation
unit (see Section {chap:codeaddressesandranges}).
-A DW\_AT\_low\_pc attribute may also
-be specified in combination with DW\_AT\_ranges to specify the
+A DW\-\_AT\-\_low\-\_pc attribute may also
+be specified in combination with DW\-\_AT\-\_ranges to specify the
default base address for use in location lists (see Section
\refersec{chap:locationlists}) and range lists
(see Section \refersec{chap:noncontiguousaddressranges}).
-\item A DW\_AT\_name attribute whose value is a null\dash terminated
+\item A DW\-\_AT\-\_name attribute whose value is a null\dash terminated
string containing the full or relative path name of the primary
source file from which the compilation unit was derived.
-\item A DW\_AT\_language attribute whose constant value is an
+\item A DW\-\_AT\-\_language attribute whose constant value is an
integer code indicating the source language of the compilation
unit. The set of language names and their meanings are given
in
\label{fig:languagenames}
\begin{tabular}{ll}
Language name & Meaning\\ \hline
-DW\_LANG\_Ada83 \dag&ISO Ada:1983 \\
-DW\_LANG\_Ada95 \dag&ISO Ada:1995 \\
-DW\_LANG\_C&Non-standardized C, such as K\&R \\
-DW\_LANG\_C89&ISO C:1989 \\
-DW\_LANG\_C99 & ISO C:1999 \\
-DW\_LANG\_C\_plus\_plus&ISO C++:1998 \\
-DW\_LANG\_Cobol74& ISO Cobol:1974 \\
-DW\_LANG\_Cobol85 & ISO Cobol:1985 \\
-DW\_LANG\_D \dag & D \\
-DW\_LANG\_Fortran77 &ISO FORTRAN 77\\
-DW\_LANG\_Fortran90 & ISO Fortran 90\\
-DW\_LANG\_Fortran95 & ISO Fortran 95\\
-DW\_LANG\_Java & Java\\
-DW\_LANG\_Modula2 & ISO Modula\dash 2:1996\\
-DW\_LANG\_ObjC & Objective C\\
-DW\_LANG\_ObjC\_plus\_plus & Objective C++\\
-DW\_LANG\_Pascal83 & ISO Pascal:1983\\
-DW\_LANG\_PLI \dag & ANSI PL/I:1976\\
-DW\_LANG\_Python \dag & Python\\
-DW\_LANG\_UPC &Unified Parallel C\\ \hline
+DW\-\_LANG\-\_Ada83 \dag&ISO Ada:1983 \\
+DW\-\_LANG\-\_Ada95 \dag&ISO Ada:1995 \\
+DW\-\_LANG\-\_C&Non-standardized C, such as K\&R \\
+DW\-\_LANG\-\_C89&ISO C:1989 \\
+DW\-\_LANG\-\_C99 & ISO C:1999 \\
+DW\-\_LANG\-\_C\-\_plus\-\_plus&ISO C++:1998 \\
+DW\-\_LANG\-\_Cobol74& ISO Cobol:1974 \\
+DW\-\_LANG\-\_Cobol85 & ISO Cobol:1985 \\
+DW\-\_LANG\-\_D \dag & D \\
+DW\-\_LANG\-\_Fortran77 &ISO FORTRAN 77\\
+DW\-\_LANG\-\_Fortran90 & ISO Fortran 90\\
+DW\-\_LANG\-\_Fortran95 & ISO Fortran 95\\
+DW\-\_LANG\-\_Java & Java\\
+DW\-\_LANG\-\_Modula2 & ISO Modula\dash 2:1996\\
+DW\-\_LANG\-\_ObjC & Objective C\\
+DW\-\_LANG\-\_ObjC\-\_plus\-\_plus & Objective C++\\
+DW\-\_LANG\-\_Pascal83 & ISO Pascal:1983\\
+DW\-\_LANG\-\_PLI \dag & ANSI PL/I:1976\\
+DW\-\_LANG\-\_Python \dag & Python\\
+DW\-\_LANG\-\_UPC &Unified Parallel C\\ \hline
\dag \ \ Support for these languages is limited.& \\
\end{tabular}
\end{figure}
-\item A DW\_AT\_stmt\_list attribute whose value is a section
+\item A DW\-\_AT\-\_stmt\-\_list attribute whose value is a section
offset to the line number information for this compilation
unit. This information is placed in a separate object file
section from the debugging information entries themselves. The
information for this compilation unit
(see Section \refersec{chap:linenumberinformation}).
-\item A DW\_AT\_macro\_info attribute whose value is a section
+\item A DW\-\_AT\-\_macro\-\_info attribute whose value is a section
offset to the macro information for this compilation unit.
This information is placed in a separate object file section
from the debugging information entries themselves. The
information for this compilation unit
(see Section \refersec{chap:macroinformation}).
-\item A DW\_AT\_comp\_dir attribute whose value is a
+\item A DW\-\_AT\-\_comp\-\_dir attribute whose value is a
null\dash terminated string containing the current working directory
of the compilation command that produced this compilation
unit in whatever form makes sense for the host system.
-\item A DW\_AT\_producer attribute whose value is a null\dash
+\item A DW\-\_AT\-\_producer attribute whose value is a null\dash
terminated string containing information about the compiler
that produced the compilation unit. The actual contents of
the string will be specific to each producer, but should
with other producer values.
-\item A DW\_AT\_identifier\_case attribute whose integer
+\item A DW\-\_AT\-\_identifier\-\_case attribute whose integer
constant value is a code describing the treatment
of identifiers within this compilation unit. The
set of identifier case codes is given in Figure
\begin{figure}[here]
\autorows[0pt]{c}{1}{l}{
-\addtoindex{DW\_ID\_case\_sensitive},
-\addtoindex{DW\_ID\_up\_case},
-\addtoindex{DW\_ID\_down\_case},
-\addtoindex{DW\_ID\_case\_insensitive}
+\addtoindex{DW\-\_ID\-\_case\-\_sensitive},
+\addtoindex{DW\-\_ID\-\_up\-\_case},
+\addtoindex{DW\-\_ID\-\_down\-\_case},
+\addtoindex{DW\-\_ID\-\_case\-\_insensitive}
}
\caption{Identifier case codes}\label{fig:identifiercasecodes}
\end{figure}
-DW\_ID\_case\_sensitive is the default for all compilation units
+DW\-\_ID\-\_case\-\_sensitive is the default for all compilation units
that do not have this attribute. It indicates that names given
-as the values of DW\_AT\_name attributes in debugging information
+as the values of DW\-\_AT\-\_name attributes in debugging information
entries for the compilation unit reflect the names as they
appear in the source program. The debugger should be sensitive
to the case of identifier names when doing identifier lookups.
-DW\_ID\_up\_case means that the producer of&nb