\item A \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute,
\addtoindexx{location attribute}
-whose value describes the
-location of a variable or parameter at run-time. In a variable
+whose value describes the location of a variable or parameter at run-time.
+If no location attribute is present in a variable
entry representing the definition of a variable (that is,
\addtoindexx{declaration attribute}
with no
-\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute)
-if no location attribute
-is present, or if the location attribute is present but has
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute),
+or if the location attribute is present but has
an empty location description (as described in Section 2.6),
+\addtoindexx{unallocated variable}
the variable is assumed to exist in the source code but not
in the executable program (but see number 10, below).
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
A 4\dash byte or 12\dash byte
\addtoindexx{initial length}
unsigned integer representing the length
integer that gives the actual length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item version (uhalf)
+\item version (\addtoindex(uhalf))
A 2\dash byte unsigned integer representing the version of the
DWARF information for the compilation unit\addtoindexx{version number!compilation unit}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item address\_size (ubyte) \\
+\item address\_size (\addtoindex{ubyte}) \\
A 1\dash byte unsigned integer representing the size in bytes of
\addtoindexx{address\_size}
an address on the target architecture. If the system uses
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
A 4\dash byte or 12\dash byte unsigned integer
\addtoindexx{initial length}
representing the length
8\dash byte unsigned integer that gives the actual length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item version (uhalf)
+\item version (\addtoindex(uhalf))
A 2\dash byte unsigned integer representing the version of the
DWARF information for the
compilation unit\addtoindexx{version number!type unit}
it is an 8\dash byte unsigned offset
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
+If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
+\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
compilation unit entry, string values are encoded using the
-UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
+UTF\dash 8 (\addtoindex{Unicode} Transformation Format\dash 8) from the Universal
Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
the string representation is unspecified.
-The Unicode Standard Version 3 is fully compatible with
+The \addtoindex{Unicode} Standard Version 3 is fully compatible with
ISO/IEC 10646\dash 1:1993. It contains all the same characters
and encoding points as ISO/IEC 10646, as well as additional
information about the characters and their use.
\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} \\
+ \addtoindexx{use UTF8 attribute!encoding}\addtoindex{UTF-8} \\
\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference
\addtoindexx{extension attribute!encoding} \\
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr}
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
A 4\dash byte or 12\dash byte unsigned integer
\addtoindexx{initial length}
representing the length
integer that gives the actual length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item version (uhalf)
+\item version (\addtoindex(uhalf))
A 2\dash byte unsigned integer representing the version of the
DWARF information\addtoindexx{version number!compilation unit} for the compilation unit
\addtoindexx{version number!name lookup table}
% these tables.
\item unit\_length (initial length) \\
+\addtoindexx{unit\_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
the actual length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item version (uhalf) \\
+\item version (\addtoindex(uhalf)) \\
A 2\dash byte version identifier
\addtoindexx{version number!address range table} containing the value 2
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{c|l}
\caption{Integer Representation Names} \label{tab:integerrepresentationnames}\\
- \hline \\ \bfseries Representation Name&\bfseries Representation \\ \hline
+ \hline \bfseries Representation Name&\bfseries Representation \\ \hline
\endfirsthead
\bfseries Representation Name&\bfseries Representation\\ \hline
\endhead
\usepackage[plainpages=false,pdfpagelabels,pagebackref]{hyperref} % Lets us generate colored active links inside a pdf.
\makeindex % This and the makeidx package allow \index to create index entries.
-\newcommand{\docdate}{21 October 2012}
+\newcommand{\docdate}{17 December 2012}
\newcommand{\dwf}{DWARF Debugging Information Format}
\newenvironment{myindentpara}[1]%
\begin{document}
\pagestyle{empty}
+
\nonzeroparskip
\setlength{\parindent}{0pt}
\setlength{\headheight}{6cm}
\url{http://www.dwarfstd.org}
+\large
\textbf{\docdate}
\end{centering}
\include{copyright}
\include{foreword}
+\include{foreword4.1}
\tableofcontents
\section{Unicode Character Example}
\label{app:unicodecharacterexample}
-
-Unicode character encodings can be described in DWARF as
+\addtoindexx{Unicode|see {\textit{also} UTF-8}}
+\addtoindex{Unicode} character encodings can be described in DWARF as
illustrated in
Section \refersec{app:unicodecharacterexamplesub}.
\begin{center}
\begin{tabular}{ll}
Todd Allen&Concurrent Computer\\
-David Anderson\\
+David Anderson, Associate Editor\\
John Bishop&Intel\\
Jim Blandy&CodeSourcery\\
Ron Brender, Editor\\
--- /dev/null
+\renewcommand{\abstractname}{Foreword to Version 4.1}
+\setlength{\parindent}{0pt}
+\begin{abstract}
+\nonzeroparskip
+\setlength{\parindent}{0pt}
+
+This version of the DWARF Debugging Information Format is first and foremost
+a re-implementation of the Version 4 document using the \LaTeX document preparation system.
+There are no substantive changes compared to the Version 4 document and very few even minor
+editorial changes other than those mandated by the underlying technology.
+
+If any descrepencies are discovered between these two documents, please bring them to the
+attention of the DWARF Information Format Committee.
+\end{abstract}
\ No newline at end of file
&\livelinki{chap:DWATstringlengthstringlengthofstringtype}{String length of string type}{string length of string type}
\\
\livetarg{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
-&\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}{UPC array bound THREADS scale factor}\\
+&\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}{UPC!array bound THREADS scale factor}\\
\livetarg{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}
&\livelinki{chap:DWATtrampolinetargetsubroutine}{Target subroutine}{target subroutine of trampoline} \\
\livetarg{chap:DWATtype}{DW\-\_AT\-\_type}
&\livelinki{chap:DWATupperboundupperboundofsubrange}{Upper bound of subrange}{upper bound of subrange} \\
\livetarg{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
&\livelinki{chap:DWATuselocationmemberlocationforpointertomembertype}{Member location for pointer to member type}{member location for pointer to member type} \\
-\livetarg{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
+\livetarg{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8}
&\livelinki{chap:DWATuseUTF8compilationunitusesutf8strings}{Compilation unit uses UTF-8 strings}{compilation unit uses UTF-8 strings} \\
\livetarg{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
&\livelinki{chap:DWATvariableparameternonconstantparameterflag}{Non-constant parameter flag}{non-constant parameter flag} \\
\label{chap:locationdescriptions}
\textit{Debugging information
\addtoindexx{location description}
-\addtoindexx{location description}
must
-%FIXME: should be 'see also' somehow.
-\addtoindexx{location description|see{DWARF expression}}
+\addtoindexx{location description|see{\textit{also} DWARF expression}}
provide consumers a way to find
the location of program variables, determine the bounds
of dynamic arrays and strings, and possibly to find the
\livelink{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} -50
\begin{myindentpara}{1cm}
-Given a \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} value of ``\livelink{chap:DWOPbreg31}{DW\-\_OP\-\_breg31} 64,''this example
+Given a \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} value of
+``\livelink{chap:DWOPbreg31}{DW\-\_OP\-\_breg31} 64,'' this example
computes the address of a local variable that is -50 bytes from a
logical frame pointer that is computed by adding 64 to the current
stack pointer (register 31).
for objects or types that were not actually declared in the
source of the application. An example is a formal parameter
%FIXME: The word 'this' should be rendered like a variant italic,
-%FIXME: not as a quoted name.
+%FIXME: not as a quoted name. Changed to tt font--RB
entry to represent the
-\addtoindexx{this parameter}
-hidden ``this'' parameter that most C++
+\addtoindexx{\texttt{this} parameter}
+hidden \texttt{this} parameter that most C++
implementations pass as the first argument to non-static member
functions.}
the global section for objects and functions).
\item
-Adopt UTF-8 as the preferred representation of program name strings.
+Adopt \addtoindex{UTF-8} as the preferred representation of program name strings.
\item
Add improved support for optimized code (discontiguous
scopes, end of prologue determination, multiple section
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
The total length of the all of the entries for that set,
not including the length field itself
(see Section \refersec{datarep:locationdescriptions}).
-\item version (uhalf) \\
+\item version (\addtoindex(uhalf)) \\
A version number
\addtoindexx{version number!name lookup table}
\addtoindexx{version number!type lookup table}
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
The total length of all of the
entries for that set, not including the length field itself
(see Section \refersec{datarep:initiallengthvalues}).
-\item version (uhalf) \\
+\item version (\addtoindex(uhalf)) \\
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
\addtoindex{.debug\_types} section of the
compilation unit header referenced by the set.
-\item address\_size (ubyte) \\
+\item address\_size (\addtoindex{ubyte}) \\
The \addtoindex{size of an address}
-in
-\addtoindexx{ubyte}
-bytes on
+in bytes on
\addtoindexx{address\_size}
the target architecture. For
\addtoindexx{address space!segmented}
segmented addressing, this is
the size of the offset portion of the address.
-\item segment\_size (ubyte) \\
-The size of a segment selector
-\addtoindexx{ubyte}
-in
+\item segment\_size (\addtoindex{ubyte}) \\
+The size of a segment selector in
\addtoindexx{segment\_size}
bytes on the target architecture. If the target system uses
a flat address space, this value is 0.
\section{Line Number Information}
\label{chap:linenumberinformation}
\textit{A source\dash level debugger will need to know how to
-%FIXME: the see here is not 'see also'. Fix?
-\addtoindexx{line number information|see{statement list attribute}}
+\addtoindexx{line number information|see{\textit{also} statement list attribute}}
associate locations in the source files with the corresponding
machine instruction addresses in the executable object or
the shared objects used by that executable object. Such an
\begin{tabular}{lp{10cm}}
special opcodes &
-These have a ubyte opcode field and no operands.
+These have a \addtoindex{ubyte} opcode field and no operands.
\textit{Most of the instructions in a
line number program are special opcodes.} \\
standard opcodes &
-These have a ubyte opcode field which may be followed by zero or more
+These have a \addtoindex{ubyte} opcode field which may be followed by zero or more
LEB128 operands (except for
\livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}, see below).
The opcode implies the number of operands and their meanings, but the
These have a multiple byte format. The first byte is zero; the next bytes
are an unsigned LEB128 integer giving the number of bytes in the
instruction itself (does not include the first zero byte or the size). The
-remaining bytes are the instruction itself (which begins with a ubyte
+remaining bytes are the instruction itself (which begins with a \addtoindex{ubyte}
extended opcode). \\
\end{tabular}
\begin{enumerate}[1.]
\item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
The size in bytes of the line number information for this
compilation unit, not including the unit\_length field itself
(see Section \refersec{datarep:initiallengthvalues}).
-\item version (uhalf)
+\item version (\addtoindex(uhalf))
A version number\addtoindexx{version number!line number information}
(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
This number is specific to
8\dash byte unsigned length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item minimum\_instruction\_length (ubyte) \\
+\item minimum\_instruction\_length (\addtoindex{ubyte}) \\
\addtoindexx{minimum\_instruction\_length}
The size in bytes of the smallest target machine
instruction. Line number program opcodes that alter
\addtoindexx{maximum\_operations\_per\_instruction}
maximum\-\_operations\-\_per\-\_instruction in their calculations.
-\item maximum\_operations\_per\_instruction (ubyte) \\
+\item maximum\_operations\_per\_instruction (\addtoindex{ubyte}) \\
The
\addtoindexx{maximum\_operations\_per\_instruction}
maximum number of individual operations that may be
architectures, this field is 1, the \addtoindex{op\_index register} is always
0, and the operation pointer is simply the address register.
-\item default\_is\_stmt (ubyte) \\
+\item default\_is\_stmt (\addtoindex{ubyte}) \\
\addtoindexx{default\_is\_stmt}
The initial value of the \addtoindex{is\_stmt} register.
\addtoindexx{line\_base}
This parameter affects the meaning of the special opcodes. See below.
-\item line\_range (ubyte) \\
+\item line\_range (\addtoindex{ubyte}) \\
\addtoindexx{line\_range}
-This
-\addtoindexx{ubyte}
-parameter affects the meaning of the special opcodes. See below.
+This parameter affects the meaning of the special opcodes. See below.
-\item opcode\_base (ubyte) \\
+\item opcode\_base (\addtoindex{ubyte}) \\
The
\addtoindex{opcode\_base}
-number
-\addtoindexx{ubyte}
- assigned to the first special opcode.
+number assigned to the first special opcode.
\textit{Opcode base is typically one greater than the highest-numbered
\addtoindex{opcode\_base}
that of the highest standard opcode and the first special
opcode (not inclusive) are used for vendor specific extensions.}
-\item standard\_opcode\_lengths (array of ubyte) \\
+\item standard\_opcode\_lengths (array of \addtoindex{ubyte}) \\
\addtoindexx{standard\_opcode\_lengths}
This array specifies the number of LEB128 operands for each
of the standard opcodes. The first element of the array
\subsubsection{Special Opcodes}
\label{chap:specialopcodes}
-Each ubyte special opcode has the following effect on the state machine:
+Each \addtoindex{ubyte} special opcode has the following effect on the state machine:
\begin{enumerate}[1.]
\item \textbf{DW\-\_LNS\-\_fixed\-\_advance\-\_pc} \\
The \livetarg{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc} opcode
-takes a single uhalf (unencoded) operand and adds it to the
+takes a single \addtoindex(uhalf) (unencoded) operand and adds it to the
address register of the state machine and sets the op\_index
register to 0. This is the only standard opcode whose operand
is \textbf{not} a variable length number. It also does
\item CIE\_id (4 or 8 bytes, see Section \refersec{datarep:32bitand64bitdwarfformats}) \\
A constant that is used to distinguish CIEs from FDEs.
-\item version (ubyte) \\
+\item version (\addtoindex{ubyte}) \\
A version number\addtoindexx{version number!call frame information}
(see Section \refersec{datarep:callframeinformation}).
This number is specific to the call frame information
any \addtoindex{.debug\_info} section, the augmentation string always uses
UTF\dash 8 encoding.}
-\item address\_size (ubyte) \\
+\item address\_size (\addtoindex{ubyte}) \\
The size of a target address
\addtoindexx{address\_size}
in this CIE and any FDEs that
-\addtoindexx{ubyte}
use it, in bytes. If a compilation unit exists for this frame,
its address size must match the address size here.
-\item segment\_size (ubyte) \\
-The
-\addtoindexx{segment\_size}
-size
-\addtoindexx{ubyte}
-of a segment selector in this CIE and any FDEs that
+\item segment\_size (\addtoindex{ubyte}) \\
+The \addtoindexx{segment\_size}
+size of a segment selector in this CIE and any FDEs that
use it, in bytes.
\item \addtoindex{code\_alignment\_factor} (unsigned LEB128) \\
that this column might not correspond to an actual machine
register.
-\item initial\_instructions (array of ubyte) \\
+\item initial\_instructions (array of \addtoindex{ubyte}) \\
A sequence of rules that are interpreted to create the initial
setting of each column in the table. The default rule for
all columns before interpretation of the initial instructions
compilation system authoring body may specify an alternate
default value for any or all columns.
-\item padding (array of ubyte) \\
+\item padding (array of \addtoindex{ubyte}) \\
Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions to make the size of this entry
match the length value above.
\end{enumerate}
\addtoindexx{target address}
of bytes of program instructions described by this entry.
-\item instructions (array of ubyte) \\
-A
-\addtoindexx{ubyte}
-sequence of table defining instructions that are described below.
+\item instructions (array of \addtoindex{ubyte}) \\
+A sequence of table defining instructions that are described below.
-\item 6. padding (array of ubyte) \\
+\item 6. padding (array of \addtoindex{ubyte}) \\
Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions
-to make the size of this
-\addtoindexx{ubyte}
-entry match the length value above.
+to make the size of this entry match the length value above.
\end{enumerate}
\subsection{Call Frame Instructions}
current row
\item \textbf{DW\-\_CFA\-\_advance\-\_loc1} \\
-The \livetarg{chap:DWCFAadvanceloc1}{DW\-\_CFA\-\_advance\-\_loc1} instruction takes a single ubyte
+The \livetarg{chap:DWCFAadvanceloc1}{DW\-\_CFA\-\_advance\-\_loc1} instruction takes a single \addtoindex{ubyte}
operand that represents a constant delta. This instruction
is identical to \livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc} except for the encoding
and size of the delta operand.
\item \textbf{DW\-\_CFA\-\_advance\-\_loc2} \\
-The \livetarg{chap:DWCFAadvanceloc2}{DW\-\_CFA\-\_advance\-\_loc2} instruction takes a single uhalf
+The \livetarg{chap:DWCFAadvanceloc2}{DW\-\_CFA\-\_advance\-\_loc2} instruction takes a single
+\addtoindex(uhalf)
operand that represents a constant delta. This instruction
is identical to \livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc} except for the encoding
and size of the delta operand.
\item \textbf{DW\-\_CFA\-\_advance\-\_loc4} \\
-The \livetarg{chap:DWCFAadvanceloc4}{DW\-\_CFA\-\_advance\-\_loc4} instruction takes a single uword
+The \livetarg{chap:DWCFAadvanceloc4}{DW\-\_CFA\-\_advance\-\_loc4} instruction takes a single
+\addtoindex{uword}
operand that represents a constant delta. This instruction
is identical to \livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc} except for the encoding
and size of the delta operand.
\section{Unit Entries}
An object file may contain one or more compilation units,
-of which there are
+of which there are
+\addtoindexx{unit|see {compilation unit, partial unit \textit{or} type unit}}
\addtoindexx{compilation unit}
three kinds:
\addtoindexx{normal compilation unit}
+\addtoindexx{normal compilation unit|see {compilation unit}}
normal compilation units,
partial compilation units and
\addtoindexx{type unit}
\livetarg{chap:DWLANGPascal83}{DW\-\_LANG\-\_Pascal83} & ISO \addtoindex{Pascal}:1983\\
\livetarg{chap:DWLANGPLI}{DW\-\_LANG\-\_PLI} \dag & ANSI \addtoindex{PL/I}:1976\\
\livetarg{chap:DWLANGPython}{DW\-\_LANG\-\_Python} \dag & \addtoindex{Python}\\
-\livetarg{chap:DWLANGUPC}{DW\-\_LANG\-\_UPC} &\addtoindex{Unified Parallel C}\\ \hline
+\livetarg{chap:DWLANGUPC}{DW\-\_LANG\-\_UPC} &\addtoindex{Unified Parallel C}\addtoindexx{UPC}\\ \hline
\dag \ \ Support for these languages is limited.& \\
\end{tabular}
\end{figure}
\hypertarget{chap:DWATuseUTF8compilationunitusesutf8strings}
correctly.
-\item A \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute,
+\item A \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute,
+\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8}
which is a \livelink{chap:flag}{flag} whose
presence indicates that all strings (such as the names of
declared entities in the source program) are represented
\textit{The \addtoindex{C++}
compilation unit specific ``unnamed namespace'' may
\addtoindexx{namespace (C++)!unnamed}
+\addtoindexx{unnamed namespace|see {namespace (C++), unnamed}}
be represented by a namespace entry with no name attribute in
the original namespace declaration entry (and therefore no name
attribute in any namespace extension entry of this namespace).
\textit{A \addtoindex{Fortran} use statement
\addtoindexx{Fortran!use statement}
+\addtoindexx{use statement|see {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
renamed in this way is known in the context of the imported
module entry by the same name as it is declared in the module.
-\textit{A \addtoindex{C++} using directive
-may be represented by an
+\textit{A \addtoindex{C++} using directive
\addtoindexx{namespace (C++)!using directive}
-imported module
+\addtoindexx{using directive|see {namespace (C++), using directive}}
+may be represented by an imported module
\hypertarget{chap:DWATimportnamespaceusingdirective}
entry, with an import attribute referring to the namespace
entry of the appropriate extension of the namespace (which
being imported.
}
-\textit{A \addtoindex{Fortran} use statement
+\textit{A \addtoindex{Fortran} use statement
+\addtoindexx{Fortran!use statement}
with neither a “rename list” nor
an “only list” may be represented by an imported module
entry with an import attribute referring to the module and
}
\textit{A \addtoindex{Fortran} use statement for an entity in a module that is
+\addtoindexx{Fortran!use statement}
itself imported by a use statement without an explicit mention
may be represented by an imported declaration entry that refers
to the original debugging information entry. For example, given
directly to the variable declaration entry for A in module A
because there is no explicit representation for X in module B.
-A similar situation arises for a \addtoindex{C++} using declaration that
-imports an entity in terms of a namespace alias. See
+A similar situation arises for a \addtoindex{C++} using declaration
+\addtoindexx{namespace (C++)!using declaration}
+\addtoindexx{using declaration|see {namespace (C++), using declaration}}
+that imports an entity in terms of a namespace alias. See
Appendix \refersec{app:namespaceexample}
for an example.
If
\hypertarget{chap:DWATstaticlinklocationofuplevelframe}
a
-\addtoindexx{address!uplevel|see{static link attribute}}
+\addtoindexx{address!uplevel|see {static link attribute}}
+\addtoindexx{uplevel address|see {static link attribute}}
subroutine or entry point is nested, it may have a
\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
attribute, whose value is a location
\livetarg{chap:DWATEsignedfixed}{DW\-\_ATE\-\_signed\-\_fixed} & signed fixed\dash point scaled integer \\
\livetarg{chap:DWATEunsignedfixed}{DW\-\_ATE\-\_unsigned\-\_fixed}& unsigned fixed\dash point scaled integer \\
\livetarg{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} & decimal floating\dash point number \\
-\livetarg{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} & Unicode character \\
+\livetarg{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} & \addtoindex{Unicode} character \\
\end{tabular}
\caption{Encoding attribute values}
\label{fig:encodingattributevalues}
floating\dash point representations that have a power\dash of\dash ten
exponent, such as that specified in IEEE 754R.}
-\textit{The \livelink{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} encoding is intended for Unicode string
-encodings (see the Universal Character Set standard,
+\textit{The \livelink{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} encoding is intended for \addtoindex{Unicode}
+string encodings (see the Universal Character Set standard,
ISO/IEC 10646\dash 1:1993). For example, the
\addtoindex{C++} type char16\_t is
represented by a base type entry with a name attribute whose
\addtoindexx{restricted type entry}
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
+\livetarg{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&\addtoindex{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} \\
declarations:}
\begin{alltt}
-const unsigned char * volatile p;
- which represents a volatile pointer to a constant
- character. This is encoded in DWARF as:
+ const unsigned char * volatile p;
+\end{alltt}
+\textit{which represents a volatile pointer to a constant
+character. This is encoded in DWARF as:}
+\begin{alltt}
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}(p) -->
\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type} -->
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} -->
\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} -->
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}(unsigned char)
-
-volatile unsigned char * const restrict p;
- on the other hand, represents a restricted constant
- pointer to a volatile character. This is encoded as:
+\end{alltt}
+\textit{On the other hand}
+\begin{alltt}
+ volatile unsigned char * const restrict p;
+\end{alltt}
+\textit{represents a restricted constant
+pointer to a volatile character. This is encoded as:}
+\begin{alltt}
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}(p) -->
\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type} -->
\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} -->
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} -->
\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type} -->
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}(unsigned char)
-
\end{alltt}
\section{Typedef Entries}
\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location},
which are described in
Section \refersec{chap:dynamictypeproperties}.
-For relevant examples,
-see also
-Appendix \refersec{app:fortran90example}.
+For relevant examples, see also Appendix \refersec{app:fortran90example}.
\section{ Structure, Union, Class and Interface Type Entries}
\label{chap:structureunionclassandinterfacetypeentries}
\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled} attribute,
which is a \livelink{chap:flag}{flag}.
If present, this attribute indicates whether
-this subrange represents a UPC array bound which is scaled
+this subrange represents a \addtoindex{UPC} array bound which is scaled
by the runtime THREADS value (the number of UPC threads in
this execution of the program).
-\textit{This allows the representation of a UPC shared array such as}
+\textit{This allows the representation of a \addtoindex{UPC} shared array such as}
\begin{lstlisting}
int shared foo[34*THREADS][10][20];
\hypertarget{chap:DWATupperboundupperboundofsubrange}
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
+\addtoindexx{lower bound attribute}
+and \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
+\addtoindexx{upper bound attribute} to specify, respectively, the lower
and upper bound values of the subrange. The
\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
attribute
If the lower bound value is missing, the value is assumed to
be a language\dash dependent default constant.
\addtoindexx{lower bound attribute!default}
-The default lower
-bound is 0 for
+The default lower bound is 0 for
\addtoindex{C}, \addtoindex{C++},
\addtoindex{D},
\addtoindex{Java},
\textit{No other default lower bound values are currently defined.}
If the upper bound and count are missing, then the upper bound value is
-\textit{unknown}.
+\textit{unknown}.\addtoindexx{upper bound attribute!default unknown}
If the subrange entry has no type attribute describing the
basis type, the basis type is assumed to be the same as
\addtoindex{pointer to member entry}
a
\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} attribute
+\addtoindexx{use location attribute}
whose value is a
\addtoindex{location description} that computes the
address of the member of the class to which the pointer to