\item A \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional} attribute,
\hypertarget{chap:DWATisoptionaloptionalparameter}
-which is a \livelink{chap:flag}{flag}, if a
+which
+\addtoindexx{is optional attribute}
+is a \livelink{chap:flag}{flag}, if a
parameter entry represents an optional parameter.
\item A \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value} attribute
\label{datarep:initiallengthvalues}
\addtoindexx{reserved values!initial length}
-An initial length field is one of the length fields that occur
+An \addtoindex{initial length field} is one of the length fields that occur
at the beginning of those DWARF sections that have a header
(\addtoindex{.debug\_aranges},
\addtoindex{.debug\_info},
that occurs at the beginning of the CIE and FDE structures
in the \addtoindex{.debug\_frame} section.
-In an initial length field, the values 0xfffffff0 through
+In an \addtoindex{initial length field}, the values 0xfffffff0 through
0xffffffff are reserved by DWARF to indicate some form of
extension relative to \addtoindex{DWARF Version 2}; such values must not
be interpreted as a length field. The use of one such value,
\begin{enumerate}[1.]
-\item In the 32\dash bit DWARF format, an initial length field
-(see Section \refersec{datarep:initiallengthvalues})
+\item In the 32\dash bit DWARF format, an
+\addtoindex{initial length field}
+(see
+\addtoindex{initial length field!encoding}
+Section \refersec{datarep:initiallengthvalues})
is an unsigned 32\dash bit integer (which
must be less than 0xfffffff0); in the 64\dash bit DWARF format,
-an initial length field is 96 bits in size, and has two parts:
+an \addtoindex{initial length field} is 96 bits in size,
+and has two parts:
\begin{itemize}
\item The first 32\dash bits have the value 0xffffffff.
format and to adapt its processing accordingly.}
\item Section offset and section length fields that occur
-in the headers of DWARF sections (other than initial length
+in the headers of DWARF sections (other
+\addtoindex{initial length field}
+than
+\addtoindex{initial length}
fields) are listed following. In the 32\dash bit DWARF format these
are 32\dash bit unsigned integer values; in the 64\dash bit DWARF format,
they are 64\dash bit unsigned integer values.
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
-A 4\dash byte or 12\dash byte unsigned integer representing the length
+A 4\dash byte or 12\dash byte
+\addtoindexx{initial length}
+unsigned integer representing the length
of the \addtoindex{.debug\_info}
contribution for that compilation unit,
not including the length field itself. In the 32\dash bit DWARF
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
-A 4\dash byte or 12\dash byte unsigned integer representing the length
+A 4\dash byte or 12\dash byte unsigned integer
+\addtoindexx{initial length}
+representing the length
of the \addtoindex{.debug\_types} contribution for that compilation unit,
not including the length field itself. In the 32\dash bit DWARF
format, this is a 4\dash byte unsigned integer (which must be
\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} \\
+ \addtoindexx{inline attribute!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,
\section{Inline Codes}
\label{datarep:inlinecodes}
-The encodings of the constants used in the
+The encodings of the constants used in
+\addtoindexx{inline attribute!encoding}
+the
\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in
Table \refersec{tab:inlineencodings}.
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
-A 4\dash byte or 12\dash byte unsigned integer representing the length
+A 4\dash byte or 12\dash byte unsigned integer
+\addtoindexx{initial length}
+representing the length
of the \addtoindex{.debug\_info}
contribution for that compilation unit,
not including the length field itself. In the 32\dash bit DWARF
\item unit\_length (initial length) \\
A 4-byte or 12-byte length containing the length of the
+\addtoindexx{initial length}
set of entries for this compilation unit, not including the
length field itself. In the 32-bit DWARF format, this is a
4-byte unsigned integer (which must be less than 0xfffffff0);
The pseudo\dash source in
Figure \refersec{fig:inliningexamplespseudosourcefragment}
is used to illustrate the
+\addtoindexx{inlined subprogram call!examples}
use of DWARF to describe inlined subroutine calls. This
example involves a nested subprogram INNER that makes uplevel
references to the formal parameter and local variable of the
\paragraph{Implicit Location Descriptions}
-An implicit location description represents a piece or all
+An \addtoindex{implicit location description}
+represents a piece or all
of an object which has no actual location but whose contents
are nonetheless either known or known to be undefined.
typically represents the defining declaration of that
entity. In certain contexts, however, a debugger might need
information about a declaration of an entity that is not
+\addtoindexx{incomplete declaration}
also a definition, or is otherwise incomplete, to evaluate
\hypertarget{chap:DWATdeclarationincompletenondefiningorseparateentitydeclaration}
an expression correctly.
\subsection{Non-Defining Declarations}
A debugging information entry that
-represents a non-defining or otherwise incomplete
-declaration of a program entity has
+represents a non-defining or
+\addtoindex{non-defining declaration}
+otherwise
+\addtoindex{incomplete declaration}
+of a program entity has
\addtoindexx{declaration attribute}
a
\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
\label{chap:identifiernames}
Any
\hypertarget{chap:DWATnamenameofdeclaration}
-debugging information entry representing a program entity
+debugging information entry
+\addtoindexx{identifier names}
+representing a program entity
that has been given a name may have a
\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
whose value is a string representing the name as it appears in
\addtoindex{end\_sequence} & ``false'' \\
\addtoindex{prologue\_end} & ``false'' \\
\addtoindex{epilogue\_begin} & ``false'' \\
-isa & 0 \\
+\addtoindex{isa} & 0 \\
discriminator & 0 \\
\end{tabular}
-\textit{The isa value 0 specifies that the instruction set is the
+\textit{The
+\addtoindex{isa} value 0 specifies that the instruction set is the
architecturally determined default instruction set. This may
be fixed by the ABI, or it may be specified by other means,
for example, by the object file description.}
\item default\_is\_stmt (ubyte) \\
\addtoindexx{default\_is\_stmt}
-The initial value of the is\_stmt register.
+The initial value of the \addtoindex{is\_stmt} register.
\textit{A simple approach
to building line number information when machine instructions
are emitted in an order corresponding to the source program
-is to set default\_is\_stmt to ``true'' and to not change the
-value of the is\_stmt register within the line number program.
+is to set \addtoindex{default\_is\_stmt}
+to ``true'' and to not change the
+value of the \addtoindex{is\_stmt} register
+within the line number program.
One matrix entry is produced for each line that has code
generated for it. The effect is that every entry in the
matrix recommends the beginning of each represented line as
(often but not necessarily only one) specifies a recommended
breakpoint location for the line number. \livelink{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt}
opcodes in the line number program control which matrix entries
-constitute such a recommendation and default\_is\_stmt might
+constitute such a recommendation and
+\addtoindex{default\_is\_stmt} might
be either ``true'' or ``false''. This approach might be
used as part of support for debugging optimized code.}
name or relative path name, the file is located relative
to either the compilation directory (as specified by the
\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} attribute given in the compilation unit) or one
-of the directories listed in the include\_directories section.
+of the directories listed in the
+\addtoindex{include\_directories} section.
\item An unsigned LEB128 number representing the directory
-index of a directory in the include\_directories section.
+index of a directory in the
+\addtoindex{include\_directories} section.
\item An unsigned LEB128 number representing the
The last entry is followed by a single null byte.
The directory index represents an entry in the
-include\_directories section. The index is 0 if the file was
+\addtoindex{include\_directories} section.
+The index is 0 if the file was
found in the current directory of the compilation, 1 if it
-was found in the first directory in the include\_directories
+was found in the first directory in the
+\addtoindex{include\_directories}
section, and so on. The directory index is ignored for file
names that represent full path names.
\item \textbf{DW\-\_LNS\-\_negate\-\_stmt} \\
The \livetarg{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt} opcode takes no
-operands. It sets the is\_stmt register of the state machine
+operands. It sets the \addtoindex{is\_stmt} register of the state machine
to the logical negation of its current value.
\item \textbf{DW\-\_LNS\-\_set\-\_basic\-\_block} \\
\item \textbf{DW\-\_LNS\-\_set\-\_isa} \\
The \livetarg{chap:DWLNSsetisa}{DW\-\_LNS\-\_set\-\_isa} opcode takes a single
-unsigned LEB128 operand and stores that value in the isa
+unsigned LEB128 operand and stores that value in the
+\addtoindex{isa}
register of the state machine.
\end{enumerate}
name or a relative path name, the file is located relative
to either the compilation directory (as specified by the
\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} attribute given in the compilation unit)
-or one of the directories in the include\_directories section.
+or one of the directories in the
+\addtoindex{include\_directories} section.
\item An unsigned LEB128 number representing the directory index
of the directory in which the file was found.
\end{enumerate}
The directory index represents an entry in the
-include\_directories section of the line number program
+\addtoindex{include\_directories} section of the line number program
header. The index is 0 if the file was found in the current
directory of the compilation, 1 if it was found in the first
-directory in the include\_directories section, and so on. The
+directory in the \addtoindex{include\_directories} section,
+and so on. The
directory index is ignored for file names that represent full
path names.
import it. A type unit represents a single complete type in a
separate unit. Either a normal compilation unit or a partial
compilation unit may be logically incorporated into another
-compilation unit using an imported unit entry.
+compilation unit using an
+\addtoindex{imported unit entry}.
\subsection[Normal and Partial CU Entries]{Normal and Partial Compilation Unit Entries}
\label{chap:normalandpartialcompilationunitentries}
\item A \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}
-attribute whose integer
+attribute
+\addtoindexx{identifier case attribute}
+whose integer
\hypertarget{chap:DWATidentifiercaseidentifiercaserule}
constant value is a code describing the treatment
of identifiers within this compilation unit. The
-set of identifier case codes is given in Figure
+set of identifier case codes
+is given in Figure
\refersec{fig:identifiercasecodes}.
\begin{figure}[here]
\hypertarget{chap:DWATimportimportedunit}
place where a normal or partial unit is imported is
represented by a debugging information entry with the
+\addtoindexx{imported unit entry}
tag \livetarg{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}.
-An imported unit entry contains a
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute whose value is a reference to the
+An imported unit entry contains
+\addtoindexx{import attribute}
+a
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute
+whose value is a reference to the
normal or partial compilation unit whose declarations logically
belong at the place of the imported unit entry.
\hypertarget{chap:DWATimportimporteddeclaration}
an overloaded entity
is imported, there is one imported declaration entry for
-each overloading. Each imported declaration entry has a
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute, whose value is a reference to the
+each overloading.
+\addtoindexx{import attribute}
+Each imported declaration entry has a
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute,
+whose value is a reference to the
debugging information entry representing the declaration that
is being imported.
}
An imported module declaration is represented by a debugging
-information entry with the
+information entry with
+\addtoindexx{imported module attribute}
+the
+\addtoindexx{imported module entry}
tag \livetarg{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}.
An
-imported module entry contains a \livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute
+imported module entry contains a
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute
+\addtoindexx{import attribute}
whose value is a reference to the module or namespace entry
containing the definition and/or declaration entries for
the entities that are to be imported into the context of the
\begin{tabular}{lp{9.0cm}}
\livetarg{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} & A subroutine or function. \\
\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine} & A particular inlined
- instance of a subroutine or function. \\
+\addtoindexx{inlined subprogram entry}
+instance of a subroutine or function. \\
\livetarg{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point} & An alternate entry point. \\
\end{tabular}
The entry for a subroutine that is
\hypertarget{chap:DWATinlineinlinedsubroutine}
explicitly declared to be available for inline expansion or
-that was expanded inline implicitly by the compiler has a
+that was expanded inline implicitly by the compiler has
+\addtoindexx{inline attribute}
+a
\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is an integer constant. The
set of values for the \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute is given in
Figure \refersec{fig:inlinecodes}.
\addtoindexx{abstract instance!entry}
as an ``abstract instance entry.''
Any subroutine entry
-that contains a \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is other
+that contains
+\addtoindexx{inline attribute}
+a \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is other
than \livelink{chap:DWINLnotinlined}{DW\-\_INL\-\_not\-\_inlined}
is known as
\addtoindexx{abstract instance!root}
Section \refersec{chap:codeaddressesandranges}).
An
\hypertarget{chap:DWATentrypcentryaddressofinlinedsubprogram}
-inlined subroutine entry may also contain
+inlined subroutine entry may
+\addtoindexx{inlined subprogram entry!in concrete instance}
+also
+\addtoindexx{inlined subprogram entry}
+contain
\addtoindexx{entry pc attribute!for inlined subprogram}
a
\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
directly or indirectly) by a debugging information entry
with the tag \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine} is referred to as a
``concrete inlined instance entry.'' Any entry that has
-the tag \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
-is known as a ``concrete inlined instance root.'' Any set of concrete inlined instance
+the tag
+\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
+is known as a ``concrete inlined instance root.''
+Any set of concrete inlined instance
entries that are all children (either directly or indirectly)
of some concrete inlined instance root, together with the root
itself, is known as a ``concrete inlined instance tree.''
respectively). As another
example, in \addtoindex{Ada} such an unspecified type entry can be referred
to by the type attribute of an access type where the denoted
+\addtoindexx{incomplete type (Ada)}
type is incomplete (the name is declared as a type but the
definition is deferred to a separate compilation unit).
\textit{Depending on the language, a named type that is defined in
terms of another type may be called a type alias, a subtype,
a constrained type and other terms. A type name declared with
-no defining details may be termed an incomplete, forward
-or hidden type. While the DWARF \livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef} entry was
+no defining details may be termed an
+\addtoindexx{incomplete type}
+incomplete, forward or hidden type.
+While the DWARF \livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef} entry was
originally inspired by the like named construct in
\addtoindex{C} and \addtoindex{C++},
it is broadly suitable for similar constructs (by whatever
(see Section \refersec{chap:byteandbitsizes}),
whose value is the amount of storage needed
to hold an instance of the structure, union or class type,
-including any padding. An incomplete structure, union or
-class type is represented by a structure, union or class
+including any padding.
+An incomplete structure, union or class type
+\addtoindexx{incomplete structure/union/class}
+is
+\addtoindexx{incomplete type}
+represented by a structure, union or class
entry that does not have a byte size attribute and that has
\addtoindexx{declaration attribute}
a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute.
\hypertarget{chap:DWATsignaturetypesignature}
a separate type unit
(see Section \refersec{chap:separatetypeunitentries}),
-an incomplete
-declaration of that type in the compilation unit may provide
+an incomplete declaration
+\addtoindexx{incomplete type}
+of that type in the compilation unit may provide
the unique 64\dash bit signature of the type using a \livelink{chap:DWATsignature}{DW\-\_AT\-\_signature}
attribute.
\textit{The \addtoindex{Java} language defines ``interface'' types.
An interface
-in Java is similar to a \addtoindex{C++} or
+in \addtoindex{Java} is similar to a \addtoindex{C++} or
\addtoindex{Java} class with only abstract
methods and constant data members.}
-Interface types are represented by debugging information
+Interface types
+\addtoindexx{interface type entry}
+are represented by debugging information
entries with the
tag \livetarg{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}.
may
\addtoindexx{derived type (C++)|see{inheritance entry}}
be ``derived from'' or be a
-``subclass of'' another class. In Java, an interface may ``extend''
+``subclass of'' another class.
+In \addtoindex{Java}, an interface may ``extend''
\addtoindexx{extended type (Java)|see{inheritance entry}}
-one or more other interfaces, and a class may ``extend'' another
+one
+\addtoindexx{implementing type (Java)|see{inheritance entry}}
+or more other interfaces, and a class may ``extend'' another
class and/or ``implement'' one or more interfaces. All of these
relationships may be described using the following. Note that
-in Java, the distinction between extends and implements is
+in \addtoindex{Java},
+the distinction between extends and implements is
implied by the entities at the two ends of the relationship.}
A class type or interface type entry that describes a
derived, extended or implementing class or interface owns
+addtoindexx{implementing type (Java)|see{inheritance entry}}
debugging information entries describing each of the classes
or interfaces it is derived from, extending or implementing,
respectively, ordered as they were in the source program. Each
-such entry has the
+such entry has
+\addtoindexx{inheritance entry}
+the
tag \livetarg{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}.
-An inheritance entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose value is
+An inheritance entry has
+\addtoindexx{inheritance entry}
+a
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose value is
a reference to the debugging information entry describing the
class or interface from which the parent class or structure
of the inheritance entry is derived, extended or implementing.
-An inheritance entry for a class that derives from or extends
+An inheritance entry
+\addtoindexx{inheritance entry}
+for a class that derives from or extends
\hypertarget{chap:DWATdatamemberlocationinheritedmemberlocation}
another class or struct also has
\addtoindexx{data member location attribute}
members
(see Section \refersec{chap:datamemberentries}). }
-An inheritance entry
+An
+\addtoindexx{inheritance entry}
+inheritance entry
\hypertarget{chap:DWATaccessibilitycppinheritedmembers}
may
\addtoindexx{accessibility attribute}
have a
\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
-attribute. If no accessibility attribute
+attribute.
+If no accessibility attribute
is present, private access is assumed for an entry of a class
and public access is assumed for an entry of an interface,
struct or union.
If
\hypertarget{chap:DWATvirtualityvirtualityofbaseclass}
-the class referenced by the inheritance entry serves
+the class referenced by the
+\addtoindexx{inheritance entry}
+inheritance entry serves
as a \addtoindex{C++} virtual base class, the inheritance entry has a
\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute.