to a constant actual parameter of a call that is inlined.
\item A \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute if the scope of an
+\hypertarget{chap:DWATstartscopeobjectdeclaration}
object is smaller than (that is, is a subset of the addresses
of) the scope most closely enclosing the object. There are
two cases:
\livetarg{chap:DWATordering}{DW\-\_AT\-\_ordering}
&\livelink{chap:DWATorderingarrayrowcolumnordering}{Array row/column ordering} \\
\livetarg{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
-&Picture string for numeric string type\\
+&\livelink{chap:DWATpicturestringpicturestringfornumericstringtype}{Picture string for numeric string type} \\
\livetarg{chap:DWATpriority}{DW\-\_AT\-\_priority}
-&Module priority\\
+&\livelink{chap:DWATprioritymodulepriority}{Module priority}\\
\livetarg{chap:DWATproducer}{DW\-\_AT\-\_producer}
-&Compiler identification\\
+&\livelink{chap:DWATproducercompileridentification}{Compiler identification}\\
\livetarg{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
-&Subroutine prototype\\
+&\livelink{chap:DWATprototypedsubroutineprototype}{Subroutine prototype}\\
\livetarg{chap:DWATpure}{DW\-\_AT\-\_pure}
-&Pure property of a subroutine\\
+&\livelink{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine} \\
\livetarg{chap:DWATranges}{DW\-\_AT\-\_ranges}
-&Non\dash contiguous range of code addresses\\
+&\livelink{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses} \\
\livetarg{chap:DWATrecursive}{DW\-\_AT\-\_recursive}
-&Recursive property of a subroutine\\
+&\livelink{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine} \\
\livetarg{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
-&Subroutine return address save location\\
+&\livelink{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location} \\
\livetarg{chap:DWATsegment}{DW\-\_AT\-\_segment}
-&Addressing information\\
+&\livelink{chap:DWATsegmentaddressinginformation}{Addressing information} \\
\livetarg{chap:DWATsibling}{DW\-\_AT\-\_sibling}
-&Debugging information entry relationship\\
+&\livelink{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship} \\
\livetarg{chap:DWATsmall}{DW\-\_AT\-\_small}
-&Scale factor for fixed\dash point type\\
+&\livelink{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type} \\
\livetarg{chap:DWATsignature}{DW\-\_AT\-\_signature}
-&Type signature\\
+&\livelink{chap:DWATsignaturetypesignature}{Type signature}\\
\livetarg{chap:DWATspecification}{DW\-\_AT\-\_specification}
-&Incomplete, non\dash defining, or separate declaration
-corresponding to a declaration\\
+&\livelink{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{Incomplete, non-defining, or separate declaration corresponding to a declaration } \\
\livetarg{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
-&Object declaration\\
-&Type declaration\\
+&\livelink{chap:DWATstartscopeobjectdeclaration}{Object declaration}\\
+&\livelink{chap:DWATstartscopetypedeclaration}{Type declaration}\\
\livetarg{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
-&Location of uplevel frame\\
+&\livelink{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame} \\
\livetarg{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}
-&Line number information for unit\\
+&\livelink{chap:DWATstmtlistlinenumberinformationforunit}{Line number information for unit}\\
\livetarg{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
-&String length of string type\\
+&\livelink{chap:DWATstringlengthstringlengthofstringtype}{String length of string type} \\
\livetarg{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
&UPC array bound THREADS scale factor\\
\livetarg{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}
A chain of sibling entries is terminated by a null entry.
In cases where a producer of debugging information feels that
+\hypertarget{chap:DWATsiblingdebugginginformationentryrelationship}
it will be important for consumers of that information to
quickly scan chains of sibling entries, while ignoring the
children of individual siblings, that producer may attach a
address space.}
Any debugging information entry that contains a description
+\hypertarget{chap:DWATsegmentaddressinginformation}
of the location of an object or subroutine may have
-a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, whose value is a location
+a
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
+attribute, whose value is a location
description. The description evaluates to the segment selector
of the item being described. If the entry containing the
\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}, \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc},
value of the variable x passed to the function g is the value of the
global variable x rather than of the local version.}
+\subsection{Non-Defining Declarations}
+A debugging information entry that represents a non-defining or otherwise incomplete
+declaration of a program entity has a
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
+attribute, which is a
+\livelink{chap:flag}{flag}.
+
+\subsection{Declarations Completing Non-Defining Declarations}
+A debugging information entry that represents a
+\hypertarget{chap:DWATspecificationincompletenondefiningorseparatedeclaration}
+declaration that completes another (earlier)
+non\dash defining declaration may have a
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
+attribute whose value is a reference to
+the debugging information entry representing the non-defining declaration. A debugging
+information entry with a
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
+attribute does not need to duplicate information
+provided by the debugging information entry referenced by that specification attribute.
+
+It is not the case that all attributes of the debugging information entry referenced by a
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute
+apply to the referring debugging information entry.
+
+\textit{For example,
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} and
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
+clearly cannot apply to a referring
+entry.}
+
+
\section{Declaration Coordinates}
\label{chap:declarationcoordinates}
Any debugging information entry describing an entity that has
a machine code address or range of machine code addresses,
which includes compilation units, module initialization,
+\hypertarget{chap:DWATrangesnoncontiguousrangeofcodeaddresses}
subroutines, ordinary \livelink{chap:lexicalblock}{block},
try/catch \nolink{blocks} (see Section\refersec{chap:tryandcatchblockentries}),
labels and
\end{figure}
\item A \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} attribute whose value is a section
+\hypertarget{chap:DWATstmtlistlinenumberinformationforunit}
offset to the line number information for this compilation
unit. This information is placed in a separate object file
section from the debugging information entries themselves. The
\item A \livelink{chap:DWATproducer}{DW\-\_AT\-\_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
the string will be specific to each producer, but should
begin with the name of the compiler vendor or some other
the first executable instruction of that initialization code
(see Section \refersec{chap:entryaddress}).
-If the module has been assigned a priority, it may have a
+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
reference to another debugging information entry describing
a variable with a constant value. The value of this variable
or entry point was declared with the ``elemental'' keyword
or property.
-A subprogram entry may have a \livelink{chap:DWATpure}{DW\-\_AT\-\_pure} attribute, which is
+A
+\hypertarget{chap:DWATpurepurepropertyofasubroutine}
+subprogram entry may have a
+\livelink{chap:DWATpure}{DW\-\_AT\-\_pure} attribute, which is
a \livelink{chap:flag}{flag}.
The attribute indicates whether the subroutine was
declared with the ``pure'' keyword or property.
-A subprogram entry may have a \livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive} attribute, which
+A
+\hypertarget{chap:DWATrecursiverecursivepropertyofasubroutine}
+subprogram entry may have a
+\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive} attribute, which
is a \livelink{chap:flag}{flag}.
The attribute indicates whether the subroutine
or entry point was declared with the ``recursive'' keyword
\subsection{Low-Level Information}
\label{chap:lowlevelinformation}
-A subroutine or entry point entry may have a \livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
+A
+\hypertarget{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}
+subroutine or entry point entry may have 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
subroutine or entry point is stored.
\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} and \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attributes allow
debuggers to support this same kind of referencing.}
-If a subroutine or entry point is nested, it may have a
-\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link} attribute, whose value is a location
+If
+\hypertarget{chap:DWATstaticlinklocationofuplevelframe}
+a subroutine or entry point is nested, it may have a
+\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
+attribute, whose value is a location
description that computes the frame base of the relevant
instance of the subroutine that immediately encloses the
subroutine or entry point.
user\dash defined types.
If the scope of the declaration of a named type begins after
+\hypertarget{chap:DWATstartscopetypedeclaration}
the low pc value for the scope most closely enclosing the
-declaration, the declaration may have a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
+declaration, the declaration may have a
+\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
attribute as described for objects in
Section \refersec{chap:dataobjectentries}.
is larger than the digit count, this implies additional zero
digits on the left are not stored in an instance of the type.
-The \livelink{chap:DWATEedited}{DW\-\_ATE\-\_edited} base type is used to represent an edited
+The \livelink{chap:DWATEedited}{DW\-\_ATE\-\_edited}
+base
+\hypertarget{chap:DWATpicturestringpicturestringfornumericstringtype}
+type is used to represent an edited
numeric or alphanumeric data type. It is used in combination
with an \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string} attribute whose value is a
null\dash terminated string containing the target\dash dependent picture
larger than the number of bits, this implies additional zero
bits on the left are not stored in an instance of the type.
-For a data type with a non\dash decimal and non\dash binary scale factor,
-the fixed binary type entry has a \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute which
-references a \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The scale factor value
+For
+\hypertarget{chap:DWATsmallscalefactorforfixedpointtype}
+a data type with a non\dash decimal and non\dash binary scale factor,
+the fixed binary type entry has a
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute which
+references a
+\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The scale factor value
is interpreted in accordance with the value defined by the
\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The value represented is the product
of the integer value in memory and the associated constant
a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute.
If the complete declaration of a type has been placed in
+\hypertarget{chap:DWATsignaturetypesignature}
a separate type unit
(see Section \refersec{chap:separatetypeunitentries}),
an incomplete
declared using function prototype style declarations and
those declared using non\dash prototype declarations.
-A subroutine entry declared with a function prototype style
-declaration may have a \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
+A
+\hypertarget{chap:DWATprototypedsubroutineprototype}
+subroutine entry declared with a function prototype style
+declaration may have a
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped} attribute, which is
a \livelink{chap:flag}{flag}.
Each debugging information entry owned by a subroutine
a null\dash terminated string containing the string type name as
it appears in the source program.
-The string type entry may have a \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length} attribute
+The
+\hypertarget{chap:DWATstringlengthstringlengthofstringtype}
+string type entry may have a
+\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length} attribute
whose value is a location description yielding the location
where the length of the string is stored in the program. The
string type entry may also have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute