The actual command definitions in dwarf5.tex are:
\newcommand{\addtoindex}[1]{#1\index{#1}}
\newcommand{\addtoindexi}[2]{#1\index{#2}}
-\newcommand{\addtoindexx}[1]{\index{#2}}
+\newcommand{\addtoindexx}[1]{\index{#1}}
\newcommand{\noindex}[1]{#1}
Where a word or phrase is to be indexed.
\section{Data Object Entries}
\label{chap:dataobjectentries}
-
+\addtoindexx{data object entries}
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}\addtoindexx{variable entry},
+\livetarg{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}\addtoindexx{formal parameter entry} and
+\livetarg{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}\addtoindexx{constant (data) entry},
respectively.
\textit{The tag \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} is used for languages that
\hypertarget{chap:DWATvariableparameternonconstantparameterflag}
represent.
-\item A \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter} attribute,
+\item A \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
+attribute\addtoindexx{variable parameter attribute},
which is a \livelink{chap:flag}{flag},
if a formal parameter entry represents a parameter whose
value in the calling function may be modified by the callee..
\section{Vendor Extensibility}
\label{datarep:vendorextensibility}
+\addtoindexx{vendor extensibility}
+\addtoindexx{vendor specific extensions|see{vendor extensibility}}
To reserve a portion of the DWARF name space and ranges of
enumeration values for use for vendor specific extensions,
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,
+range between \textit{prefix}\_lo\_user and \textit{prefix}\_hi\_user inclusive,
are reserved for vendor specific extensions. Vendors may
use values in this range without conflicting with current or
future system\dash defined values. All other values are reserved
number of standard opcodes varies with the DWARF version,
the range for extensions is also version dependent. Thus,
\livetarg{chap:DWLNSlouser}{DW\-\_LNS\-\_lo\-\_user} and
-\livetarg{chap:DWLNShiuser}{DW\-\_LNS\-\_hi\-\_user} symbols are not defined.}
+\livetarg{chap:DWLNShiuser}{DW\-\_LNS\-\_hi\-\_user} symbols are not defined.
+}
Vendor defined tags, attributes, base type encodings, location
atoms, language names, line number actions, calling conventions
and call frame instructions, conventionally use the form
-prefix\_vendor\_id\_name, where vendor\_id is some identifying
+\text{prefix\_vendor\_id\_name}, where
+\textit{vendor\_id}\addtoindexx{vendor id} is some identifying
character sequence chosen so as to avoid conflicts with
other vendors.
\label{datarep:reservedvalues}
\subsection{Error Values}
\label{datarep:errorvalues}
+\addtoindexx{reserved values!error}
As a convenience for consumers of DWARF information, the value
0 is reserved in the encodings for attribute names, attribute
\subsection{Initial Length Values}
\label{datarep:initiallengthvalues}
+\addtoindexx{reserved values!initial length}
An initial length field is one of the length fields that occur
at the beginning of those DWARF sections that have a header
\item version (uhalf)
A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit
+DWARF information for the compilation unit\addtoindexx{version number!compilation unit}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
The value in this field is 4.
\item version (uhalf)
A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit
+DWARF information for the compilation unit\addtoindexx{version number!type unit}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
The value in this field is 4.
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|l|l}
- \caption{Attribute encodings} \label{tab:attributeencodings} \\
+ \caption{Attribute encodings} \label{tab:attributeencodings} \addtoindexx{attribute encodings} \\
\hline \\ \bfseries Attribute name&\bfseries Value &\bfseries Classes \\ \hline
\endfirsthead
\bfseries Attribute name&\bfseries Value &\bfseries Classes\\ \hline
\endfoot
\hline
\endlastfoot
-\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference \\
-\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string \\
-\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant \\
-\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr} \\
-\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address \\
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant \\
-\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant \\
-\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference \\
-\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant \\
-\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant \\
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference \\
-\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference \\
-\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string \\
-\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&\livelink{chap:block}{block}, constant, string \\
-\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference \\
-\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference \\
-\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant \\
-\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string \\
-\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference
+ \addtoindexx{sibling attribute!encoding} \\
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr}\addtoindex{location attribute!encoding} \\
+\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string
+ \addtoindexx{name attribute!encoding} \\
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant
+ \addtoindexx{ordering attribute!encoding} \\
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc},
+ reference \addtoindexx{byte size attribute!encoding} \\
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant,
+ \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit offset attribute!encoding} \\
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant,
+ \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit size attribute!encoding} \\
+\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr}
+ \addtoindex{statement list attribute!encoding} \\
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address
+ \addtoindexx{lowpc attribute!encoding} \\
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant
+ \addtoindexx{highpc attribute!encoding} \\
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant
+ \addtoindexx{language attribute!encoding} \\
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference
+ \addtoindexx{discriminant attribute!encoding} \\
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant
+ \addtoindexx{discriminant value attribute!encoding} \\
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant
+ \addtoindexx{visibility attribute!encoding} \\
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference
+ \addtoindexx{import attribute!encoding} \\
+\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{string length attribute!encoding} \\
+\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference
+ \addtoindexx{common reference attribute!encoding} \\
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string
+ \addtoindexx{compilation directory attribute!encoding} \\
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&\livelink{chap:block}{block}, constant, string
+ \addtoindexx{constant value attribute!encoding} \\
+\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference
+ \addtoindexx{containing type attribute!encoding} \\
+\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference
+ \addtoindexx{default value attribute!encoding} \\
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant
+ \addtoindexx{inlineibute!encoding} \\
+\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&\livelink{chap:flag}{flag}
+ \addtoindexx{is optional attribute!encoding} \\
+\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant,
+ \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{lower bound attribute!encoding} \\
+\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string \addtoindexx{producer attribute!encoding} \\
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&\livelink{chap:flag}{flag}
+ \addtoindexx{prototyped attribute!encoding} \\
+\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{return address attribute!encoding} \\
% FIXME: lower case , not Constant
-\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr} \\
-\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference \\
-\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant \\
-\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant \\
-\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference \\
-\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant \\
-\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant \\
-\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant \\
-\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant \\
-\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block} \\
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant \\
-\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference \\
-\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant \\
-\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr} \\
-\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference \\
-\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference \\
-\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference \\
-\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference \\
-\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant \\
-\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
-
-
-\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc} \\
-\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference \\
-\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address \\
-\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference \\
-\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr} \\
-\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, \livelink{chap:flag}{flag}, reference, string \\
-\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant \\
-\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant \\
-\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant \\
-\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string \\
-\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant \\
-\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant \\
-\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference \\
-\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant \\
-\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant \\
-\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string \\
-\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&\livelink{chap:flag}{flag} \\
-
-
-\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference \\
-\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant \\
-\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference \\
-\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant \\
-\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string \\
-\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \\
-\livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \\
+\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant,
+ \livelink{chap:rangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding} \\
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant,
+ \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit stride attribute!encoding} \\
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant,
+ \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{upper bound attribute!encoding} \\
+\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference
+ \addtoindexx{abstract origin attribute!encoding} \\
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant
+ \addtoindexx{accessibility attribute!encoding} \\
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant
+ \addtoindexx{address class atribute!encoding} \\
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&\livelink{chap:flag}{flag}
+ \addtoindexx{artificial attribute!encoding} \\
+\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference
+ \addtoindexx{base types attribute!encoding} \\
+\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant
+ \addtoindexx{calling convention attribute!encoding} \\
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference
+ \addtoindexx{count attribute!encoding} \\
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant,
+ \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}
+ \addtoindexx{data member attribute!encoding} \\
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant
+ \addtoindexx{declaration column attribute!encoding} \\
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant
+ \addtoindexx{declaration file attribute!encoding} \\
+\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant
+ \addtoindexx{declaration line attribute!encoding} \\
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&\livelink{chap:flag}{flag}
+ \addtoindexx{declaration attribute!encoding} \\
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block}
+ \addtoindexx{discriminant list attribute!encoding} \\
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant
+ \addtoindexx{encoding attribute!encoding} \\
+\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{flag}
+ \addtoindexx{external attribute!encoding} \\
+\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding} \\
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference
+ \addtoindexx{friend attribute!encoding} \\
+\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant
+ \addtoindexx{identifier case attribute!encoding} \\
+\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr}
+ \addtoindexx{macro information attribute!encoding} \\
+\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference
+ \addtoindexx{name list item attribute!encoding} \\
+\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference
+ \addtoindexx{priority attribute!encoding} \\
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{segment attribute!encoding} \\
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference
+ \addtoindexx{specification attribute!encoding} \\
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{static link attribute!encoding} \\
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference
+ \addtoindexx{type attribute!encoding} \\
+\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{location list attribute!encoding} \\
+\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&\livelink{chap:flag}{flag}
+ \addtoindexx{variable parameter attribute!encoding} \\
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant
+ \addtoindexx{virtuality attribute!encoding} \\
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc},
+ \livelink{chap:loclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding} \\
+
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc},
+ reference \addtoindexx{allocated attribute!encoding} \\
+\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc},
+ reference \addtoindexx{associated attribute!encoding} \\
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc}
+ \addtoindexx{data location attribute!encoding} \\
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc},
+ reference \addtoindexx{byte stride attribute!encoding} \\
+\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address
+ \addtoindexx{entry pc attribute!encoding} \\
+\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&\livelink{chap:flag}{flag}
+ \addtoindexx{use UTF8 attribute!encoding} \\
+\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference
+ \addtoindexx{extension attribute!encoding} \\
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr}
+ \addtoindexx{ranges attribute!encoding} \\
+\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, \livelink{chap:flag}{flag},
+ reference, string \addtoindexx{trampoline attribute!encoding} \\
+\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant
+ \addtoindexx{call column attribute!encoding} \\
+\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant
+ \addtoindexx{call file attribute!encoding} \\
+\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant
+ \addtoindexx{call line attribute!encoding} \\
+\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string
+ \addtoindexx{description attribute!encoding} \\
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant
+ \addtoindexx{binary scale attribute!encoding} \\
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant
+ \addtoindexx{decimal scale attribute!encoding} \\
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference
+ \addtoindexx{small attribute!encoding} \\
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant
+ \addtoindexx{decimal scale attribute!encoding} \\
+\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant
+ \addtoindexx{digit count attribute!encoding} \\
+\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string
+ \addtoindexx{picture string attribute!encoding} \\
+\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&\livelink{chap:flag}{flag}
+ \addtoindexx{mutable attribute!encoding} \\
+
+\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&\livelink{chap:flag}{flag}
+ \addtoindexx{thread scaled attribute!encoding} \\
+\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&\livelink{chap:flag}{flag}
+ \addtoindexx{explicit attribute!encoding} \\
+\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference
+ \addtoindexx{object pointer attribute!encoding} \\
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant
+ \addtoindexx{endianity attribute!encoding} \\
+\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&\livelink{chap:flag}{flag}
+ \addtoindexx{elemental attribute!encoding} \\
+\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&\livelink{chap:flag}{flag}
+ \addtoindexx{pure attribute!encoding} \\
+\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&\livelink{chap:flag}{flag}
+ \addtoindexx{recursive attribute!encoding} \\
+\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference
+ \addtoindexx{signature attribute!encoding} \\
+\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag}
+ \addtoindexx{main subprogram attribute!encoding} \\
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant
+ \addtoindexx{data bit offset attribute!encoding} \\
+\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&\livelink{chap:flag}{flag}
+ \addtoindexx{constant expression attribute!encoding} \\
+\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&\livelink{chap:flag}{flag}
+ \addtoindexx{enumeration class attribute!encoding} \\
+\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string
+ \addtoindexx{linkage name attribute!encoding} \\
+\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \addtoindexx{low user attribute encoding} \\
+\livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding} \\
\end{longtable}
\ddag Attribute new in DWARF Version 4
\section{Variable Length Data}
\label{datarep:variablelengthdata}
+\addtoindexx{variable length data|see {LEB128}}
+\addtoindexx{LEB128 encoding}
Integers may be encoded using ``Little Endian Base 128''
(LEB128) numbers. LEB128 is a scheme for encoding integers
densely that exploits the assumption that most integers are
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|l|l}
- \caption{Examples of unsigned LEB32 encodings} \label{tab:examplesofunsignedleb128encodings} \\
+ \caption{Examples of unsigned LEB128 encodings} \label{tab:examplesofunsignedleb128encodings} \\
\hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
\endfirsthead
\bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
129& 1 + 0x80 & 1 \\
130& 2 + 0x80 & 1 \\
12857& 57 + 0x80 & 100 \\
-
+\addtoindex{LEB128 encoding!examples}
\end{longtable}
\end{centering}
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|l|l}
- \caption{Examples of signed LEB32 encodings} \label{tab:examplesofsignedleb128encodings} \\
+ \caption{Examples of signed LEB128 encodings} \label{tab:examplesofsignedleb128encodings} \\
\hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
\endfirsthead
\bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
\item version (uhalf)
A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit
+DWARF information\addtoindexx{version number!compilation unit} for the compilation unit
+\addtoindexx{version number!name lookup table}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
The value in this field is 4.
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
\item version (uhalf) \\
-A 2\dash byte version identifier containing the value 2
+A 2\dash byte version identifier
+\addtoindexx{version number!address range table} containing the value 2
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
\item debug\_info\_offset (section offset) \\
\section{Line Number Information}
\label{datarep:linenumberinformation}
-The version number in the line number program header is 4
+The \addtoindexi{version number}{version number!line number information}
+in the line number program header is 4
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
The boolean values ``true'' and ``false''
The source line numbers and source file indices encoded in the
macro information section are represented as unsigned LEB128
-numbers as are the constants in a \livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext} entry.
+numbers as are the constants in a
+\livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext} entry.
The macinfo type is encoded as a single byte.
The encodings are given in
CIE header is 0xffffffff; in the 64\dash bit DWARF format, the
value is 0xffffffffffffffff.
-The value of the CIE version number is 4
-(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+The value of the CIE \addtoindexi{version number}{version number!call frame information}
+is 4 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
Call frame instructions are encoded in one or more bytes. The
primary opcode is encoded in the high order two bits of
% Generate a page ref.
% use like \refersec{chap:registerbasedaddressing}
-\newcommand{\refersec}[1]{ \ref{#1} Page \pageref{#1} }
+\newcommand{\refersec}[1]{\ref{#1} on page \pageref{#1}}
% Generate a live link in the document
% use like \livelink{chap:DWOPdup}{DW\-\_OP\-\_dup}
\include{foreword}
\tableofcontents
+
+\newpage
\listoffigures
+
+\newpage
\listoftables
+\newpage
\mainmatter
% Define the levels of sectionality that are numbered.
\aliaspagestyle{chapter}{fragFirstChPage}
+\flushleft
\include{introduction}
\include{generaldescription}
\chapter[Encoding/Decoding (Informative)]{Variable Length Data: Encoding/Decoding (Informative)}
\label{app:variablelengthdataencodingdecodinginformative}
+\addtoindex{LEB128 encoding!algorithms}
+
Here are algorithms expressed in a C-like pseudo-code to
encode and decode signed and unsigned numbers in LEB128
representation.
\section{The Debugging Entry (DIE)}
\label{chap:thedebuggingentrydie}
DWARF uses a series of debugging information entries (DIEs) to
-define a low\dash{} level
+define a low-level
representation of a source program.
Each debugging information entry consists of an identifying
tag and a series of
\clearpage
\section{Relationship of Debugging Information Entries}
\label{chap:relationshipofdebugginginformationentries}
-\textit{
+\textit{%
A variety of needs can be met by permitting a single
debugging information entry to “own” an arbitrary number
of other debugging entries and by permitting the same debugging
entries of any node are exactly those debugging information
entries owned by that node.
-\textit{
+\textit{%
While the ownership relation
of the debugging information entries is represented as a
tree, other relations among the entries exist, for example,
specified by the object file or executable file which contains
the DWARF information.
-
-
-\textit{
+\textit{%
For example, if a particular target architecture supports
both 32\dash bit and 64\dash bit addresses, the compiler will generate
an object file which specifies that it contains executable
object file will use the same address size.
}
-\textit{
+\textit{%
Architectures which have multiple instruction sets are
supported by the isa entry in the line number information
(see Section \refersec{chap:statemachineregisters}).
}
-
\section{DWARF Expressions}
\label{chap:dwarfexpressions}
DWARF expressions describe how to compute a value or name a
In addition to the
general operations that are defined here, operations that are
specific to location descriptions are defined in
-Section \refersec{chap:locationdescriptions} .
+Section \refersec{chap:locationdescriptions}.
\subsection{General Operations}
\label{chap:generaloperations}
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 “\livelink{chap:DWOPlit}{DW\-\_OP\-\_litn}n \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}”.
+done with “\livelink{chap:DWOPlit}{DW\-\_OP\-\_lit\textit{n}} \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}”.
\item \livetarg{chap:DWOPshl}{DW\-\_OP\-\_shl} \\
The \livelink{chap:DWOPshl}{DW\-\_OP\-\_shl} operation pops the top two stack entries,
\section{Location Descriptions}
\label{chap:locationdescriptions}
-\textit{ Debugging information must provide consumers a way to find
+\textit{Debugging information must provide consumers a way to find
the location of program variables, determine the bounds
of dynamic arrays and strings, and possibly to find the
base address of a subroutine’s stack frame or the return
\begin{enumerate}[1]
\item \textit{Single location descriptions}, which are a language independent representation of
addressing rules of arbitrary complexity built from
-DWARF expressions (See section \refersec{chap:dwarfexpressions})
+DWARF expressions (See Section \refersec{chap:dwarfexpressions})
and/or other
DWARF operations specific to describing locations. They are
sufficient for describing the location of any object as long
The
\hypertarget{chap:DWATvisibilityvisibilityofdeclaration}
visibility of a declaration is represented
-by a \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute, whose value is a
+by a \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
+attribute\addtoindexx{visibility attribute}, whose value is a
constant drawn from the set of codes listed in
Figure \ref{fig:visibilitycodes}.
The
\hypertarget{chap:DWATvirtualityvirtualityindication}
virtuality of a declaration is represented by a
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute, whose value is a constant drawn
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
+attribute\addtoindexx{virtuality attribute}, whose value is a constant drawn
from the set of codes listed in
Figure \ref{fig:virtualitycodes}.
the attribute.
\end{itemize}
-\textit{
+\textit{%
Whether an attribute value can be dynamic depends on the
rules of the applicable programming language.
}
(see Section \refersec{datarep:locationdescriptions}).
\item version (uhalf) \\
-A version number
+A version number\addtoindexx{version number!name lookup table}\addtoindexx{version number!type lookup table}
(see Section \refersec{datarep:namelookuptables}).
This number is specific
to the name lookup table and is independent of the DWARF
(see Section \refersec{datarep:initiallengthvalues}).
\item version (uhalf) \\
-A version number
+A version number\addtoindexx{version number!address lookup table}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
-This
-number is specific to the address lookup table and is
+This number is specific to the address lookup table and is
independent of the DWARF version number.
\item debug\_info\_offset (section offset) \\
(see Section \refersec{datarep:initiallengthvalues}).
\item version (uhalf)
-A version number
+A version number\addtoindexx{version number!line number information}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
This number is specific to
the line number information and is independent of the DWARF
A constant that is used to distinguish CIEs from FDEs.
\item version (ubyte) \\
-A version number
+A version number\addtoindexx{version number!call frame information}
(see Section \refersec{datarep:callframeinformation}).
This number is specific to the call frame information
and is independent of the DWARF version number.
parameter entries, such as type entries.}
The unspecified parameters of a variable parameter list are
-represented by a debugging information entry with the tag
+represented by a debugging information entry\addtoindexx{unspecified parameters entry}
+with the tag
\livetarg{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}.
The entry for a subroutine that includes a
variable may be referenced, unqualified by the name of the
record variable.}
-A with statement is represented by a debugging information
-entry with the tag \livetarg{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}.
+A with statement is represented by a
+\addtoindexi{debugging information entry}{with statement entry}
+with the tag \livetarg{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}.
A with statement entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
This child entry has one of the
\addtoindexx{unspecified parameters entry!in catch block}
tags
-\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} or \livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters},
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} or
+\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters},
and will have the same form as other parameter entries.
The siblings immediately following
\chapter[Section Version Numbers (Informative)]{DWARF Section Version Numbers (Informative)}
\label{app:dwarfsectionversionnumbersinformative}
+\addtoindexx{version number!by section}
% The table format looks rather different that V4 and earlier
% as latex took up too much space and left no room for V5
\addtoindex{C} type int on a machine that uses 32\dash bit
integers is represented by a base type entry with a name
attribute whose value is “int”, an encoding attribute
-whose value is \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed} and a byte size attribute whose
-value is 4.}
+whose value is \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}
+and a byte size attribute whose value is 4.}
If the value of an object of the given type does not fully
occupy the storage described by a byte size attribute,
\textit{The DWARF Version 3 definition of these attributes is as follows.}
\begin{myindentpara}{1cm}
-\textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute, whose value
+\textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
+attribute, whose value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the size in bytes of the storage unit
used to represent an object of the given type.}
\begin{itemize}
\item \textit{DW\-\_AT\-\_byte\-\_size}
\item \textit{DW\-\_AT\-\_bit\-\_size}
-\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
and optionally \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}}
\end{itemize}
DWARF V3 defines the following combinations:
% bullet list, which looks horrible as a result.
\begin{itemize}
\item \textit{DW\-\_AT\-\_byte\-\_size}
-\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}}
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}}
\end{itemize}
\begin{figure}[!here]
Section \refersec{chap:segmentedaddresses}) \\
\livetarg{chap:DWATEboolean}{DW\-\_ATE\-\_boolean}& true or false \\
-\livetarg{chap:DWATEcomplexfloat}{DW\-\_ATE\-\_complex\-\_float}& complex binary floating\dash point number \\
+\livetarg{chap:DWATEcomplexfloat}{DW\-\_ATE\-\_complex\-\_float}& complex binary
+floating\dash point number \\
\livetarg{chap:DWATEfloat}{DW\-\_ATE\-\_float} & binary floating\dash point number \\
-\livetarg{chap:DWATEimaginaryfloat}{DW\-\_ATE\-\_imaginary\-\_float}& imaginary binary floating\dash point number \\
+\livetarg{chap:DWATEimaginaryfloat}{DW\-\_ATE\-\_imaginary\-\_float}& imaginary binary
+floating\dash point number \\
\livetarg{chap:DWATEsigned}{DW\-\_ATE\-\_signed}& signed binary integer \\
\livetarg{chap:DWATEsignedchar}{DW\-\_ATE\-\_signed\-\_char}& signed character \\
\livetarg{chap:DWATEunsigned}{DW\-\_ATE\-\_unsigned} & unsigned binary integer \\
the type.
\hypertarget{chap:DWATdecimalscaledecimalscalefactor}
-The \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale} attribute is an integer constant value
+The \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
+attribute is an integer constant value
that represents the exponent of the base ten scale factor to
be applied to an instance of the type. A scale of zero puts the
decimal point immediately to the right of the least significant
\begin{tabular}{lp{9cm}}
Name&Meaning\\ \hline
\livetarg{chap:DWDSunsigned}{DW\-\_DS\-\_unsigned} & unsigned \\
-\livetarg{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & Sign is encoded in the most significant digit in a target\dash dependent manner \\
-\livetarg{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & Sign is encoded in the least significant digit in a target\dash dependent manner \\
+\livetarg{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & Sign
+is encoded in the most significant digit in a target\dash dependent manner \\
+\livetarg{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & Sign
+is encoded in the least significant digit in a target\dash dependent manner \\
\livetarg{chap:DWDSleadingseparate}{DW\-\_DS\-\_leading\-\_separate}
& Decimal type: Sign is a ``+'' or ``-'' character
to the left of the most significant digit. \\
\section{Unspecified Type Entries}
\label{chap:unspecifiedtypeentries}
+\addtoindexx{unspecified type entry}
+\addtoindexx{void type|see{unspecified type entry}}
Some languages have constructs in which a type
may be left unspecified or the absence of a type
-\addtoindex{unspecified type entry}
+
may be explicitly indicated.
An unspecified (implicit, unknown, ambiguous or nonexistent)
the tag \livetarg{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}.
If a name has been given
to the type, then the corresponding unspecified type entry
-has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null\dash terminated
+has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is
+a null\dash terminated
string containing the name as it appears in the source program.
The interpretation of this debugging information entry is
example, in \addtoindex{Ada} such an unspecified type entry can be referred
to by the type attribute of an access type where the denoted
type is incomplete (the name is declared as a type but the
-definition is deferred to a separate compilation unit). Type
-Modifier Entries
+definition is deferred to a separate compilation unit).
+
+\section{Type Modifier Entries}
+\label{chap:typemodifierentries}
+\addtoindexx{type modifier entry}
A base or user\dash defined type may be modified in different ways
in different languages. A type modifier is represented in
given in
Figure \refersec{fig:typemodifiertags}.
-
If a name has been given to the modified type in the source
program, then the corresponding modified type entry has
a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null-terminated
modifier.
A modified type entry describing a pointer or reference
-type (using \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}, \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type} or
+type (using \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type} or
\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type})
% Another instance of no-good-place-to-put-index entry.
may
or reference type ought to be dereferenced.
A modified type entry describing a shared qualified type
-(using \livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}) may have a \livelink{chap:DWATcount}{DW\-\_AT\-\_count} attribute
+(using \livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}) may have a
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count} attribute
whose value is a constant expressing the blocksize of the
type. If no count attribute is present, then the “infinite”
blocksize is assumed.
\centering
\begin{tabular}{lp{9cm}}
Name&Meaning\\ \hline
-\livetarg{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} & C or C++ const qualified type \addtoindexx{C} \addtoindexx{C++} \\
-\livetarg{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}& Pascal or Ada packed type \addtoindexx{Ada} \addtoindexx{Pascal} \\
-\livetarg{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} & Pointer to an object of the type being modified \\
-\livetarg{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}& C++ (lvalue) reference to an object of the type
-being modified \\
-\livetarg{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&C restrict qualified type \\
-\livetarg{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} & C++ rvalue reference to an object of the type
-being modified \\
-\livetarg{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&UPC shared qualified type \\
-\livetarg{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&C or C++ volatile qualified type \\
+\livetarg{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} & C or C++ const qualified type
+\addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
+\livetarg{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}& Pascal or Ada packed type
+\addtoindexx{packed qualified type entry} \addtoindexx{Ada} \addtoindexx{Pascal} \\
+\livetarg{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} & Pointer to an object of
+the type being modified \addtoindexx{pointer qualified type entry} \\
+\livetarg{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}& C++ (lvalue) reference
+to an object of the type
+being modified \addtoindexx{reference qualified type entry} \\
+\livetarg{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&C restrict qualified type
+\addtoindexx{restricted qualified type entry} \\
+\livetarg{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} & C++
+rvalue reference to an object of the type being modified
+\addtoindexx{rvalue reference qualified type entry} \\
+\livetarg{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&UPC shared qualified type
+\addtoindexx{shared qualified type entry} \\
+\livetarg{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&C or C++ volatile qualified type
+\addtoindex{volatile qualified type entry} \\
\end{tabular}
\caption{Type modifier tags}
\label{fig:typemodifiertags}
Each array dimension is described by a debugging information
entry with either the tag \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} or the tag
-\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}. These entries are children of the
+\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}. These entries are
+children of the
array type entry and are ordered to reflect the appearance of
the dimensions in the source program (i.e., leftmost dimension
first, next to leftmost second, and so on).
\textit{\addtoindex{Pascal} and
other languages have a “discriminated union,”
+\addtoindex{discriminated union|see {variant entry}}
also called a “variant record.” Here, selection of a
number of alternative substructures (“variants”) is based
on the value of a component that is not part of any of those
in the source program.
A structure type, union type or class type entry may have
-either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or a \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
+either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or a
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
\hypertarget{chap:DWATbitsizedatamemberbitsize}
(see Section \refersec{chap:byteandbitsizes}),
whose value is the amount of storage needed
defined
\hypertarget{chap:DWATdatamemberlocationdatamemberlocation}
in a structure, union or class may have either a
-\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute or a \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute or a
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
attribute. If the beginning of the data member is the same as
the beginning of the containing entity then neither attribute
is required.
-For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute there are two cases:
+For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
+there are two cases:
\begin{enumerate}[1.]
the containing construct is equivalent to execution of the
\livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address} operation
(see Section \refersec{chap:stackoperations});
-\livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address} therefore is not needed at the
+\livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address} therefore
+is not needed at the
beginning of a location description for a data member. The
result of the evaluation is a location--either an address or
the name of a register, not an offset to the member.}
-\textit{A \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute that has the form of a
+\textit{A \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
+attribute that has the form of a
location description is not valid for a data member contained
in an entity that is not byte aligned because DWARF operations
do not allow for manipulating or computing bit offsets.}
\end{enumerate}
-For a \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} attribute, the value is an integer
-constant
+For a \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} attribute,
+the value is an integer constant
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
that specifies the number of bits
from the beginning of the containing entity to the beginning
\textit{\addtoindex{C} and \addtoindex{C++}
\addtoindex{bit fields}
typically require the use of the
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} and \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attributes.}
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} and
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attributes.}
\textit{This Standard uses the following bit numbering and direction
conventions in examples. These conventions are for illustrative
and arrays, see
Appendix \refersec{app:pascalexample}.}
-\textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} is new in DWARF Version 4 and
-is also used for base types
+\textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
+is new in DWARF Version 4 and is also used for base types
(see Section
\refersec{chap:basetypeentries}).
It replaces the
\livetarg{chap:DWATbitoffsetdatamemberbitlocation}
-attributes \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} and \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} when used to
+attributes \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} and
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} when used to
identify the beginning of bit field data members as defined
in DWARF V3 and earlier. The earlier attributes are defined
in a manner suitable for bit field members on big-endian
\textit{Diagrams similar to the above that show the use of the
-\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute
combination may be found in the DWARF Version 3 Standard.}
\textit{In comparing DWARF Versions 3 and 4, note that DWARF V4
defines the following combinations of attributes:}
\begin{itemize}
-\item \textit{either \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} or
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} (to specify the beginning of the
-data member)}
+\item \textit{either \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
+or
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
+(to specify the beginning of the data member)}
% FIXME: the indentation of the following line is suspect.
\textit{optionally together with}
-\item \textit{either \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} (to
+\item \textit{either \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} or
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} (to
specify the size of the data member)}
\end{itemize}
\textit{DWARF V3 defines the following combinations}
\begin{itemize}
-\item \textit{\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} (to specify the beginning
+\item \textit{\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
+(to specify the beginning
of the data member, except this specification is only partial
in the case of a bit field) }
% FIXME: the indentation of the following line is suspect.
\textit{optionally together with}
-\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
+\item \textit{\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
(to further specify the beginning of a bit field data member
as well as specify the size of the data member) }
\end{itemize}
\label{chap:memberfunctionentries}
A member function is represented by a debugging information
-entry with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}. The member function entry
+entry with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}.
+The member function entry
may contain the same attributes and follows the same rules
as non\dash member global subroutine entries
(see Section \refersec{chap:subroutineandentrypointentries}).
An
\hypertarget{chap:DWATvtableelemlocationvirtualfunctiontablevtableslot}
entry for a virtual function also has a
-\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location} attribute whose value contains
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
+\addtoindexi{attribute}{vtable element location attribute} whose value contains
a location description yielding the address of the slot
for the function within the virtual function table for the
enclosing class. The address of an object of the enclosing
If
\hypertarget{chap:DWATobjectpointerobjectthisselfpointerofmemberfunction}
the member function entry describes a non\dash static member
-function, then that entry has a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer} attribute
+function, then that entry has a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
+attribute
whose value is a reference to the formal parameter entry
that corresponds to the object for which the function is
called. The name attribute of that formal parameter is defined
also has a \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} attribute whose value is true.
Conversely, if the member function entry describes a static
-member function, the entry does not have a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
+member function, the entry does not have a
+\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
attribute.
If the member function entry describes a non\dash static member
If a subroutine entry represents the defining declaration
of a member function and that definition appears outside of
the body of the enclosing class declaration, the subroutine
-entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute, whose value is
+entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
+attribute, whose value is
a reference to the debugging information entry representing
the declaration of this function member. The referenced entry
will be a child of some class (or structure) type entry.
A class template instantiation is represented by a
debugging information entry with the tag \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type},
-\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} or \livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}. With five
+\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} or
+\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}. With five
exceptions, such an entry will contain the same attributes
and have the same types of child entries as would an entry
for a class type defined explicitly using the instantiation
\begin{enumerate}[1.]
\item Each formal parameterized type declaration appearing in the
template definition is represented by a debugging information
-entry with the tag \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each
+entry with the tag
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each
such entry may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is
a null\dash terminated string containing the name of the formal
type parameter as it appears in the source program. The
\label{chap:variantentries}
A variant part of a structure is represented by a debugging
-information entry with the
+information entry\addtoindexx{variant part entry} with the
tag \livetarg{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part} and is
owned by the corresponding structure type entry.
Each variant of a particular variant part is represented by
\hypertarget{chap:DWATdiscrvaluediscriminantvalue}
-a debugging information entry with the
+a debugging information entry\addtoindexx{variant entry} with the
tag \livetarg{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}
and is a child of the variant part entry. The value that
selects a given variant may be represented in one of three
descriptor that determines whether the list item represents
a single label or a label range. A single case label is
represented as an LEB128 number as defined above for the
-\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} attribute. A label range is represented by
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
+attribute. A label range is represented by
two LEB128 numbers, the low value of the range followed by the
high value. Both values follow the rules for signedness just
described. The discriminant value descriptor is an integer
variable's value matches any of the described constants,
and the condition is ‛false’ otherwise.}
-The \livetarg{chap:DWTAGcondition}{DW\-\_TAG\-\_condition} debugging information entry
+The \livetarg{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}
+debugging information entry\addtoindexx{condition entry}
describes a
logical condition that tests whether a given data item’s
value matches one of a set of constant values. If a name
The condition entry's parent entry describes the conditional
variable; normally this will be a \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable},
-\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} or \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} entry. If the parent
+\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} or
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} entry. If the parent
entry has an array type, the condition can test any individual
element, but not the array as a whole. The condition entry
implicitly specifies a “comparison type” that is the
\hypertarget{chap:DWATenumclasstypesafeenumerationdefinition}
the enumeration literal values. A \addtoindex{C++} type declaration written
using enum class declares a strongly typed enumeration and
-is represented using \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type} in combination
-with \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}.}
+is represented using \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}
+in combination with \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}.}
Each enumeration literal is represented by a debugging
information entry with the
\hypertarget{chap:DWATbytestrideenumerationstridedimensionofarraytype}
is different than what would otherwise be determined, then
\hypertarget{chap:DWATbitstrideenumerationstridedimensionofarraytype}
-the enumeration type entry has either a \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
+the enumeration type entry has either a
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
or \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} attribute
\addtoindexx{bit stride attribute}
which specifies the separation
\begin{enumerate}[1.]
\item The formal parameters of a parameter list (that have a
specific type) are represented by a debugging information entry
-with the tag \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}. Each formal parameter
+with the tag \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}.
+Each formal parameter
entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute that refers to the type of
the formal parameter.
is the same as the size of an address on the target machine.
If no string length attribute is present, the string type
-entry may have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+entry may have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
attribute, whose value
(see Section \refersec{chap:byteandbitsizes})
is the amount of
object of the given set type is different from the amount of
storage that is normally allocated to hold an individual object
of the indicated element type, then the set type entry has
-either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute, or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
+either a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute, or
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute
whose value (see Section \refersec{chap:byteandbitsizes}) is
the amount of storage needed to hold a value of the set type.
object of the given subrange type is different from the amount
of storage that is normally allocated to hold an individual
object of the indicated element type, then the subrange
-type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
attribute, whose value
(see Section \refersec{chap:staticanddynamicvaluesofattributes})
is the amount of
entry may have the attributes
\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
and \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound} to specify, respectively, the lower
-and upper bound values of the subrange. The \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
+and upper bound values of the subrange. The
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
attribute
\hypertarget{chap:DWATcountelementsofsubrangetype}
may be replaced by a
The \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description is used in conjunction
with the location descriptions for a particular object of the
given pointer to member type and for a particular structure or
-class instance. The \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} attribute expects two
-values to be
+class instance. The \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
+attribute expects two values to be
\addtoindexi{pushed}{address!implicit push for member operator}
onto the DWARF expression stack before
-the \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description is evaluated. The first
-value
+the \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} description is evaluated.
+The first value
\addtoindexi{pushed}{address!implicit push for member operator}
is the value of the pointer to member object
itself. The second value
\item Each formal parameterized type declaration appearing
in the template alias declaration is represented
by a debugging information entry with the tag
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each such entry may have
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}.
+Each such entry may have
a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a null\dash terminated
string containing the name of the formal type parameter as it
appears in the source program. The template type parameter
\item Each formal parameterized value declaration
appearing in the template alias declaration is
represented by a debugging information entry with the tag
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}. Each such entry may have
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}.
+Each such entry may have
a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a null\dash terminated
string containing the name of the formal value parameter
as it appears in the source program. The template value
parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing
the type of the parameterized value. Finally, the template
-value parameter entry has a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value} attribute, whose
-value is the actual constant value of the value parameter for
+value parameter entry has a \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
+attribute, whose value is the actual constant value of the value parameter for
this instantiation as represented on the target architecture.
\end{enumerate}