which
\addtoindexx{is optional attribute}
is a \livelink{chap:flag}{flag}, if a
-parameter entry represents an optional parameter.
+parameter entry represents an \addtoindex{optional parameter}.
\item A \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value} attribute
\addtoindexx{default value attribute}
(see \refersec{chap:noncontiguousaddressranges})
the value of this
attribute is the offset in bytes of the beginning of the scope
-for the object from the beginning of the first range list entry
+for the object from the beginning of the first \addtoindex{range list} entry
that is not a base selection entry or an end of list entry.
\item Otherwise, the scope of the object is specified using
-a value of class \livelink{chap:rangelistptr}{rangelistptr}. This value indicates the
-beginning of a range list
+a value of class \livelink{chap:rangelistptr}{rangelistptr}.
+This value indicates the
+beginning of a \addtoindex{range list}
(see \refersec{chap:noncontiguousaddressranges}).
\end{enumerate}
the full declarator for the local x.}
\textit{Due to optimization, the scope of an object may be
-non-contiguous and require use of a range list even when
+non-contiguous and require use of a \addtoindex{range list} even when
the containing scope is contiguous. Conversely, the scope of
-an object may not require its own range list even when the
+an object may not require its own \addtoindex{range list} even when the
containing scope is non\dash contiguous.}
\item A \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute,
\addtoindexx{big-endian encoding|see{endianity attribute}}
specifies
the endianity of the object. The value of
-this attribute specifies an ABI\dash defined byte ordering for
+this attribute specifies an ABI\dash defined
+byte ordering \addtoindexx{ordering attribute} for
the value of the object. If omitted, the default endianity
of data for the given type is assumed. The set of values
and their meaning for this attribute is given in
\item reference \\
There are three types of reference.
-The first type of reference can identify any debugging
+The
+\addtoindexx{reference class}
+first type of reference can identify any debugging
information entry within the containing unit. This type of
reference is an offset from the first byte of the compilation
header for the compilation unit containing the reference. There
\section{Non-continguous Address Ranges}
\label{datarep:noncontiguousaddressranges}
-Each entry in a range list
+Each entry in a \addtoindex{range list}
(see Section \refersec{chap:noncontiguousaddressranges})
is either a
\addtoindexx{base address selection entry!in range list}
-range list entry, a base address selection entry, or an end
+range list entry,
+\addtoindexx{range list}
+a base address selection entry, or an end
of list entry.
-A range list entry consists of two relative addresses. The
+A \addtoindex{range list} entry consists of two relative addresses. The
addresses are the same size as addresses on the target machine.
A base address selection entry and an
consist of two (constant or relocated) addresses. The two
addresses are the same size as addresses on the target machine.
-For a range list to be specified, the base address of the
+For a \addtoindex{range list} to be specified, the base address of the
\addtoindexx{base address selection entry!in range list}
corresponding compilation unit must be defined
(see Section \refersec{chap:normalandpartialcompilationunitentries}).
\subsection{Pascal Example}
\label{app:pascalexample}
-The Pascal source in
+The Pascal \addtoindexx{Pascal example} source in
Figure \refersec{fig:packedrecordexamplesourcefragment}
is used to illustrate the representation of packed unaligned
\addtoindex{bit fields}.
\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("func1")
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
- \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 8\$)
+ \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 8\$) \addtoindexx{object pointer attribute}
! References a formal parameter in this
! member function
...
\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("func2")
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 1\$)
- \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 11\$)
+ \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}(reference to 11\$) \addtoindexx{object pointer attribute}
! References a formal parameter in this
! member function
...
\textit{A base address selection entry and an end of list
entry for a location list are identical to a base address
selection entry and end of list entry, respectively, for a
-range list
+\addtoindex{range list}
(see Section \refersec{chap:noncontiguousaddressranges})
in interpretation
and representation.}
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,
+and indicates the beginning of a \addtoindex{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.
Range lists are contained
in a separate object file section called
\addtoindex{.debug\_ranges}. A
-range list is indicated by a
+\addtoindex{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.
+\addtoindex{.debug\_ranges} section to the beginning of the
+\addtoindex{range list}.
-Each entry in a range list is either a range list entry,
+Each entry in a \addtoindex{range list} is either a
+\addtoindex{range list} entry,
\addtoindexx{base address selection entry!in range list}
a base address selection entry, or an
\addtoindexx{end of list entry!in range list}
end of list entry.
-A range list entry consists of:
+A \addtoindex{range list} entry consists of:
\begin{enumerate}[1]
\item A beginning address offset. This address offset has the size of an address and is relative to
-the applicable base address of the compilation unit referencing this range list. It marks the
+the applicable base address of the compilation unit referencing this
+\addtoindex{range list}.
+It marks the
beginning of an
\addtoindexi{address}{address range!in range list}
range.
\item An ending address offset. This address offset again has the size of an address and is relative
-to the applicable base address of the compilation unit referencing this range list. It marks the
+to the applicable base address of the compilation unit referencing
+this \addtoindex{range list}.
+It marks the
first address past the end of the address range.
The ending address must be greater than or
equal to the beginning address.
-\textit{A range list entry (but not a base address selection or end of list entry) whose beginning and
+\textit{A \addtoindex{range list} entry (but not a base address selection or end of list entry) whose beginning and
ending addresses are equal has no effect because the size of the range covered by such an
entry is zero.}
\end{enumerate}
-The applicable base address of a range list entry is determined
+The applicable base address of a \addtoindex{range list} entry
+is determined
by the closest preceding base address selection entry (see
below) in the same range list. If there is no such selection
entry, then the applicable base address defaults to the base
address selection entry is needed.}
Address range entries in
-a range list may not overlap. There is no requirement that
+a \addtoindex{range list} may not overlap.
+There is no requirement that
the entries be ordered in any particular way.
A base address selection entry consists of:
affects only the list in which it is contained.}
-The end of any given range list is marked by an
+The end of any given \addtoindex{range list} is marked by an
\addtoindexx{end of list entry!in range list}
end of list entry,
which consists of a 0 for the beginning address
-offset and a 0 for the ending address offset. A range list
+offset and a 0 for the ending address offset.
+A \addtoindex{range list}
containing only an end of list entry describes an empty scope
(which contains no instructions).
\textit{A base address selection entry and an
\addtoindexx{end of list entry!in range list}
end of list entry for
-a range list are identical to a base address selection entry
+a \addtoindex{range list}
+are identical to a base address selection entry
and end of list entry, respectively, for a location list
(see Section \refersec{chap:locationlists})
in interpretation and representation.}
instruction. The index of the first operation is 0. For non\dash VLIW
architectures, this register will always be 0.
-The address and op\_index registers, taken together, form an operation
+The address and \addtoindex{op\_index} registers,
+taken together, form an operation
pointer that can reference any individual operation with the instruction
stream. \\
\begin{tabular}{lp{8cm}}
address & 0 \\
-op\_index & 0 \\
+\addtoindex{op\_index} & 0 \\
file & 1 \\
line & 1 \\
column & 0 \\
\addtoindexx{minimum\_instruction\_length}
The size in bytes of the smallest target machine
instruction. Line number program opcodes that alter
-the address and op\_index registers use this and
+the address and \addtoindex{op\_index} registers use this and
\addtoindexx{maximum\_operations\_per\_instruction}
maximum\-\_operations\-\_per\-\_instruction in their calculations.
\addtoindex{minimum\_instruction\_length}
in their calculations.
For non-VLIW
-architectures, this field is 1, the op\_index register is always
+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) \\
As stated before, the goal of a line number program is to build
a matrix representing one compilation unit, which may have
produced multiple sequences of target machine instructions.
-Within a sequence, addresses (operation pointers) may only
+Within a sequence, addresses
+\addtoindexx{operation pointer}
+(operation pointers) may only
increase. (Line numbers may decrease in cases of pipeline
scheduling or other optimization.)
\item Add a signed integer to the line register.
-\item Modify the operation pointer by incrementing the
+\item Modify the \addtoindex{operation pointer} by incrementing the
address and \addtoindex{op\_index} registers as described below.
\item Append a row to the matrix using the current values
All of the special opcodes do those same seven things; they
differ from one another only in what values they add to the
-line, address and op\_index registers.
+line, address and \addtoindex{op\_index} registers.
\textit{Instead of assigning a fixed meaning to each special opcode,
A special opcode value is chosen based on the amount that needs
-to be added to the line, address and op\_index registers. The
+to be added to the line, address and \addtoindex{op\_index} registers.
+The
maximum line increment for a special opcode is the value
of the
\addtoindexx{line\_base}
line range - 1).
If the desired line increment is greater than the maximum
line increment, a standard opcode must be used instead of a
-special opcode. The operation advance represents the number
-of operations to skip when advancing the operation pointer.
+special opcode. The \addtoindex{operation advance} represents the number
+of operations to skip when advancing the \addtoindex{operation pointer}.
The special opcode is then calculated using the following formula:
the opcode itself to give the \textit{adjusted opcode}.
The \textit{operation advance}
is the result of the adjusted opcode divided by the
-line\_range. The new address and op\_index values are given by
+line\_range. The new address and \addtoindex{op\_index} values
+are given by
\begin{myindentpara}{1cm}
\textit{adjusted opcode} = opcode – opcode\_base
address +
\addtoindex{minimum\_instruction\_length} *
-((\addtoindex{op\_index} + operation advance) /
+((\addtoindex{op\_index} + \addtoindex{operation advance}) /
\addtoindex{maximum\_operations\_per\_instruction})
\end{myindentpara}
new op\_index =
\begin{myindentpara}{1cm}
-(op\_index + operation advance) \% \addtoindex{maximum\_operations\_per\_instruction}
+(\addtoindex{op\_index} + \addtoindex{operation advance}) \%
+\addtoindex{maximum\_operations\_per\_instruction}
\end{myindentpara}
\end{myindentpara}
within the range [-3, 8] and (because of the limited number
of opcodes available) when the difference between addresses
is within the range [0, 20], but not all line advances are
-available for the maximum operation advance (see below).}
+available for the maximum \addtoindex{operation advance} (see below).}
\textit{The opcode mapping would be:}
% FIXME: This should be a tabular or the like, not a verbatim
\item \textbf{DW\-\_LNS\-\_advance\-\_pc} \\
The \livetarg{chap:DWLNSadvancepc}{DW\-\_LNS\-\_advance\-\_pc} opcode takes a single unsigned LEB128
-operand as the operation advance and modifies the address
+operand as the \addtoindex{operation advance} and modifies the address
and \addtoindex{op\_index} registers as specified in
Section \refersec{chap:specialopcodes}.
\section{Unit Entries}
An object file may contain one or more compilation units,
-of which there are three kinds: normal compilation units,
-partial compilation units and type units. A partial compilation
-unit is related to one or more other compilation units that
-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
+of which there are
+\addtoindexx{compilation unit}
+three kinds:
+\addtoindexx{normal compilation unit}
+normal compilation units,
+partial compilation units and type units. A
+\addtoindex{partial compilation unit}
+is related to one or more other compilation units that
+import it. A
+\addtoindex{type unit} represents
+a single complete type in a
+separate unit. Either a normal compilation unit or a
+\addtoindex{partial compilation unit}
+may be logically incorporated into another
compilation unit using an
\addtoindex{imported unit entry}.
\subsection[Normal and Partial CU Entries]{Normal and Partial Compilation Unit Entries}
\label{chap:normalandpartialcompilationunitentries}
-A \addtoindex{normal compilation unit} is represented by a
-debugging information entry with the
-tag \livetarg{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}. A partial
-compilation unit is represented by a debugging information
+A \addtoindex{normal compilation unit} is represented by a debugging
+information entry with the
+tag \livetarg{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}.
+A \addtoindex{partial compilation unit} is represented by a debugging information
entry with the
tag \livetarg{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}.
\textit{A normal compilation unit typically represents the text and
data contributed to an executable by a single relocatable
object file. It may be derived from several source files,
-including pre\dash processed ``include files.'' A partial
-compilation unit typically represents a part of the text
+including pre\dash processed ``include files.''
+A \addtoindex{partial compilation unit} typically represents a part of the text
and data of a relocatable object file, in a manner that can
potentially be shared with the results of other compilations
to save space. It may be derived from an ``include file'',
\addtoindexx{location list}
location lists (see Section
\refersec{chap:locationlists}) and range lists
+\addtoindexx{range list}
(see Section \refersec{chap:noncontiguousaddressranges}).
\item A \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
of the compilation command that produced this compilation
unit in whatever form makes sense for the host system.
-\item A \livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} attribute whose value is a null\dash
+\item A \livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} attribute
+\addtoindexx{producer attribute}
+whose value is a null\dash
terminated string containing information about the compiler
\hypertarget{chap:DWATproducercompileridentification}
that produced the compilation unit. The actual contents of
appear in the source program. The debugger should be sensitive
to the case of identifier names when doing identifier lookups.
-\livetarg{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case} means that the producer of the debugging
+\livetarg{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case} means that the
+producer of the debugging
information for this compilation unit converted all source
names to upper case. The values of the name attributes may not
reflect the names as they appear in the source program. The
debugger should convert all names to upper case when doing
lookups.
-\livetarg{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case} means that the producer of the debugging
+\livetarg{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case} means that
+the producer of the debugging
information for this compilation unit converted all source
names to lower case. The values of the name attributes may not
reflect the names as they appear in the source program. The
of the program. If more than one compilation unit contains
this \nolink{flag}, any one of them may contain the starting function.
-\textit{\addtoindex{Fortran} has a PROGRAM statement which is used
+\textit{\addtoindex{Fortran} has a \addtoindex{PROGRAM statement}
+which is used
to specify and provide a user\dash specified name for the main
subroutine of a program.
\addtoindex{C} uses the name “main” to identify
If
\hypertarget{chap:DWATprioritymodulepriority}
-the module has been assigned a priority, it may have a
-\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority} attribute. The value of this attribute is a
+the module has been assigned a priority, it may have
+\addtoindexx{priority attribute}
+a
+\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority} attribute.
+The value of this attribute is a
reference to another debugging information entry describing
a variable with a constant value. The value of this variable
is the actual constant value of the module’s priority,
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
+\addtoindexx{renamed declaration|see{imported declaration entry}}
that is renamed in the importing context may be represented
by an imported declaration entry with a name attribute that
specifies the new local name.
\nolink{flag},
any one of them may be the starting subroutine of the program.
-\textit{\addtoindex{Fortran} has a PROGRAM statement which is used to specify
+\textit{\addtoindex{Fortran} has a \addtoindex{PROGRAM statement}
+which is used to specify
and provide a user\dash supplied name for the main subroutine of
a program.
}
}
A subroutine entry declared with a function prototype style
-declaration may have a
+declaration may have
+\addtoindexx{prototyped attribute}
+a
\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
a \livelink{chap:flag}{flag}.
A
\hypertarget{chap:DWATpurepurepropertyofasubroutine}
-subprogram entry may have a
+subprogram entry may have
+\addtoindexx{pure attrubyte}
+a
\livelink{chap:DWATpure}{DW\-\_AT\-\_pure} attribute, which is
a \livelink{chap:flag}{flag}.
The attribute indicates whether the subroutine was
If
\hypertarget{chap:DWATtypetypeofsubroutinereturn}
-the subroutine or entry point is a function that returns a
+the subroutine or entry point
+\addtoindexx{return type of subroutine}
+is a function that returns a
value, then its debugging information entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
attribute to denote the type returned by that function.
A
\hypertarget{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}
-subroutine or entry point entry may have a
+subroutine or entry point entry may have
+\addtoindexx{return address attribute}
+a
\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
attribute, whose value is a location description. The location
calculated is the place where the return address for the
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges},
\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc},
\livelink{chap:DWATlocation}{DW\-\_AT\-\_location},
-\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}, \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}, and
+\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}, \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope},
+and
\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment!and abstract instance}
attributes
\addtoindexx{location attribute!and abstract instance}
always omitted within the abstract instance tree for an
outer subroutine.
-\item The concrete instance tree for any inlined or out-of-line
+\item The concrete instance tree for any inlined or
+\addtoindexx{out-of-line instance}
+out-of-line
+\addtoindexx{out-of-line-instance|see{concrete out-of-line-instance}}
expansion of the nested subroutine is described within a
concrete instance tree for the outer subroutine according
to the rules in
describing a base type, a user-defined type or another type
modifier.
-A modified type entry describing a pointer or reference
-type (using \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+A modified type entry describing a
+\addtoindexx{pointer type entry}
+pointer or \addtoindex{reference 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.
When multiple type modifiers are chained together to modify
a base or user-defined type, the tree ordering reflects the
-semantics of the applicable lanuage rather than the textual
-order in the source presentation.
+semantics of the
+\addtoindexx{reference type entry, lvalue|see{reference type entry}}
+applicable lanuage
+\addtoindexx{reference type entry, rvalue|see{rvalue reference type entry}}
+rather
+\addtoindexx{parameter|see{macro formal parameter list}}
+than
+\addtoindexx{parameter|see{\textit{this} parameter}}
+the
+\addtoindexx{parameter|see{variable parameter attribute}}
+textual
+\addtoindexx{parameter|see{optional parameter attribute}}
+order
+\addtoindexx{parameter|see{unspecified parameters entry}}
+in
+\addtoindexx{parameter|see{template value parameter entry}}
+the
+\addtoindexx{parameter|see{template type parameter entry}}
+source
+\addtoindexx{parameter|see{formal parameter entry}}
+presentation.
\begin{figure}[here]
\centering
Name&Meaning\\ \hline
\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
+\livetarg{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}& \addtoindex{Pascal} or Ada packed type\addtoindexx{packed type entry}
\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
+\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} \\
+\addtoindexx{reference type entry} \\
+being modified
+\addtoindexx{reference qualified type entry} \\
+\livetarg{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}& \addtoindex{C}
+restrict
+\addtoindexx{restricted type entry} \\
+qualified type
+\addtoindexx{restrict qualified type} \\
\livetarg{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} & C++
-rvalue reference to an object of the type being modified
+\addtoindexx{rvalue reference type entry}
+rvalue
+\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
\addtoindexx{shared qualified type entry} \\
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}
+function, then that entry has
+\addtoindexx{object pointer attribute}
+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
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
+member function, the entry does not have
+\addtoindexx{object pointer attribute}
+a
\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
attribute.
A
\hypertarget{chap:DWATprototypedsubroutineprototype}
subroutine entry declared with a function prototype style
-declaration may have a
+declaration may have
+\addtoindexx{prototyped attribute}
+a
\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
a \livelink{chap:flag}{flag}.
\section{Set Type Entries}
\label{chap:settypeentries}
-\textit{Pascal provides the concept of a “set,” which represents
+\textit{\addtoindex{Pascal} provides the concept of a “set,” which represents
a group of values of ordinal type.}
A set is represented by a debugging information entry with
\section{Pointer to Member Type Entries}
\label{chap:pointertomembertypeentries}
-\textit{In \addtoindex{C++}, a pointer to a data or function member of a class or
+\textit{In \addtoindex{C++}, a
+pointer to a data or function member of a class or
structure is a unique type.}
A debugging information entry representing the type of an
object that is a pointer to a structure or class member has
the tag \livetarg{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}.
-If the pointer to member type has a name, the pointer to
-member entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
+If the \addtoindex{pointer to member type} has a name, the
+\addtoindexx{pointer to member type entry}
+pointer to member entry has a
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
\addtoindexx{name attribute}
whose value is a
null\dash terminated string containing the type name as it appears
in the source program.
-The pointer to member entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to
+The \addtoindex{pointer to member} entry
+has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to
describe the type of the class or structure member to which
objects of this type may point.
-The pointer to member entry also
+The \addtoindex{pointer to member} entry also
\hypertarget{chap:DWATcontainingtypecontainingtypeofpointertomembertype}
has a
\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
The
\hypertarget{chap:DWATuselocationmemberlocationforpointertomembertype}
-pointer to member entry has a
+has
+\addtoindex{pointer to member entry}
+a
\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location} attribute
whose value is a
\addtoindex{location description} that computes the
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
+given \addtoindex{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
\addtoindexi{pushed}{address!implicit push for member operator}
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
+is the value of the \addtoindex{pointer to member} object
itself. The second value
\addtoindexi{pushed}{address!implicit push for member operator}
is the base address of the
object.*mbr_ptr
\end{lstlisting}
% FIXME: object and mbr\_ptr should be distinguished from italic. See DW4.
-\textit{where mbr\_ptr has some pointer to member type, a debugger should:}
+\textit{where mbr\_ptr has some \addtoindex{pointer to member type}, a debugger should:}
\textit{1. Push the value of mbr\_ptr onto the DWARF expression stack.}
\section{File Type Entries}
\label{chap:filetypeentries}
-\textit{Some languages, such as Pascal, provide a data type to represent
+\textit{Some languages, such as \addtoindex{Pascal},
+provide a data type to represent
files.}
A file type is represented by a debugging information entry