+On undefined references while building the document: In
+early latex passes forward references tend to be reported as
+'undefined'. An example is:
+LaTeX Warning: Reference `chap:generaldescription' on page
+3 undefined on input line 59.
+
+Because the side-files latex generates help resolve those in
+later passes the simple existence of 'undefined' in a 'make'
+on a 'clean' directory should not be alarming as these will
+usually be from an early pass. Run a second 'make' without
+doing a 'make clean' (thus using the side-files from the first
+'make') and if all is well the second 'make' will not generate
+any messages about 'undefined'.
+
+============================
On Linux:
On modern linux, here is the set of steps to build a pdf.
The DWARF5 latex document was first added here May 10, 2012.
-The tentative plan is to achieve a complete
-(insofar as is possible) identical-to-DWARF4 document.
-Mark that with a git tag. Then proceed to change the document
-with DWARF5 changes.
+The plan is to achieve a complete (insofar as is possible)
+identical-to-DWARF4 document (which is referred to as DWARF
+4.1). Mark that with a git tag. Then proceed to change
+the document with DWARF5 changes.
not a good candidate because the entities included are not
necessarily file level entities.
-This also applies to Fortran INCLUDE lines when declarations
+This also applies to \addtoindex{Fortran} INCLUDE lines when declarations
are included into a procedure or module context.
Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} (instead
\subsubsection{Fortran Example}
-For a Fortran
+For a \addtoindex{Fortran}
\addtoindexx{DWARF duplicate elimination!Fortran example}
example, consider
Figure \refersec{app:duplicateeliminationexample2fortransource}.
\label{app:duplicateeliminationexample2fortransource}
File CommonStuff.fh
+\addtoindexx{Fortran}
\begin{lstlisting}
IMPLICIT INTEGER(A-Z)
Section \refersec{app:duplicateeliminationexample2dwarfsectiongroup}
shows the section group
-corresponding to the included file CommonStuff.fh.
+corresponding to the included file
+\addtoindexx{Fortran example}
+CommonStuff.fh.
\paragraph{Duplicate elimination example 2: DWARF section group}
\label{app:duplicateeliminationexample2dwarfsectiongroup}
during the type signature computation algorithm of Section
Section \refersec{datarep:typesignaturecomputation}.
-
+%FIXME: The index entries here with \addtoindexx are ineffective.
\begin{alltt}
signature
: opt-context debug-entry attributes children
at-code
: <ULEB128>
form-encoded-value
- : \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} value
- : \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} value
- : \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} string
- : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} \nolink{block}
-\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+ : \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} value \addtoindexx{constant class}
+ : \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} value \addtoindexx{flag class}
+ : \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} string \addtoindexx{string class}
+ : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} \nolink{block} \addtoindexx{block class}
+\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} \addtoindexx{string class}
: '\\x08'
-\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}
+\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} \addtoindexx{block class}
: '\\x09'
-\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}
+\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} \addtoindexx{flag class}
: '\\x0c'
-\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}
+\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \addtoindexx{constant class}
: '\\x0d'
value
: <SLEB128>
\label{chap:dataobjectentries}
\addtoindexx{data object entries}
-Program variables, formal parameters and constants are
+Program variables,
+\addtoindexx{formal parameter entry}
+formal parameters and constants are
represented by debugging information entries with the tags
\livetarg{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}\addtoindexx{variable entry},
\livetarg{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}\addtoindexx{formal parameter entry} and
\item A \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value} attribute
\addtoindexx{default value attribute}
-for a formal parameter
+for
+\addtoindexx{formal parameter entry!with default value}
+a formal parameter
\hypertarget{chap:DWATdefaultvaluedefaultvalueofparameter}
entry. The value of this attribute is a reference to the
debugging information entry for a variable or subroutine,
\section{Common Block Entries}
\label{chap:commonblockentries}
A Fortran \livetargi{chap:fortrancommonblock}{common}{Fortran!common block} \livetargi{chap:commonblockentry}{block}{common block entry}
-may be described by a debugging
+may
+\addtoindexx{Fortran!common block}
+be described by a debugging
information entry with the
tag \livetarg{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}.
The
(see Section \refersec{chap:locationdescriptions}).
\item \livelink{chap:flag}{flag} \\
-A flag is represented explicitly as a single byte of data
+A flag \addtoindexx{flag class}
+is represented explicitly as a single byte of data
(\livetarg{chap:DWFORMflag}{DW\-\_FORM\-\_flag}) or
implicitly (\livetarg{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present}).
In the
\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} \\
+ \addtoindexx{low PC attribute!encoding} \\
\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant
- \addtoindexx{highpc attribute!encoding} \\
+ \addtoindexx{high PC attribute!encoding} \\
\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant
\addtoindexx{language attribute!encoding} \\
\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference
\subsection{Fortran 90 Example}
\label{app:fortran90example}
-Consider the Fortran 90 source fragment in
+Consider the \addtoindex{Fortran 90} source fragment in
\addtoindexx{array type entry!examples}
Figure \refersec{fig:fortran90examplesourcefragment}.
\end{figure}
For allocatable and pointer arrays, it is essentially required
-by the Fortran 90 semantics that each array consist of
+by the \addtoindex{Fortran 90} semantics that each array consist of
\addtoindexx{descriptor!array}
two
\addtoindexx{array!descriptor for}
a property of the design that 1) a debugger needs no builtin
knowledge of this structure and 2) there does not need to
be an explicit representation of this structure in the DWARF
-input to the debugger.
+input to the
+\addtoindexx{Fortran 90}
+debugger.
\begin{figure}[here]
\begin{lstlisting}
a descriptor does have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. In
that case the object doubles as its own descriptor.)
-The Fortran 90 derived type array\_ptr can now be redescribed
+The \addtoindex{Fortran 90} derived type array\_ptr can now be redescribed
in C\dash like terms that expose some of the representation as in
\begin{lstlisting}
\end{enumerate}
-The DWARF description is shown in
+The DWARF description is shown
+\addtoindexx{Fortran 90}
+in
Section \refersec{app:fortran90exampledwarfdescription}.
\subsection{Fortran 90 example: DWARF description}
\subsection{Fortran 90 example continued: DWARF description}
\label{app:fortran90examplecontinueddwarfdescription}
-Suppose the program is stopped immediately following completion
+Suppose
+\addtoindexx{Fortran 90 example}
+the program is stopped immediately following completion
of the do loop. Suppose further that the user enters the
following debug command:
\addtoindexx{abstract instance!example}
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 \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc},
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}, \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}, and so on, typically are omitted
-from an abstract instance because they are not invariant across
+normal subprogram.
+While attributes such as
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc},
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc},
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location},
+and so on, typically are omitted
+\addtoindexx{high PC attribute}
+from
+\addtoindexx{low PC attribute}
+an
+\addtoindexx{location attribute}
+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
invariant -- there is only one subprogram INNER to be described
refer
\addtoindexx{address size|see{size of an address}}
to the size
-\addtoindexx{address!size of an|see{size of an address}}
of an
\addtoindexi{address}{size of an address}
on the target architecture (or equivalently, target machine)
\addtoindex{declaration file attribute}
the
\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}
-attribute corresponds to
+attribute
+\addtoindexx{file containing declaration}
+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
the like, may have
\begin{itemize}
-\item A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
-attributes for a single contiguous range of
+\item A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
+attributes
+\addtoindexx{high PC attribute}
+for
+\addtoindexx{low PC attribute}
+a single contiguous range of
addresses, or
-\item A \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute for a non-contiguous range of addresses.
+\item A \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
+for a non-contiguous range of addresses.
\end{itemize}
In addition, a non-contiguous range of
\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 \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes. The value
-of the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute is the relocated address of the
+be described as a single continguous range, the entry
+\addtoindexx{high PC attribute}
+may
+\addtoindexx{low PC attribute}
+have
+a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes.
+The value
+of the
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute
+is the relocated address of the
first instruction associated with the entity. If the value of
the \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} is of class address, it is the relocated
address of the first location past the last instruction
\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 \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
+a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
+whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
and indicates the beginning of a range list. Similarly,
a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute may have a value of class
\livelink{chap:rangelistptr}{rangelistptr} for the same reason.
\addtoindex{.debug\_ranges}. A
range list is indicated by a
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose
+\addtoindexx{ranges attribute}
value is represented as an offset from the beginning of the
\addtoindex{.debug\_ranges} section to the beginning of the range list.
in other shared libraries.
\item
-Add support for Fortran 90 modules as well as allocatable
+Add support for \addtoindex{Fortran 90} modules as well as allocatable
array and pointer types.
\item
This parameter affects the meaning of the special opcodes. See below.
\item opcode\_base (ubyte) \\
-The number assigned to the first special opcode.
+The
+\addtoindex{opcode\_base}
+number assigned to the first special opcode.
\textit{Opcode base is typically one greater than the highest-numbered
+\addtoindex{opcode\_base}
standard opcode defined for the specified version of the line
number information (12 in
\addtoindex{DWARF Version 3} and
\addtoindexx{DWARF Version 2}
Version 2).
If opcode\_base is less than the typical value,
+\addtoindex{opcode\_base}
then standard opcode numbers greater than or equal to the
opcode base are not used in the line number table of this unit
(and the codes are treated as special opcodes). If opcode\_base
is opcode\_base - 1.
By increasing opcode\_base, and adding elements to this array,
+\addtoindex{opcode\_base}
new standard opcodes can be added, while allowing consumers who
do not know about these new opcodes to be able to skip them.
just like standard opcodes.
\item include\_directories (sequence of path names) \\
-Entries in this sequence describe each path that was searched
+Entries
+\addtoindexx{include\_directories}
+in this sequence describe each path that was searched
for included source files in this compilation. (The paths
include those directories specified explicitly by the user for
the compiler to search and those the compiler searches without
not explicitly represented.
\item file\_names (sequence of file entries) \\
-Entries in this sequence describe source files that contribute
+Entries
+\addtoindexx{file names}
+in
+\addtoindexx{file\_names}
+this sequence describe source files that contribute
to the line number information for this compilation unit or is
used in other contexts, such as in a declaration coordinate or
a macro file inclusion. Each entry consists of the following
\addtoindex{.debug\_frame} section
are aligned on a multiple of the address size relative to
the start of the section and come in two forms: a Common
-Information Entry (CIE) and a Frame Description Entry (FDE).
+\addtoindexx{common information entry}
+Information Entry (CIE) and a
+\addtoindexx{frame description entry}
+Frame Description Entry (FDE).
\textit{If the range of code addresses for a function is not
contiguous, there may be multiple CIEs and FDEs corresponding
attributes:
\begin{enumerate}[1]
-\item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
-attributes or a
+\item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
+\addtoindexx{high PC attribute}
+attributes
+\addtoindexx{low PC attribute}
+or
+\addtoindexx{ranges attribute}
+a
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
whose values encode
\addtoindexx{discontiguous address ranges|see{non-contiguous address ranges}}
the
non\dash contiguous address ranges, respectively,
of the machine instructions generated for the compilation
unit (see Section {chap:codeaddressesandranges}).
-A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute may also
-be specified in combination with \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} to specify the
+A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute
+may also
+be specified
+in combination
+\addtoindexx{ranges attribute}
+with
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} to specify the
+\addtoindexx{ranges attribute}
default base address for use in location lists (see Section
\refersec{chap:locationlists}) and range lists
(see Section \refersec{chap:noncontiguousaddressranges}).
entry containing a
\addtoindex{declaration attribute}
(\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}). A
-\addtoindex{Fortran 90} module may also be represented by a module entry
+\addtoindex{Fortran 90} module
+\addtoindexx{Fortran!module (Fortran 90)}
+may also be represented by a module entry
(but no declaration attribute is warranted because \addtoindex{Fortran}
has no concept of a corresponding module body).}
The module entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}
-pair of attributes or a
+pair
+\addtoindexx{high PC attribute}
+of
+\addtoindexx{low PC attribute}
+attributes or a
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
whose values encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated for
the module initialization code
\label{chap:namespaceentries}
\textit{\addtoindex{C++} has the notion of a namespace, which provides a way to
implement name hiding, so that names of unrelated things
-do not accidentally clash in the global namespace when an
+do not accidentally clash in the
+\addtoindex{global namespace} when an
application is linked together.}
A namespace is represented by a debugging information entry
If a type, variable, or function declared in a namespace is
defined outside of the body of the namespace declaration,
that type, variable, or function definition entry has a
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute whose value is a reference to the
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute
+whose value is a reference to the
debugging information entry representing the declaration of
the type, variable or function. Type, variable, or function
entries with a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need
to duplicate information provided by the declaration entry
referenced by the specification attribute.
-\textit{The \addtoindex{C++} global namespace
-(the namespace referred to by
+\textit{The \addtoindex{C++} \addtoindex{global namespace}
+(the
+\addtoindexx{global namespace|see{namespace (C++), global}}
+namespace referred to by
``::f'', for example) is not explicitly represented in
DWARF with a namespace entry (thus mirroring the situation
in \addtoindex{C++} source).
an imported entity, other than a namespace).
}
-\textit{A \addtoindex{Fortran} use statement with an ``only list'' may be
+\textit{A \addtoindex{Fortran} use statement
+\addtoindexx{Fortran!use statement}
+with an ``only list'' may be
represented by a series of imported declaration entries,
one (or more) for each entity that is imported. An entity
that is renamed in the importing context may be represented
might be the original namespace entry) and no owned entries.
}
-\textit{A \addtoindex{Fortran} use statement with a “rename list” may be
+\textit{A \addtoindex{Fortran} use statement
+\addtoindexx{Fortran!use statement}
+with a “rename list” may be
represented by an imported module entry with an import
attribute referring to the module and owned entries
corresponding to those entities that are renamed as part of
\label{chap:subroutineandentrypointentries}
The following tags exist to describe
-debugging information entries for subroutines and entry
+debugging information entries
+\addtoindexx{function entry|see{subroutine entry}}
+for
+\addtoindexx{subroutine entry}
+subroutines and entry
% FIXME: is entry point entry the right index 'entry'?
\addtoindexx{entry point entry}
points:
may have a calling convention attribute whose value is the
constant \livetarg{chap:DWCCprogram}{DW\-\_CC\-\_program}.
-\textit{The \livelink{chap:DWCCprogram}{DW\-\_CC\-\_program} value is intended to support \addtoindex{Fortran} main
+\textit{The \livelink{chap:DWCCprogram}{DW\-\_CC\-\_program}
+value is intended to support \addtoindex{Fortran} main
+\addtoindexx{Fortran!main program}
programs which in some implementations may not be callable
or which must be invoked in a special way. It is not intended
as a way of finding the entry address for the program.
A subroutine entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
-whose values encode the contiguous or non\dash contiguous address
+\addtoindexx{ranges attribute}
+whose
+\addtoindexx{high PC attribute}
+values
+\addtoindexx{low PC attribute}
+encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated
for the subroutine (see
Section \refersec{chap:codeaddressesandranges}).
The declarations enclosed by a subroutine or entry point are
represented by debugging information entries that are owned
by the subroutine or entry point entry. Entries representing
+\addtoindexx{formal parameter}
the formal parameters of the subroutine or entry point appear
in the same order as the corresponding declarations in the
source program.
with the tag
\livetarg{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}.
-The entry for a subroutine that includes a
-\addtoindex{Fortran}
+The entry for a subroutine that includes
+\addtoindexx{Fortran!common block}
+a
+\addtoindex{Fortran} common block
\livelink{chap:fortrancommonblock}{common}
\livelink{chap:commonblockentry}{block}
\addtoindexx{common block|see{Fortran common block}}
A
\hypertarget{chap:DWATframebasesubroutineframebaseaddress}
-subroutine or entry point entry may also have a
+subroutine or entry point entry may also have
+\addtoindexx{frame base attribute}
+a
\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute, whose value is a location
description that computes the “frame base” for the
subroutine or entry point. If the location description is
such entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value is a
null\dash terminated string containing the name of the formal
type parameter as it appears in the source program. The
+\addtoindexx{formal type parameter|see{template type parameter entry}}
template type parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
describing the actual type by which the formal is replaced
for this instantiation.
Each inlined subroutine entry may have either a
\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}
-and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}
+and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair
+of
+\addtoindexx{high PC attribute}
+attributes
+\addtoindexx{low PC attribute}
+or
+\addtoindexx{ranges attribute}
+a
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}
attribute whose values encode the contiguous or non\dash contiguous
address ranges, respectively, of the machine instructions
generated for the inlined subroutine (see
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
+attributes
+\addtoindexx{high PC attribute}
+or
+\addtoindexx{low PC attribute}
+a
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
whose values encode the contiguous or non-contiguous address
ranges, respectively, of the machine instructions generated
for the lexical \livelink{chap:lexicalblock}{block}
\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
+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
+\addtoindexx{high PC attribute}
+or
+\addtoindexx{low PC attribute}
+a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
whose values encode the contiguous or non\dash contiguous address
ranges, respectively, of the machine instructions generated
for the with statement
% nolink as we have links just above and do not have a combo link for both
Both try and catch \nolink{block} entries may have either a
-\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a
-\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose values encode the contiguous
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes
+\addtoindexx{high PC attribute}
+or
+\addtoindexx{low PC attribute}
+a
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+\addtoindexx{ranges attribute}
+whose values encode the contiguous
or non\dash contiguous address ranges, respectively, of the
machine instructions generated for the \livelink{chap:lexicalblock}{block}
(see Section
entry representing the type of exception accepted by
that catch \livelink{chap:catchblock}{block}.
-This child entry has one of the
+This child entry has one of
+\addtoindexx{formal parameter entry!in catch block}
+the
\addtoindexx{unspecified parameters entry!in catch block}
tags
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} or
\label{chap:basetypeentries}
\textit{A base type is a data type that is not defined in terms of
-other data types. Each programming language has a set of base
+other data types.
+\addtoindexx{fundamental type|see{base type entry}}
+Each programming language has a set of base
types that are considered to be built into that language.}
A base type is represented by a debugging information entry
\subsection{Friends}
\label{chap:friends}
-Each ``friend'' declared by a structure, union or class
+Each ``friend''
+\addtoindexx{friend entry}
+declared by a structure, union or class
\hypertarget{chap:DWATfriendfriendrelationship}
type may be represented by a debugging information entry
that is a child of the structure, union or class type entry;
the friend entry has the
tag \livetarg{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}.
-A friend entry has a \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute, whose value is
+A friend entry has
+\addtoindexx{friend attribute}
+a \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute, whose value is
a reference to the debugging information entry describing
the declaration of the friend.
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:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} entry.
+If
+\addtoindexx{formal parameter entry}
+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
A ``string'' is a sequence of characters that have specific
semantics and operations that separate them from arrays of
-characters. Fortran is one of the languages that has a string
+characters.
+\addtoindex{Fortran} is one of the languages that has a string
type. Note that ``string'' in this context refers to a target
machine concept, not the class string as used in this document
(except for the name attribute).
files.}
A file type is represented by a debugging information entry
-with the
+with
+\addtoindexx{file type entry}
+the
\livetarg{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}.
If the file type has a name,
the file type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value
\hypertarget{chap:DWATdatalocationindirectiontoactualdata}
The \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
attribute may be used with any
-type that provides one or more levels of hidden indirection
+\addtoindexx{data location attribute}
+type that provides one or more levels of
+\addtoindexx{hidden indirection|see{data location attribute}}
+hidden indirection
and/or run\dash time parameters in its representation. Its value
is a location description. The result of evaluating this
description yields the location of the data for an object.
object which can then serve as a descriptor in subsequent
calculation. For an example using
\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
-for a Fortran 90 array, see
+for a \addtoindex{Fortran 90 array}, see
Appendix \refersec{app:fortran90example}.}
\subsection{Allocation and Association Status}
\label{chap:allocationandassociationstatus}
-\textit{Some languages, such as Fortran 90, provide types whose values
+\textit{Some languages, such as \addtoindex{Fortran 90},
+provide types whose values
may be dynamically allocated or associated with a variable
under explicit program control.}
integer value of the attribute (see below) indicates whether
an object of the type is currently associated or not.
-While these attributes are defined specifically with Fortran
-90 ALLOCATABLE and POINTER types in mind, usage is not limited
+While these attributes are defined specifically with
+\addtoindex{Fortran 90} ALLOCATABLE and POINTER types
+in mind, usage is not limited
to just that language.
The value of these attributes is determined as described in
A non\dash zero value is interpreted as allocated or associated,
and zero is interpreted as not allocated or not associated.
-\textit{For \addtoindex{Fortran} 90,
+\textit{For \addtoindex{Fortran 90},
if the \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
attribute is present,
the type has the POINTER property where either the parent
\textit{For examples using
\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} for \addtoindex{Ada} and
-\addtoindex{Fortran} 90
+\addtoindex{Fortran 90}
arrays,
see Appendix \refersec{app:aggregateexamples}.}