Complete work on live links, cleanup some indexing and redo pagination.
authorRon Brender <ron.brender@gmail.com>
Fri, 10 May 2013 20:59:24 +0000 (16:59 -0400)
committerRon Brender <ron.brender@gmail.com>
Fri, 10 May 2013 20:59:24 +0000 (16:59 -0400)
This completes all review processing.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 87bffc0..02a70ef 100644 (file)
@@ -19,7 +19,7 @@ In the following table,
 \livetarg{chap:DECL} 
 means include all three of the
 \addtoindex{declaration coordinates} 
-\addtoindexx{declaration coordinates|see {DW\_AT\_decl\_file,DW\_AT\_decl\_line, DW\_AT\_decl\_column}}
+\addtoindexx{declaration coordinates|see {DW\_AT\_decl\_file, DW\_AT\_decl\_line, DW\_AT\_decl\_column}}
 \livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column},
 \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}, and 
 \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line}.
index 229399d..a9fa0e6 100644 (file)
@@ -765,6 +765,7 @@ and any number of these additional sections:
 \dotdebugtypes{}
 \end{alltt}
 
+\needlines{5}
 As discussed in the previous section 
 (Section \refersec{app:usingcompilationunits}), 
 many
@@ -1346,6 +1347,7 @@ relocatable objects. The linker wants to keep only one of a
 given entity. The DWARF description, and everything else for
 this function, should be reduced to just a single copy.
 
+\needlines{5}
 For each such code group (function template in this example)
 the compiler assigns a name for the group which will match
 all other instantiations of this function but match nothing
index 8798997..bcc6356 100644 (file)
@@ -41,7 +41,7 @@ zero byte.
 \hypertarget{chap:DWATexternalexternalvariable}
 which 
 \addtoindexx{external attribute}
-is a \livelink{chap:flag}{flag}, if the name
+is a \livelink{chap:classflag}{flag}, if the name
 of a variable is visible outside of its enclosing compilation
 unit.  
 
@@ -53,7 +53,7 @@ are represented by non-external variable entries.
 
 \item A \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} attribute, 
 \addtoindexx{declaration attribute}
-which is a \livelink{chap:flag}{flag} that
+which is a \livelink{chap:classflag}{flag} that
 indicates whether this entry represents a non-defining
 declaration of an object.
 
@@ -89,7 +89,7 @@ constant or formal parameter.
 \item If the variable entry represents the defining declaration
 for a C++ static data member of a structure, class or union,
 the entry has a \livelink{chap:DWATspecification}{DW\_AT\_specification} attribute, whose value is a
-reference to the debugging information entry representing the
+\livelink{chap:class:reference}{reference} to the debugging information entry representing the
 declaration of this data member. The referenced entry has the
 tag \livelink{chap:DWTAGmember}{DW\_TAG\_member} and will be a child of some class, structure
 or union type entry.
@@ -115,7 +115,7 @@ represent.
 
 \item A \livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}
 attribute\addtoindexx{variable parameter attribute}, 
-which is a \livelink{chap:flag}{flag},
+which is a \livelink{chap:classflag}{flag},
 if a formal parameter entry represents a parameter whose
 value in the calling function may be modified by the callee.
 The absence of this attribute implies that the parameter\textquoteright s
@@ -125,7 +125,7 @@ value in the calling function cannot be modified by the callee.
 \hypertarget{chap:DWATisoptionaloptionalparameter}
 which 
 \addtoindexx{is optional attribute}
-is a \livelink{chap:flag}{flag}, if a
+is a \livelink{chap:classflag}{flag}, if a
 parameter entry represents an \addtoindex{optional parameter}.
 
 \item A \livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value} attribute 
@@ -193,7 +193,7 @@ 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}. 
+a value of class \livelink{chap:classrangelistptr}{rangelistptr}. 
 This value indicates the
 beginning of a \addtoindex{range list}
 (see \refersec{chap:noncontiguousaddressranges}).
@@ -273,14 +273,15 @@ for different architectures.
 \item A \livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} attribute, 
 which 
 \hypertarget{chap:DWATconstexprcompiletimeconstantobject}
-is a \livelink{chap:flag}{flag}, if a
+is a \livelink{chap:classflag}{flag}, if a
 variable entry represents a C++ object declared with the
 \texttt{constexpr} specifier. This attribute indicates that the
 variable can be evaluated as a compile\dash time constant.  
 
 \textit{In C++,
 a variable declared with \texttt{constexpr} is implicitly \texttt{const}. Such a
-variable has a \livelink{chap:DWATtype}{DW\_AT\_type} attribute whose value is a reference
+variable has a \livelink{chap:DWATtype}{DW\_AT\_type} attribute whose value is a 
+\livelink{chap:classreference}{reference}
 to a debugging information entry describing a const qualified type.}
 
 \item A \livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} attribute for a 
@@ -352,7 +353,7 @@ Each namelist item entry contains a
 \addtoindexx{namelist item attribute}
 whose 
 \addtoindexx{namelist item entry}
-value is a reference to the debugging
+value is a \livelink{chap:classreference}{reference} to the debugging
 information entry representing the declaration of the item
 whose name appears in the namelist.
 
index de02247..b145868 100644 (file)
@@ -23,7 +23,7 @@ The labels denoting the beginning and end of the reserved
 value range for vendor specific extensions consist of the
 appropriate prefix (DW\_TAG, DW\_AT, DW\_END, DW\_ATE, DW\_OP,
 DW\_LANG, DW\_LNE, DW\_CC or DW\_CFA respectively) followed by
-\livetarg{chap:DWXXXlohiuser}
+\hypertarget{chap:DWXXXlohiuser}{}
 \_lo\_user or \_hi\_user. 
 \textit{For example, for entry tags, the special
 labels are DW\_TAG\_lo\_user and DW\_TAG\_hi\_user.}
@@ -323,7 +323,7 @@ units may share the same table.
 \begin{enumerate}[1. ]
 
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte 
 \addtoindexx{initial length}
 unsigned integer representing the length
@@ -342,7 +342,7 @@ DWARF information for the compilation unit \addtoindexx{version number!compilati
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 The value in this field is 4.
 
-\item \addtoindex{\texttt{debug\_abbrev\_offset}} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+\item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
 A 
 \addtoindexx{section offset!in .debug\_info header}
 4\dash byte or 8\dash byte unsigned offset into the 
@@ -355,7 +355,7 @@ in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 
 \item \texttt{address\_size} (\addtoindex{ubyte}) \\
 A 1\dash byte unsigned integer representing the size in bytes of
-\addtoindexx{\texttt{address\_size}}
+\addttindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
@@ -375,7 +375,7 @@ consists of the following information:
 \begin{enumerate}[1. ]
 
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
@@ -394,7 +394,7 @@ compilation unit\addtoindexx{version number!type unit}
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 The value in this field is 4.
 
-\item \addtoindex{\texttt{debug\_abbrev\_offset}} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+\item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
 A 
 \addtoindexx{section offset!in .debug\_types header}
 4\dash byte or 8\dash byte unsigned offset into the 
@@ -409,7 +409,7 @@ in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 A 1\dash byte unsigned integer representing the size 
 \addtoindexx{size of an address}
 in bytes of
-\addtoindexx{\texttt{address\_size}}
+\addttindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
@@ -419,7 +419,7 @@ offset portion of an address.
 \item \texttt{type\_signature} (8\dash byte unsigned integer) \\
 \addtoindexx{type signature}
 A 
-\addtoindexx{\texttt{type\_signature}}
+\addttindexx{type\_signature}
 64\dash bit unique signature (see Section 
 \refersec{datarep:typesignaturecomputation})
 of the type described in this type
@@ -432,7 +432,7 @@ the primary type contained in this
 
 
 \item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
-\addtoindexx{\texttt{type\_offset}}
+\addttindexx{type\_offset}
 A 4\dash byte or 8\dash byte unsigned offset 
 \addtoindexx{section offset!in .debug\_types header}
 relative to the beginning
@@ -657,10 +657,10 @@ one
 \addtoindexx{loclistptr class}
 class,
 \addtoindexx{lineptr class}
-namely \livelink{chap:lineptr}{lineptr}, 
-\livelink{chap:loclistptr}{loclistptr}, 
-\livelink{chap:macptr}{macptr} or 
-\livelink{chap:rangelistptr}{rangelistptr}; the list
+namely \livelink{chap:classlineptr}{lineptr}, 
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr}; the list
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
@@ -676,10 +676,10 @@ either
 \addtoindexx{loclistptr class}
 class constant \addtoindexx{constant class}
 or one of the classes 
-\livelink{chap:lineptr}{lineptr},
-\livelink{chap:loclistptr}{loclistptr}, 
-\livelink{chap:macptr}{macptr} or 
-\livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
+\livelink{chap:classlineptr}{lineptr},
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr}, depending on context. In
 DWARF V4 
 \livelink{chap:DWFORMdata4}{DW\_FORM\_data4} and 
 \livelink{chap:DWFORMdata8}{DW\_FORM\_data8} are members of class
@@ -691,7 +691,8 @@ their usage for the other classes.}
 Each possible form belongs to one or more of the following classes:
 
 \begin{itemize}
-\item \livelinki{chap:DWATaddressclass}{address}{address class} \\
+\item \livelinki{chap:classaddress}{address}{address class} \\
+\livetarg{datarep:classaddress}{}
 Represented as an object of appropriate size to hold an
 address on the target machine 
 (\livetarg{chap:DWFORMaddr}{DW\_FORM\_addr}). 
@@ -701,7 +702,8 @@ encoded in the compilation unit header
 This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object.
 
-\item \livelink{chap:block}{block} \\
+\item \livelink{chap:classblock}{block} \\
+\livetarg{datarep:classblock}{}
 Blocks come in four forms:
 
 \begin{myindentpara}{1cm}
@@ -714,13 +716,11 @@ A 2\dash byte length followed by 0 to 65,535 contiguous information
 bytes (\livetarg{chap:DWFORMblock2}{DW\_FORM\_block2}).
 \end{myindentpara}
 
-
 \begin{myindentpara}{1cm}
 A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
 information bytes (\livetarg{chap:DWFORMblock4}{DW\_FORM\_block4}).
 \end{myindentpara}
 
-
 \begin{myindentpara}{1cm}
 An unsigned LEB128 length followed by the number of bytes
 specified by the length (\livetarg{chap:DWFORMblock}{DW\_FORM\_block}).
@@ -731,7 +731,8 @@ that follow. The information bytes may contain any mixture
 of relocated (or relocatable) addresses, references to other
 debugging information entries or data bytes.
 
-\item constant \\
+\item \livelinki{chap:classconstant}{constant}{constant class} \\
+\livetarg{datarep:classconstant}{}
 There are six forms of constants. There are fixed length
 constant data forms for one, two, four and eight byte values
 (respectively, 
@@ -767,17 +768,18 @@ unsigned integers respectively, rather than
 \livelink{chap:DWFORMdata}{DW\_FORM\_data}\textless n\textgreater.}
 
 \needlines{4}
-\item \livelink{chap:exprloc}{exprloc} \\
+\item \livelinki{chap:classexprloc}{exprloc}{exprloc class} \\
+\livetarg{datarep:classexprloc}{}
 This is an unsigned LEB128 length followed by the
 number of information bytes specified by the length
 (\livetarg{chap:DWFORMexprloc}{DW\_FORM\_exprloc}). 
-The information bytes contain a DWARF
-expression 
+The information bytes contain a DWARF expression 
 (see Section \refersec{chap:dwarfexpressions}) 
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
-\item \livelink{chap:flag}{flag} \\
+\item \livelinki{chap:classflag}{flag}{flag class} \\
+\livetarg{datarep:classflag}{}
 A flag \addtoindexx{flag class}
 is represented explicitly as a single byte of data
 (\livetarg{chap:DWFORMflag}{DW\_FORM\_flag}) or 
@@ -789,14 +791,14 @@ it indicates the presence of the attribute. In the second
 case, the attribute is implicitly indicated as present, and
 no value is encoded in the debugging information entry itself.
 
-\item \livelink{chap:lineptr}{lineptr} \\
+\item \livelinki{chap:classlineptr}{lineptr}{lineptr class} \\
+\livetarg{datarep:classlineptr}{}
 This is an offset into 
 \addtoindexx{section offset!in class lineptr value}
 the 
 \dotdebugline{} section
 (\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}).
-It consists of an offset from the
-beginning of the 
+It consists of an offset from the beginning of the 
 \dotdebugline{}
 section to the first byte of
 the data making up the line number list for the compilation
@@ -808,7 +810,8 @@ in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item \livelink{chap:loclistptr}{loclistptr} \\
+\item \livelinki{chap:classloclistptr}{loclistptr}{loclistptr class} \\
+\livetarg{datarep:classloclistptr}{}
 This is an offset into the 
 \dotdebugloc{}
 section
@@ -819,8 +822,7 @@ beginning of the
 \dotdebugloc{}
 section to the first byte of
 the data making up the 
-\addtoindex{location list} for the compilation
-unit. 
+\addtoindex{location list} for the compilation unit. 
 It is relocatable in a relocatable object file, and
 relocated in an executable or shared object. In the 
 \thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
@@ -828,7 +830,8 @@ in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item \livelink{chap:macptr}{macptr} \\
+\item \livelinki{chap:classmacptr}{macptr}{macptr class} \\
+\livetarg{datarep:classmacptr}{}
 This is an 
 \addtoindexx{section offset!in class macptr value}
 offset into the 
@@ -846,7 +849,8 @@ in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \needlines{4}
-\item \livelink{chap:rangelistptr}{rangelistptr} \\
+\item \livelinki{chap:classrangelistptr}{rangelistptr}{rangelistptr class} \\
+\livetarg{datarep:classrangelistptr}{}
 This is an 
 \addtoindexx{section offset!in class rangelistptr value}
 offset into the \dotdebugranges{} section
@@ -864,16 +868,17 @@ format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \end{itemize}
 
-\textit{Because classes \livelink{chap:lineptr}{lineptr}, 
-\livelink{chap:loclistptr}{loclistptr}, 
-\livelink{chap:macptr}{macptr} and 
-\livelink{chap:rangelistptr}{rangelistptr}
+\textit{Because classes \livelink{chap:classlineptr}{lineptr}, 
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} and 
+\livelink{chap:classrangelistptr}{rangelistptr}
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
 
 \begin{itemize}
-\item reference \\
+\item \livelinki{chap:classreference}{reference}{reference class} \\
+\livetarg{datarep:classreference}{}
 There are three types of reference.
 
 The 
@@ -951,7 +956,8 @@ units.}
 debugging information entry for that unit, not the preceding
 header.}
 
-\item string \\
+\item \livelinki{chap:classstring}{string}{string class} \\
+\livetarg{datarep:classstring}{}
 A string is a sequence of contiguous non\dash null bytes followed by
 one null byte. 
 \addtoindexx{string class}
@@ -995,9 +1001,9 @@ of
 \addtoindexx{lineptr class}
 the 
 \addtoindexx{macptr class}
-classes \livelink{chap:lineptr}{lineptr},
-\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or 
-\livelink{chap:rangelistptr}{rangelistptr} to point into either the
+classes \livelink{chap:classlineptr}{lineptr},
+\livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr} to point into either the
 \dotdebuginfo{} or \dotdebugstr{} section.
 
 The form encodings are listed in 
@@ -1019,192 +1025,190 @@ Table \refersec{tab:attributeformencodings}.
   \hline
   \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
-\livelink{chap:DWATsibling}{DW\_AT\_sibling}&0x01&reference 
+\livelink{chap:DWATsibling}{DW\_AT\_sibling}&0x01&\livelink{chap:classreference}{reference} 
         \addtoindexx{sibling attribute!encoding} \\
-\livelink{chap:DWATlocation}{DW\_AT\_location}&0x02&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr}\addtoindexx{location attribute!encoding}   \\
-\livelink{chap:DWATname}{DW\_AT\_name}&0x03&string 
+\livelink{chap:DWATlocation}{DW\_AT\_location}&0x02&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr}\addtoindexx{location attribute!encoding}   \\
+\livelink{chap:DWATname}{DW\_AT\_name}&0x03&\livelink{chap:classstring}{string} 
         \addtoindexx{name attribute!encoding} \\
-\livelink{chap:DWATordering}{DW\_AT\_ordering}&0x09&constant 
+\livelink{chap:DWATordering}{DW\_AT\_ordering}&0x09&\livelink{chap:classconstant}{constant} 
         \addtoindexx{ordering attribute!encoding}  \\
-\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{byte size attribute!encoding} \\
-\livelink{chap:DWATbitoffset}{DW\_AT\_bit\_offset}&0x0c&constant
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit offset attribute!encoding}  \\
-\livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}&0x0d&constant
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit size attribute!encoding} \\
-\livelink{chap:DWATstmtlist}{DW\_AT\_stmt\_list}&0x10&\livelink{chap:lineptr}{lineptr} 
+\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}&0x0b&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} \addtoindexx{byte size attribute!encoding} \\
+\livelink{chap:DWATbitoffset}{DW\_AT\_bit\_offset}&0x0c&\livelink{chap:classconstant}{constant}
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit offset attribute!encoding}  \\
+\livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}&0x0d&\livelink{chap:classconstant}{constant}
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit size attribute!encoding} \\
+\livelink{chap:DWATstmtlist}{DW\_AT\_stmt\_list}&0x10&\livelink{chap:classlineptr}{lineptr} 
         \addtoindexx{statement list attribute!encoding} \\
-\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc}&0x11&address 
+\livelink{chap:DWATlowpc}{DW\_AT\_low\_pc}&0x11&\livelink{chap:classaddress}{address} 
         \addtoindexx{low PC attribute!encoding}  \\
-\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc}&0x12&address, constant 
+\livelink{chap:DWAThighpc}{DW\_AT\_high\_pc}&0x12&\livelink{chap:classaddress}{address}, \livelink{chap:classconstant}{constant} 
         \addtoindexx{high PC attribute!encoding}  \\
-\livelink{chap:DWATlanguage}{DW\_AT\_language}&0x13&constant 
+\livelink{chap:DWATlanguage}{DW\_AT\_language}&0x13&\livelink{chap:classconstant}{constant} 
         \addtoindexx{language attribute!encoding}  \\
-\livelink{chap:DWATdiscr}{DW\_AT\_discr}&0x15&reference 
+\livelink{chap:DWATdiscr}{DW\_AT\_discr}&0x15&\livelink{chap:classreference}{reference} 
         \addtoindexx{discriminant attribute!encoding}  \\
-\livelink{chap:DWATdiscrvalue}{DW\_AT\_discr\_value}&0x16&constant 
+\livelink{chap:DWATdiscrvalue}{DW\_AT\_discr\_value}&0x16&\livelink{chap:classconstant}{constant} 
         \addtoindexx{discriminant value attribute!encoding}  \\
-\livelink{chap:DWATvisibility}{DW\_AT\_visibility}&0x17&constant 
+\livelink{chap:DWATvisibility}{DW\_AT\_visibility}&0x17&\livelink{chap:classconstant}{constant} 
         \addtoindexx{visibility attribute!encoding} \\
-\livelink{chap:DWATimport}{DW\_AT\_import}&0x18&reference 
+\livelink{chap:DWATimport}{DW\_AT\_import}&0x18&\livelink{chap:classreference}{reference} 
         \addtoindexx{import attribute!encoding}  \\
-\livelink{chap:DWATstringlength}{DW\_AT\_string\_length}&0x19&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{string length attribute!encoding}  \\
-\livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}&0x1a&reference 
+\livelink{chap:DWATstringlength}{DW\_AT\_string\_length}&0x19&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{string length attribute!encoding}  \\
+\livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}&0x1a&\livelink{chap:classreference}{reference} 
         \addtoindexx{common reference attribute!encoding}  \\
-\livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir}&0x1b&string 
+\livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir}&0x1b&\livelink{chap:classstring}{string} 
         \addtoindexx{compilation directory attribute!encoding}  \\
-\livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}&0x1c&\livelink{chap:block}{block}, constant, string 
+\livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}&0x1c&\livelink{chap:classblock}{block}, \livelink{chap:classconstant}{constant}, \livelink{chap:classstring}{string} 
         \addtoindexx{constant value attribute!encoding} \\
-\livelink{chap:DWATcontainingtype}{DW\_AT\_containing\_type}&0x1d&reference 
+\livelink{chap:DWATcontainingtype}{DW\_AT\_containing\_type}&0x1d&\livelink{chap:classreference}{reference} 
         \addtoindexx{containing type attribute!encoding} \\
-\livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value}&0x1e&reference 
+\livelink{chap:DWATdefaultvalue}{DW\_AT\_default\_value}&0x1e&\livelink{chap:classreference}{reference} 
         \addtoindexx{default value attribute!encoding} \\
-\livelink{chap:DWATinline}{DW\_AT\_inline}&0x20&constant 
+\livelink{chap:DWATinline}{DW\_AT\_inline}&0x20&\livelink{chap:classconstant}{constant} 
         \addtoindexx{inline attribute!encoding}  \\
-\livelink{chap:DWATisoptional}{DW\_AT\_is\_optional}&0x21&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATisoptional}{DW\_AT\_is\_optional}&0x21&\livelink{chap:classflag}{flag} 
         \addtoindexx{is optional attribute!encoding} \\
-\livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}&0x22&constant
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{lower bound attribute!encoding}  \\
-\livelink{chap:DWATproducer}{DW\_AT\_producer}&0x25&string \addtoindexx{producer attribute!encoding}  \\
-\livelink{chap:DWATprototyped}{DW\_AT\_prototyped}&0x27&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}&0x22&\livelink{chap:classconstant}{constant}
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{lower bound attribute!encoding}  \\
+\livelink{chap:DWATproducer}{DW\_AT\_producer}&0x25&\livelink{chap:classstring}{string} \addtoindexx{producer attribute!encoding}  \\
+\livelink{chap:DWATprototyped}{DW\_AT\_prototyped}&0x27&\livelink{chap:classflag}{flag} 
         \addtoindexx{prototyped attribute!encoding}  \\
-\livelink{chap:DWATreturnaddr}{DW\_AT\_return\_addr}&0x2a&\livelink{chap:exprloc}{exprloc},
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{return address attribute!encoding}  \\
+\livelink{chap:DWATreturnaddr}{DW\_AT\_return\_addr}&0x2a&\livelink{chap:classexprloc}{exprloc},
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{return address attribute!encoding}  \\
 % FIXME: lower case , not Constant
-\livelink{chap:DWATstartscope}{DW\_AT\_start\_scope}&0x2c&constant
-        \livelink{chap:rangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding}  \\
-\livelink{chap:DWATbitstride}{DW\_AT\_bit\_stride}&0x2e&constant,
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit stride attribute!encoding}  \\
-\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}&0x2f&constant,
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{upper bound attribute!encoding}  \\
-\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}&0x31&reference 
+\livelink{chap:DWATstartscope}{DW\_AT\_start\_scope}&0x2c&\livelink{chap:classconstant}{constant}
+        \livelink{chap:classrangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding}  \\
+\livelink{chap:DWATbitstride}{DW\_AT\_bit\_stride}&0x2e&\livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit stride attribute!encoding}  \\
+\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}&0x2f&\livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{upper bound attribute!encoding}  \\
+\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}&0x31&\livelink{chap:classreference}{reference} 
         \addtoindexx{abstract origin attribute!encoding}  \\
-\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}&0x32&constant 
+\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}&0x32&\livelink{chap:classconstant}{constant} 
         \addtoindexx{accessibility attribute!encoding}  \\
-\livelink{chap:DWATaddressclass}{DW\_AT\_address\_class}&0x33&constant 
+\livelink{chap:DWATaddressclass}{DW\_AT\_address\_class}&0x33&\livelink{chap:classconstant}{constant} 
         \addtoindexx{address class attribute!encoding}  \\
-\livelink{chap:DWATartificial}{DW\_AT\_artificial}&0x34&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATartificial}{DW\_AT\_artificial}&0x34&\livelink{chap:classflag}{flag} 
         \addtoindexx{artificial attribute!encoding}  \\
-\livelink{chap:DWATbasetypes}{DW\_AT\_base\_types}&0x35&reference 
+\livelink{chap:DWATbasetypes}{DW\_AT\_base\_types}&0x35&\livelink{chap:classreference}{reference} 
         \addtoindexx{base types attribute!encoding}  \\
-\livelink{chap:DWATcallingconvention}{DW\_AT\_calling\_convention}&0x36&constant 
+\livelink{chap:DWATcallingconvention}{DW\_AT\_calling\_convention}&0x36&\livelink{chap:classconstant}{constant} 
         \addtoindexx{calling convention attribute!encoding} \\
-\livelink{chap:DWATcount}{DW\_AT\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference 
+\livelink{chap:DWATcount}{DW\_AT\_count}&0x37&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} 
         \addtoindexx{count attribute!encoding}  \\
-\livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location}&0x38&constant
-        \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} 
+\livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location}&0x38&\livelink{chap:classconstant}{constant}
+        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classloclistptr}{loclistptr} 
         \addtoindexx{data member attribute!encoding}  \\
-\livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}&0x39&constant 
+\livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}&0x39&\livelink{chap:classconstant}{constant} 
         \addtoindexx{declaration column attribute!encoding}  \\
-\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}&0x3a&constant 
+\livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}&0x3a&\livelink{chap:classconstant}{constant} 
         \addtoindexx{declaration file attribute!encoding}  \\
-\livelink{chap:DWATdeclline}{DW\_AT\_decl\_line}&0x3b&constant 
+\livelink{chap:DWATdeclline}{DW\_AT\_decl\_line}&0x3b&\livelink{chap:classconstant}{constant} 
         \addtoindexx{declaration line attribute!encoding}  \\
-\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}&0x3c&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATdeclaration}{DW\_AT\_declaration}&0x3c&\livelink{chap:classflag}{flag} 
         \addtoindexx{declaration attribute!encoding}  \\
-\livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list}&0x3d&\livelink{chap:block}{block} 
+\livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list}&0x3d&\livelink{chap:classblock}{block} 
         \addtoindexx{discriminant list attribute!encoding}  \\
-\livelink{chap:DWATencoding}{DW\_AT\_encoding}&0x3e&constant 
+\livelink{chap:DWATencoding}{DW\_AT\_encoding}&0x3e&\livelink{chap:classconstant}{constant} 
         \addtoindexx{encoding attribute!encoding}  \\
-\livelink{chap:DWATexternal}{DW\_AT\_external}&\xiiif&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATexternal}{DW\_AT\_external}&\xiiif&\livelink{chap:classflag}{flag} 
         \addtoindexx{external attribute!encoding}  \\
-\livelink{chap:DWATframebase}{DW\_AT\_frame\_base}&0x40&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding}  \\
-\livelink{chap:DWATfriend}{DW\_AT\_friend}&0x41&reference 
+\livelink{chap:DWATframebase}{DW\_AT\_frame\_base}&0x40&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding}  \\
+\livelink{chap:DWATfriend}{DW\_AT\_friend}&0x41&\livelink{chap:classreference}{reference} 
         \addtoindexx{friend attribute!encoding}  \\
-\livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}&0x42&constant 
+\livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}&0x42&\livelink{chap:classconstant}{constant} 
         \addtoindexx{identifier case attribute!encoding}  \\
-\livelink{chap:DWATmacroinfo}{DW\_AT\_macro\_info}&0x43&\livelink{chap:macptr}{macptr} 
+\livelink{chap:DWATmacroinfo}{DW\_AT\_macro\_info}&0x43&\livelink{chap:classmacptr}{macptr} 
         \addtoindexx{macro information attribute!encoding}  \\
-\livelink{chap:DWATnamelistitem}{DW\_AT\_namelist\_item}&0x44&reference 
+\livelink{chap:DWATnamelistitem}{DW\_AT\_namelist\_item}&0x44&\livelink{chap:classreference}{reference} 
         \addtoindexx{name list item attribute!encoding}  \\
-\livelink{chap:DWATpriority}{DW\_AT\_priority}&0x45&reference 
+\livelink{chap:DWATpriority}{DW\_AT\_priority}&0x45&\livelink{chap:classreference}{reference} 
         \addtoindexx{priority attribute!encoding}  \\
-\livelink{chap:DWATsegment}{DW\_AT\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{segment attribute!encoding}  \\
-\livelink{chap:DWATspecification}{DW\_AT\_specification}&0x47&reference 
+\livelink{chap:DWATsegment}{DW\_AT\_segment}&0x46&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{segment attribute!encoding}  \\
+\livelink{chap:DWATspecification}{DW\_AT\_specification}&0x47&\livelink{chap:classreference}{reference} 
         \addtoindexx{specification attribute!encoding}  \\
-\livelink{chap:DWATstaticlink}{DW\_AT\_static\_link}&0x48&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{static link attribute!encoding}  \\
-\livelink{chap:DWATtype}{DW\_AT\_type}&0x49&reference 
+\livelink{chap:DWATstaticlink}{DW\_AT\_static\_link}&0x48&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{static link attribute!encoding}  \\
+\livelink{chap:DWATtype}{DW\_AT\_type}&0x49&\livelink{chap:classreference}{reference} 
         \addtoindexx{type attribute!encoding}  \\
-\livelink{chap:DWATuselocation}{DW\_AT\_use\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{location list attribute!encoding}  \\
-\livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}&0x4b&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATuselocation}{DW\_AT\_use\_location}&0x4a&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{location list attribute!encoding}  \\
+\livelink{chap:DWATvariableparameter}{DW\_AT\_variable\_parameter}&0x4b&\livelink{chap:classflag}{flag} 
         \addtoindexx{variable parameter attribute!encoding}  \\
-\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality}&0x4c&constant 
+\livelink{chap:DWATvirtuality}{DW\_AT\_virtuality}&0x4c&\livelink{chap:classconstant}{constant} 
         \addtoindexx{virtuality attribute!encoding}  \\
-\livelink{chap:DWATvtableelemlocation}{DW\_AT\_vtable\_elem\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding}  \\
-
-\livelink{chap:DWATallocated}{DW\_AT\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{allocated attribute!encoding}  \\
-\livelink{chap:DWATassociated}{DW\_AT\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{associated attribute!encoding}  \\
-\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}&0x50&\livelink{chap:exprloc}{exprloc} 
+\livelink{chap:DWATvtableelemlocation}{DW\_AT\_vtable\_elem\_location}&0x4d&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding}  \\
+\livelink{chap:DWATallocated}{DW\_AT\_allocated}&0x4e&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} \addtoindexx{allocated attribute!encoding}  \\
+\livelink{chap:DWATassociated}{DW\_AT\_associated}&0x4f&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} \addtoindexx{associated attribute!encoding}  \\
+\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}&0x50&\livelink{chap:classexprloc}{exprloc} 
         \addtoindexx{data location attribute!encoding}  \\
-\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{byte stride attribute!encoding}  \\
-\livelink{chap:DWATentrypc}{DW\_AT\_entry\_pc}&0x52&address 
+\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}&0x51&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} \addtoindexx{byte stride attribute!encoding}  \\
+\livelink{chap:DWATentrypc}{DW\_AT\_entry\_pc}&0x52&\livelink{chap:classaddress}{address} 
         \addtoindexx{entry pc attribute!encoding}  \\
-\livelink{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8}&0x53&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATuseUTF8}{DW\_AT\_use\_UTF8}&0x53&\livelink{chap:classflag}{flag} 
         \addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8}  \\
-\livelink{chap:DWATextension}{DW\_AT\_extension}&0x54&reference 
+\livelink{chap:DWATextension}{DW\_AT\_extension}&0x54&\livelink{chap:classreference}{reference} 
         \addtoindexx{extension attribute!encoding}  \\
-\livelink{chap:DWATranges}{DW\_AT\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr} 
+\livelink{chap:DWATranges}{DW\_AT\_ranges}&0x55&\livelink{chap:classrangelistptr}{rangelistptr} 
         \addtoindexx{ranges attribute!encoding}  \\
-\livelink{chap:DWATtrampoline}{DW\_AT\_trampoline}&0x56&address, \livelink{chap:flag}{flag}, 
-        reference, string \addtoindexx{trampoline attribute!encoding}  \\
-\livelink{chap:DWATcallcolumn}{DW\_AT\_call\_column}&0x57&constant 
+\livelink{chap:DWATtrampoline}{DW\_AT\_trampoline}&0x56&\livelink{chap:classaddress}{address}, \livelink{chap:classflag}{flag}, 
+        \livelink{chap:classreference}{reference}, \livelink{chap:classstring}{string} \addtoindexx{trampoline attribute!encoding}  \\
+\livelink{chap:DWATcallcolumn}{DW\_AT\_call\_column}&0x57&\livelink{chap:classconstant}{constant} 
         \addtoindexx{call column attribute!encoding}  \\
-\livelink{chap:DWATcallfile}{DW\_AT\_call\_file}&0x58&constant 
+\livelink{chap:DWATcallfile}{DW\_AT\_call\_file}&0x58&\livelink{chap:classconstant}{constant} 
         \addtoindexx{call file attribute!encoding}  \\
-\livelink{chap:DWATcallline}{DW\_AT\_call\_line}&0x59&constant 
+\livelink{chap:DWATcallline}{DW\_AT\_call\_line}&0x59&\livelink{chap:classconstant}{constant} 
         \addtoindexx{call line attribute!encoding}  \\
-\livelink{chap:DWATdescription}{DW\_AT\_description}&0x5a&string 
+\livelink{chap:DWATdescription}{DW\_AT\_description}&0x5a&\livelink{chap:classstring}{string} 
         \addtoindexx{description attribute!encoding}  \\
-\livelink{chap:DWATbinaryscale}{DW\_AT\_binary\_scale}&0x5b&constant 
+\livelink{chap:DWATbinaryscale}{DW\_AT\_binary\_scale}&0x5b&\livelink{chap:classconstant}{constant} 
         \addtoindexx{binary scale attribute!encoding}  \\
-\livelink{chap:DWATdecimalscale}{DW\_AT\_decimal\_scale}&0x5c&constant 
+\livelink{chap:DWATdecimalscale}{DW\_AT\_decimal\_scale}&0x5c&\livelink{chap:classconstant}{constant} 
         \addtoindexx{decimal scale attribute!encoding}  \\
-\livelink{chap:DWATsmall}{DW\_AT\_small} &0x5d&reference 
+\livelink{chap:DWATsmall}{DW\_AT\_small} &0x5d&\livelink{chap:classreference}{reference} 
         \addtoindexx{small attribute!encoding}  \\
-\livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign}&0x5e&constant 
+\livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign}&0x5e&\livelink{chap:classconstant}{constant} 
         \addtoindexx{decimal scale attribute!encoding}  \\
-\livelink{chap:DWATdigitcount}{DW\_AT\_digit\_count}&0x5f&constant 
+\livelink{chap:DWATdigitcount}{DW\_AT\_digit\_count}&0x5f&\livelink{chap:classconstant}{constant} 
         \addtoindexx{digit count attribute!encoding}  \\
-\livelink{chap:DWATpicturestring}{DW\_AT\_picture\_string}&0x60&string 
+\livelink{chap:DWATpicturestring}{DW\_AT\_picture\_string}&0x60&\livelink{chap:classstring}{string} 
         \addtoindexx{picture string attribute!encoding}  \\
-\livelink{chap:DWATmutable}{DW\_AT\_mutable}&0x61&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATmutable}{DW\_AT\_mutable}&0x61&\livelink{chap:classflag}{flag} 
         \addtoindexx{mutable attribute!encoding}  \\
-
-\livelink{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled}&0x62&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled}&0x62&\livelink{chap:classflag}{flag} 
         \addtoindexx{thread scaled attribute!encoding}  \\
-\livelink{chap:DWATexplicit}{DW\_AT\_explicit}&0x63&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATexplicit}{DW\_AT\_explicit}&0x63&\livelink{chap:classflag}{flag} 
         \addtoindexx{explicit attribute!encoding}  \\
-\livelink{chap:DWATobjectpointer}{DW\_AT\_object\_pointer}&0x64&reference 
+\livelink{chap:DWATobjectpointer}{DW\_AT\_object\_pointer}&0x64&\livelink{chap:classreference}{reference} 
         \addtoindexx{object pointer attribute!encoding}  \\
-\livelink{chap:DWATendianity}{DW\_AT\_endianity}&0x65&constant 
+\livelink{chap:DWATendianity}{DW\_AT\_endianity}&0x65&\livelink{chap:classconstant}{constant} 
         \addtoindexx{endianity attribute!encoding}  \\
-\livelink{chap:DWATelemental}{DW\_AT\_elemental}&0x66&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATelemental}{DW\_AT\_elemental}&0x66&\livelink{chap:classflag}{flag} 
         \addtoindexx{elemental attribute!encoding}  \\
-\livelink{chap:DWATpure}{DW\_AT\_pure}&0x67&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATpure}{DW\_AT\_pure}&0x67&\livelink{chap:classflag}{flag} 
         \addtoindexx{pure attribute!encoding}  \\
-\livelink{chap:DWATrecursive}{DW\_AT\_recursive}&0x68&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATrecursive}{DW\_AT\_recursive}&0x68&\livelink{chap:classflag}{flag} 
         \addtoindexx{recursive attribute!encoding}  \\
-\livelink{chap:DWATsignature}{DW\_AT\_signature} \ddag &0x69&reference 
+\livelink{chap:DWATsignature}{DW\_AT\_signature} \ddag &0x69&\livelink{chap:classreference}{reference} 
         \addtoindexx{signature attribute!encoding}  \\ 
-\livelink{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram} \ddag &0x6a&\livelink{chap:classflag}{flag} 
         \addtoindexx{main subprogram attribute!encoding}  \\
-\livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset} \ddag &0x6b&constant 
+\livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset} \ddag &0x6b&\livelink{chap:classconstant}{constant} 
         \addtoindexx{data bit offset attribute!encoding}  \\
-\livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} \ddag &0x6c&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} \ddag &0x6c&\livelink{chap:classflag}{flag} 
         \addtoindexx{constant expression attribute!encoding}  \\
-\livelink{chap:DWATenumclass}{DW\_AT\_enum\_class} \ddag &0x6d&\livelink{chap:flag}{flag} 
+\livelink{chap:DWATenumclass}{DW\_AT\_enum\_class} \ddag &0x6d&\livelink{chap:classflag}{flag} 
         \addtoindexx{enumeration class attribute!encoding}  \\
-\livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} \ddag &0x6e&string 
+\livelink{chap:DWATlinkagename}{DW\_AT\_linkage\_name} \ddag &0x6e&\livelink{chap:classstring}{string} 
         \addtoindexx{linkage name attribute!encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_lo\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_hi\_user}&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
@@ -1225,31 +1229,31 @@ Table \refersec{tab:attributeformencodings}.
   \hline
   \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
-\livelink{chap:DWFORMaddr}{DW\_FORM\_addr}&0x01&address  \\
-\livelink{chap:DWFORMblock2}{DW\_FORM\_block2}&0x03&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMblock4}{DW\_FORM\_block4}&0x04&\livelink{chap:block}{block}  \\
-\livelink{chap:DWFORMdata2}{DW\_FORM\_data2}&0x05&constant \\
-\livelink{chap:DWFORMdata4}{DW\_FORM\_data4}&0x06&constant \\
-\livelink{chap:DWFORMdata8}{DW\_FORM\_data8}&0x07&constant \\
-\livelink{chap:DWFORMstring}{DW\_FORM\_string}&0x08&string \\
-\livelink{chap:DWFORMblock}{DW\_FORM\_block}&0x09&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMblock1}{DW\_FORM\_block1}&0x0a&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMdata1}{DW\_FORM\_data1}&0x0b&constant \\
-\livelink{chap:DWFORMflag}{DW\_FORM\_flag}&0x0c&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWFORMsdata}{DW\_FORM\_sdata}&0x0d&constant    \\
-\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}&0x0e&string         \\
-\livelink{chap:DWFORMudata}{DW\_FORM\_udata}&0x0f&constant         \\
-\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr}&0x10&reference         \\
-\livelink{chap:DWFORMref1}{DW\_FORM\_ref1}&0x11&reference          \\
-\livelink{chap:DWFORMref2}{DW\_FORM\_ref2}&0x12&reference         \\
-\livelink{chap:DWFORMref4}{DW\_FORM\_ref4}&0x13&reference         \\
-\livelink{chap:DWFORMref8}{DW\_FORM\_ref8}&0x14&reference \\
-\livelink{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata}&0x15&reference  \\
+\livelink{chap:DWFORMaddr}{DW\_FORM\_addr}&0x01&\livelink{chap:classaddress}{address}  \\
+\livelink{chap:DWFORMblock2}{DW\_FORM\_block2}&0x03&\livelink{chap:classblock}{block} \\
+\livelink{chap:DWFORMblock4}{DW\_FORM\_block4}&0x04&\livelink{chap:classblock}{block}  \\
+\livelink{chap:DWFORMdata2}{DW\_FORM\_data2}&0x05&\livelink{chap:classconstant}{constant} \\
+\livelink{chap:DWFORMdata4}{DW\_FORM\_data4}&0x06&\livelink{chap:classconstant}{constant} \\
+\livelink{chap:DWFORMdata8}{DW\_FORM\_data8}&0x07&\livelink{chap:classconstant}{constant} \\
+\livelink{chap:DWFORMstring}{DW\_FORM\_string}&0x08&\livelink{chap:classstring}{string} \\
+\livelink{chap:DWFORMblock}{DW\_FORM\_block}&0x09&\livelink{chap:classblock}{block} \\
+\livelink{chap:DWFORMblock1}{DW\_FORM\_block1}&0x0a&\livelink{chap:classblock}{block} \\
+\livelink{chap:DWFORMdata1}{DW\_FORM\_data1}&0x0b&\livelink{chap:classconstant}{constant} \\
+\livelink{chap:DWFORMflag}{DW\_FORM\_flag}&0x0c&\livelink{chap:classflag}{flag} \\
+\livelink{chap:DWFORMsdata}{DW\_FORM\_sdata}&0x0d&\livelink{chap:classconstant}{constant}    \\
+\livelink{chap:DWFORMstrp}{DW\_FORM\_strp}&0x0e&\livelink{chap:classstring}{string}         \\
+\livelink{chap:DWFORMudata}{DW\_FORM\_udata}&0x0f&\livelink{chap:classconstant}{constant}         \\
+\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr}&0x10&\livelink{chap:classreference}{reference}         \\
+\livelink{chap:DWFORMref1}{DW\_FORM\_ref1}&0x11&\livelink{chap:classreference}{reference}          \\
+\livelink{chap:DWFORMref2}{DW\_FORM\_ref2}&0x12&\livelink{chap:classreference}{reference}         \\
+\livelink{chap:DWFORMref4}{DW\_FORM\_ref4}&0x13&\livelink{chap:classreference}{reference}         \\
+\livelink{chap:DWFORMref8}{DW\_FORM\_ref8}&0x14&\livelink{chap:classreference}{reference} \\
+\livelink{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata}&0x15&\livelink{chap:classreference}{reference}  \\
 \livelink{chap:DWFORMindirect}{DW\_FORM\_indirect}&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset} \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
-\livelink{chap:DWFORMexprloc}{DW\_FORM\_exprloc} \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
-\livelink{chap:DWFORMflagpresent}{DW\_FORM\_flag\_present} \ddag &0x19&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8} \ddag &0x20&reference \\
+\livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset} \ddag &0x17&\livelink{chap:classlineptr}{lineptr}, \livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr}, \livelink{chap:classrangelistptr}{rangelistptr} \\
+\livelink{chap:DWFORMexprloc}{DW\_FORM\_exprloc} \ddag &0x18&\livelink{chap:classexprloc}{exprloc} \\
+\livelink{chap:DWFORMflagpresent}{DW\_FORM\_flag\_present} \ddag &0x19&\livelink{chap:classflag}{flag} \\
+\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8} \ddag &0x20&\livelink{chap:classreference}{reference} \\
  
 \end{longtable}
 \end{centering}
@@ -1515,6 +1519,7 @@ that contains a DWARF location description. The length
 specifies the number of bytes in that block. The two offsets
 are the same size as an address on the target machine.
 
+\needlines{5}
 A base address selection entry and an 
 \addtoindexx{end of list entry!in location list}
 end of list entry each
@@ -1574,7 +1579,7 @@ Table \refersec{tab:basetypeencodingvalues}
 \end{longtable}
 \end{centering}
 
-
+\needlines{4}
 The encodings of the constants used in the 
 \livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign} attribute 
 are given in 
@@ -1932,8 +1937,8 @@ Table \refersec{tab:discriminantdescriptorencodings}.
   \hline
 \endlastfoot
 
-\livetarg{chap:DWDSClabel}{DW\_DSC\_label}&0x00 \\
-\livetarg{chap:DWDSCrange}{DW\_DSC\_range}&0x01 \\
+\livelink{chap:DWDSClabel}{DW\_DSC\_label}&0x00 \\
+\livelink{chap:DWDSCrange}{DW\_DSC\_range}&0x01 \\
 
 \end{longtable}
 \end{centering}
@@ -1949,7 +1954,7 @@ with a header consisting of:
 \begin{enumerate}[1. ]
 
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
@@ -2018,7 +2023,7 @@ section begins with a header containing:
 % these tables.
 
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{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
index 3f2d37f..e20fd11 100644 (file)
@@ -113,7 +113,7 @@ offset of a debugging information entry in the
 
 %f
 \item \dotdebuginfo{} \\
-An attribute value of class \livelink{chap:loclistptr}{loclistptr} 
+An attribute value of class \livelink{chap:classloclistptr}{loclistptr} 
 (specifically form
 \livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}) 
 is an offset within the \dotdebugloc{} 
@@ -122,7 +122,7 @@ section of a
 
 %g
 \item \dotdebuginfo{} \\
-An attribute value of class \livelink{chap:rangelistptr}{rangelistptr} 
+An attribute value of class \livelink{chap:classrangelistptr}{rangelistptr} 
 (specifically form
 \livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}) 
 is an offset within the \dotdebugranges{} section of
@@ -131,7 +131,7 @@ a range list.
 %h
 \item \dotdebuginfo{} \\
 An attribute value of class 
-\livelink{chap:macptr}{macptr} (specifically form
+\livelink{chap:classmacptr}{macptr} (specifically form
 \livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}) is an 
 offset within the 
 \dotdebugmacinfo{} section
@@ -140,7 +140,7 @@ of the beginning of the macro information for the referencing unit.
 %i
 \item \dotdebuginfo{} \\
 An attribute value of class 
-\livelink{chap:lineptr}{lineptr} (specifically form
+\livelink{chap:classlineptr}{lineptr} (specifically form
 \livelink{chap:DWFORMsecoffset}{DW\_FORM\_sec\_offset}) 
 is an offset in the 
 \dotdebugline{} section of the
index 6a4f884..d74ace9 100644 (file)
@@ -3,7 +3,7 @@
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
-\newcommand{\docdate}{May 9, 2013 \hspace{1cm}(***\textbf{DRAFT}***)}
+\newcommand{\docdate}{May 10, 2013 \hspace{1cm}(***\textbf{DRAFT}***)}
 %
 \usepackage[T1]{fontenc}
 \usepackage{palatino}
@@ -126,10 +126,16 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \newcommand{\nolink}[1]{#1}
 \newcommand{\noindex}[1]{#1}
 
-% For index entries.
+% For index entries. The tt-variant of each pair is designed to
+% allow a word to appear in tt font in the main test and the index
+% but to collate in the index in its non-tt order. (LaTex normally
+% sorts all tt words before all non-tt words.)
 \newcommand{\addtoindex}[1]{#1\index{#1}}
+\newcommand{\addttindex}[1]{\texttt{#1}\index{#1@\texttt{#1}}}
 \newcommand{\addtoindexi}[2]{#1\index{#2}}
+\newcommand{\addttindexi}[2]{\texttt{#1}\index{#2@\texttt{#2}}}
 \newcommand{\addtoindexx}[1]{\index{#1}}
+\newcommand{\addttindexx}[1]{\index{#1@\texttt{#1}}}
 
 % Quote commands that avoid need for inline UTF-8 in these sources
 \newcommand{\doublequote}[1]{\textquotedblleft #1\textquotedblright}
index 2d74561..f5f1b38 100644 (file)
@@ -91,7 +91,7 @@ described in Sections 3, 4 and 5.
 \livelink{chap:DWTAGvariant}{DW\_TAG\_variant},
 \livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part},
 \livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type},
-\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt},
+\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}
 }
 \simplerule[6in]
 \end{table}
@@ -108,7 +108,7 @@ this section and not necessarily mentioned in all
 contexts where they may be appropriate. 
 Examples include 
 \livelink{chap:DWATartificial}{DW\_AT\_artificial}, 
-the \livelink{chap:DWATdeclfilefilecontainingsourcedeclaration}{declaration coordinates}, and 
+the \livelink{chap:declarationcoordinates}{declaration coordinates}, and 
 \livelink{chap:DWATdescription}{DW\_AT\_description}, 
 among others.}
 
@@ -382,52 +382,94 @@ actually declared in the source}{objects or types that are not actually declared
 &\livelinki{chap:DWATvtableelemlocationvirtualfunctiontablevtableslot}{Virtual function vtable slot}{virtual function vtable slot}\\
 \end{longtable}
 
+\addtoindexx{address|see {\textit{also} address class}}
+\addtoindexx{block|see {\textit{also} block class}}
+\addtoindexx{constant|see {\textit{also} constant class}}
+\addtoindexx{exprloc|see {\textit{also} exprloc class}}
+\addtoindexx{flag|see {\textit{also} flag class}}
+\addtoindexx{lineptr|see {\textit{also} lineptr class}}
+\addtoindexx{loclistptr|see {\textit{also} loclistptr class}}
+\addtoindexx{macptr|see {\textit{also} macptr class}}
+\addtoindexx{rangelistptr|see {\textit{also} rangelistptr class}}
+\addtoindexx{reference|see {\textit{also} reference class}}
+\addtoindexx{string|see {\textit{also} string class}}
+\addtoindexx{class of attribute value!address|see {address class}}
+\addtoindexx{class of attribute value!block|see {block class}}
+\addtoindexx{class of attribute value!constant|see {constant class}}
+\addtoindexx{class of attribute value!exprloc|see {exprloc class}}
+\addtoindexx{class of attribute value!flag|see {flag class}}
+\addtoindexx{class of attribute value!lineptr|see {lineptr class}}
+\addtoindexx{class of attribute value!loclistptr|see {loclistptr class}}
+\addtoindexx{class of attribute value!macptr|see {macptr class}}
+\addtoindexx{class of attribute value!rangelistptr|see {rangelistptr class}}
+\addtoindexx{class of attribute value!reference|see {reference class}}
+\addtoindexx{class of attribute value!string|see {string class}}
+
 \begin{table}[here]
-\caption{Classes of Attribute value}
+\caption{Classes of attribute value}
 \label{tab:classesofattributevalue}
 \centering
-% Attribute Class entries need a ref to definition point.
 \setlength{\extrarowheight}{0.1cm}
 
 \begin{tabular}{l|p{11cm}} \hline
 Attribute Class & General Use and Encoding \\ \hline
-\livetargi{chap:address}{address}{address class}
+\hypertarget{chap:classaddress}{}
+\livelinki{datarep:classaddress}{address}{address class}
 &Refers to some location in the address space of the described program.
- \\ 
-\livetargi{chap:block}{block}{block class}
+\\
+
+\hypertarget{chap:classblock}{}
+\livelinki{datarep:classblock}{block}{block class}
 & An arbitrary number of uninterpreted bytes of data.
- \\
-\livetargi{chap:constant}{constant}{constant class}
+\\
+\hypertarget{chap:classconstant}{}
+\livelinki{datarep:classconstant}{constant}{constant class}
 &One, two, four or eight bytes of uninterpreted data, or data
 encoded in the variable length format known as LEB128 
 (see Section \refersec{datarep:variablelengthdata}).
 
 \textit{Most constant values are integers of one kind or
 another (codes, offsets, counts, and so on); these are
-sometimes called ``integer constants'' for emphasis.}
+sometimes called \doublequote{integer constants} for emphasis.}
 \addtoindexx{integer constant}
-\addtoindexx{constant class!integer} \\
+\addtoindexx{constant class!integer}
+\\
 
-\livetargi{chap:exprloc}{exprloc}{exprloc class}
+\hypertarget{chap:classexprloc}{}
+\livelinki{datarep:classexprloc}{exprloc}{exprloc class}
 &A DWARF expression or location description.
 \\
-\livetargi{chap:flag}{flag}{flag class}
+
+\hypertarget{chap:classflag}{}
+\livelinki{datarep:classflag}{flag}{flag class}
 &A small constant that indicates the presence or absence of an attribute.
 \\
-\livetargi{chap:lineptr}{lineptr}{lineptr class}
+
+\hypertarget{chap:classlineptr}{}
+\livelinki{datarep:classlineptr}{lineptr}{lineptr class}
 &Refers to a location in the DWARF section that holds line number information.
 \\
-\livetargi{chap:loclistptr}{loclistptr}{loclistptr class}
+
+\hypertarget{chap:classloclistptr}{}
+\livelinki{datarep:classloclistptr}{loclistptr}{loclistptr class}
 &Refers to a location in the DWARF section that holds location lists, which
 describe objects whose location can change during their lifetime.
 \\
-\livetargi{chap:macptr}{macptr}{macptr class}
+
+\hypertarget{chap:classmacptr}{}
+\livelinki{datarep:classmacptr}{macptr}{macptr class}
 & Refers to a location in the DWARF section that holds macro definition
- information.  \\
-\livetargi{chap:rangelistptr}{rangelistptr}{rangelistptr class}
-& Refers to a location in the DWARF section that holds non\dash contiguous address ranges.  \\
+ information.
+\\
 
-\livetargi{chap:reference}{reference}{reference class}
+\hypertarget{chap:classrangelistptr}{}
+\livelinki{datarep:classrangelistptr}{rangelistptr}{rangelistptr class}
+& Refers to a location in the DWARF section that holds non\dash contiguous address ranges.
+\\
+
+\hypertarget{chap:classreference}{}
+\livelinki{datarep:classreference}{reference}{reference class}
 & Refers to one of the debugging information
 entries that describe the program.  There are three types of
 reference. The first is an offset relative to the beginning
@@ -439,14 +481,17 @@ the unit containing the reference. The third type of reference
 is an indirect reference to a 
 \addtoindexx{type signature}
 type definition using a 64\dash bit signature 
-for that type.  \\
+for that type.
+\\
 
-\livetargi{chap:string}{string}{string class}
+\hypertarget{chap:classstring}{}
+\livelinki{datarep:classstring}{string}{string class}
 & A null\dash terminated sequence of zero or more
 (non\dash null) bytes. Data in this class are generally
 printable strings. Strings may be represented directly in
 the debugging information entry or as an offset in a separate
-string table. \\
+string table.
+\\
 \hline
 \end{tabular}
 \end{table}
@@ -603,7 +648,7 @@ The \livetarg{chap:DWOPlit}{DW\_OP\_lit}\textit{n} operations encode the unsigne
 from 0 through 31, inclusive.
 
 \itembfnl{\livetarg{chap:DWOPaddr}{DW\_OP\_addr}}
-The \livelink{chap:DWOPaddr}{DW\_OP\_addr} operation has a single operand that encodes
+The \livetarg{chap:DWOPaddr}{DW\_OP\_addr} operation has a single operand that encodes
 a machine address and whose size is the \addtoindex{size of an address}
 on the target machine.
 
@@ -1124,9 +1169,9 @@ The two forms are distinguished in a context sensitive
 manner. As the value of an attribute, a location description
 is encoded using 
 \addtoindexx{exprloc class}
-class \livelink{chap:exprloc}{exprloc}  
+class \livelink{chap:classexprloc}{exprloc}  
 and a location list is encoded
-using class \livelink{chap:loclistptr}{loclistptr}
+using class \livelink{chap:classloclistptr}{loclistptr}
 (which 
 \addtoindex{loclistptr}
 serves as an offset into a
@@ -1460,6 +1505,7 @@ list do not collectively cover the entire range over which the
 object in question is defined, it is assumed that the object is
 not available for the portion of the range that is not covered.
 
+\needlines{5}
 A base 
 \addtoindexi{address}{address selection|see{base address selection}}
 selection 
@@ -1597,7 +1643,7 @@ 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. Changed to tt font--RB
 entry to represent the 
-\addtoindexx{\texttt{this} parameter}
+\texttt{this} parameter\index{this parameter@\texttt{this} parameter}
 hidden \texttt{this} parameter that most C++
 implementations pass as the first argument to non-static member
 functions.}  
@@ -1609,7 +1655,7 @@ a compiler and not explicitly declared by the source program
 \hypertarget{chap:DWATartificialobjectsortypesthat}
 may have a 
 \livelink{chap:DWATartificial}{DW\_AT\_artificial} attribute, 
-which is a \livelink{chap:flag}{flag}.
+which is a \livelink{chap:classflag}{flag}.
 
 \section{Segmented Addresses}
 \label{chap:segmentedaddresses}
@@ -1742,7 +1788,7 @@ of a program entity has
 a 
 \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} 
 attribute, which is a 
-\livelink{chap:flag}{flag}.
+\livelink{chap:classflag}{flag}.
 
 \subsection{Declarations Completing Non-Defining Declarations}
 A debugging information entry that represents a 
@@ -1750,7 +1796,7 @@ A debugging information entry that represents a
 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
+attribute whose value is a \livelink{chap:classreference}{reference} to
 the debugging information entry representing the non-defining declaration. A debugging
 information entry with a 
 \livelink{chap:DWATspecification}{DW\_AT\_specification} 
@@ -1777,9 +1823,8 @@ entry.}
 
 \section{Declaration Coordinates}
 \label{chap:declarationcoordinates}
-\textit{It is 
-\addtoindexx{declaration coordinates}
-sometimes useful in a debugger to be able to associate
+\livetargi{chap:declarationcoordinates}{}{declaration coordinates}
+\textit{It is sometimes useful in a debugger to be able to associate
 a declaration with its occurrence in the program source.}
 
 Any debugging information 
@@ -1800,10 +1845,11 @@ have
 \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}, 
 \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} and 
 \livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column}
-attributes each of whose value is an unsigned integer constant.
+attributes each of whose value is an unsigned
+\livelink{chap:classconstant}{integer constant}.
 
 The value of 
-\addtoindex{declaration file attribute}
+\addtoindexx{declaration file attribute}
 the 
 \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file}
 attribute 
@@ -1817,14 +1863,14 @@ The value 0 indicates that no source file
 has been specified.
 
 The value of 
-\addtoindex{declaration line attribute}
+\addtoindexx{declaration line attribute}
 the \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} attribute represents
 the source line number at which the first character of
 the identifier of the declared object appears. The value 0
 indicates that no source line has been specified.
 
 The value of 
-\addtoindex{declaration column attribute}
+\addtoindexx{declaration column attribute}
 the \livelink{chap:DWATdeclcolumn}{DW\_AT\_decl\_column} attribute represents
 the source column number at which the first character of
 the identifier of the declared object appears. The value 0
@@ -1843,7 +1889,8 @@ that has been given a name may have a
 \livelink{chap:DWATname}{DW\_AT\_name} attribute,
 whose 
 \addtoindexx{name attribute}
-value is a string representing the name as it appears in
+value is a \livelink{chap:classstring}{string} 
+representing the name as it appears in
 the source program. A debugging information entry containing
 no name attribute, or containing a name attribute whose value
 consists of a name containing a single null byte, represents
@@ -1904,6 +1951,7 @@ is called by a \livelink{chap:DWOPcall2}{DW\_OP\_call2},
 DWARF expression operator 
 (see Section \refersec{chap:controlflowoperations}).
 
+\needlines{5}
 \section{Code Addresses and Ranges}
 \label{chap:codeaddressesandranges}
 Any debugging information entry describing an entity that has
@@ -1992,13 +2040,13 @@ 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 
 \addtoindexx{ranges attribute}
-whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
+whose value is of class \livelink{chap:classrangelistptr}{rangelistptr}
 and indicates the beginning of a \addtoindex{range list}.
 Similarly,
 a \livelink{chap:DWATstartscope}{DW\_AT\_start\_scope} attribute 
 \addtoindexx{start scope attribute}
 may have a value of class
-\livelink{chap:rangelistptr}{rangelistptr} for the same reason.  
+\livelink{chap:classrangelistptr}{rangelistptr} for the same reason.  
 
 Range lists are contained
 in a separate object file section called 
@@ -2059,6 +2107,7 @@ a \addtoindex{range list} may not overlap.
 There is no requirement that
 the entries be ordered in any particular way.
 
+\needlines{5}
 A base address selection entry consists of:
 \begin{enumerate}[1. ]
 \item The value of the largest representable address offset (for example, \wffffffff when the size of
@@ -2123,14 +2172,14 @@ computed dynamically during execution.
 The value of these
 attributes is determined based on the class as follows:
 \begin{itemize}
-\item For a \livelink{chap:constant}{constant}, the value of the constant is the value of
+\item For a \livelink{chap:classconstant}{constant}, the value of the constant is the value of
 the attribute.
 
-\item For a \livelink{chap:reference}{reference}, the
-value is a reference to another
+\item For a \livelink{chap:classreference}{reference}, the
+value is a \livelink{chap:classreference}{reference} to another
 entity which specifies the value of the attribute.
 
-\item For an \livelink{chap:exprloc}{exprloc}, the value is interpreted as a 
+\item For an \livelink{chap:classexprloc}{exprloc}, the value is interpreted as a 
 DWARF expression; 
 evaluation of the expression yields the value of
 the attribute.
@@ -2189,17 +2238,19 @@ assigned, or the like.}
 \label{chap:byteandbitsizes}
 % Some trouble here with hbox full, so we try optional word breaks.
 Many debugging information entries allow either a
-\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} attribute or a \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size} attribute,
-whose integer constant value 
+\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} attribute or a 
+\livelink{chap:DWATbitsize}{DW\_AT\_bit\_size} attribute,
+whose \livelink{chap:classconstant}{integer constant} value 
 (see Section \refersec{chap:staticanddynamicvaluesofattributes}) 
 specifies an
 amount of storage. The value of the \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} attribute
 is interpreted in bytes and the value of the \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}
 attribute is interpreted in bits.  
 
-Similarly, the integer
-constant value of a \livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride} attribute is interpreted
-in bytes and the integer constant value of a \livelink{chap:DWATbitstride}{DW\_AT\_bit\_stride}
+Similarly, the \livelink{chap:classconstant}{integer constant}
+value of a \livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride} attribute is interpreted
+in bytes and the \livelink{chap:classconstant}{integer constant} value of a 
+\livelink{chap:DWATbitstride}{DW\_AT\_bit\_stride}
 attribute is interpreted in bits.
 
 \section{Linkage Names}
index d68db43..26a4bf9 100644 (file)
@@ -161,7 +161,7 @@ a single compilation unit.
 Each set begins with a header containing five values:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{unit\_length}
 The total length of all of the
 entries for that set, not including the length field itself
 (see Section \refersec{datarep:initiallengthvalues}).
@@ -341,59 +341,59 @@ registers:
 The program\dash counter value corresponding to a machine instruction
 generated by the compiler. \\
 
-\addtoindex{\texttt{op\_index}} &
+\addttindex{op\_index} &
 An unsigned integer representing the index of an operation within a VLIW
 instruction. The index of the first operation is 0. For non\dash VLIW
 architectures, this register will always be 0.
 
-The \texttt{address} and \addtoindex{\texttt{op\_index}} registers,
+The \texttt{address} and \addttindex{op\_index} registers,
 taken together, form an operation
 pointer that can reference any individual operation within the instruction
 stream. \\
 
 
-\addtoindex{\texttt{file}} &
+\addttindex{file} &
 An unsigned integer indicating the identity of the source file
 corresponding to a machine instruction. \\
 
-\addtoindex{\texttt{line}} &
+\addttindex{line} &
 An unsigned integer indicating a source line number. Lines are numbered
 beginning at 1. The compiler may emit the value 0 in cases where an
 instruction cannot be attributed to any source line. \\
 
-\addtoindex{\texttt{column}} &
+\addttindex{column} &
 An unsigned integer indicating a column number within a source line.
 Columns are numbered beginning at 1. The value 0 is reserved to indicate
 that a statement begins at the ``left edge'' of the line. \\
 
-\addtoindex{\texttt{is\_stmt}} &
+\addttindex{is\_stmt} &
 A boolean indicating that the current instruction is a recommended
 breakpoint location. A recommended breakpoint location 
 is intended to \doublequote{represent} a line, a 
 statement and/or a semantically distinct subpart of a
 statement. \\
 
-\addtoindex{\texttt{basic\_block}}  &
+\addttindex{basic\_block}  &
 A boolean indicating that the current instruction is the beginning of a
 \addtoindex{basic block}. \\
 
-\addtoindex{\texttt{end\_sequence}} &
+\addttindex{end\_sequence} &
 A boolean indicating that the current address is that of the first byte after
 the end of a sequence of target machine instructions. 
-\addtoindex{\texttt{end\_sequence}}
+\addttindex{end\_sequence}
 terminates a sequence of lines; therefore other information in the same
 row is not meaningful. \\
 
-\addtoindex{\texttt{prologue\_end}} &
+\addttindex{prologue\_end} &
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an entry breakpoint of a
 function. \\
 
-\addtoindex{\texttt{epilogue\_begin}} &
+\addttindex{epilogue\_begin} &
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an exit breakpoint of a function. \\
 
-\addtoindex{\texttt{isa}} &
+\addttindex{isa} &
 An unsigned integer whose value encodes the applicable
 instruction set architecture for the current instruction.
 
@@ -402,7 +402,7 @@ users of a given architecture. It is recommended that this
 encoding be defined by the ABI authoring committee for each
 architecture.} \\
 
-\addtoindex{\texttt{discriminator}} &
+\addttindex{discriminator} &
 An unsigned integer identifying the block to which the
 current instruction belongs. Discriminator values are assigned
 arbitrarily by the DWARF producer and serve to distinguish
@@ -418,23 +418,23 @@ program, the state of the registers is:
 \begin{center}
 \begin{tabular}{lp{9.5cm}}
 \texttt{address} & 0 \\
-\addtoindex{\texttt{op\_index}} & 0 \\
+\addttindex{op\_index} & 0 \\
 \texttt{file} & 1 \\
 \texttt{line} & 1 \\
 \texttt{column} & 0 \\
-\addtoindex{\texttt{is\_stmt}} & determined by \addtoindex{\texttt{default\_is\_stmt}
+\addttindex{is\_stmt} & determined by \addttindex{default\_is\_stmt
                                                                        in the line number program header \\
-\addtoindex{\texttt{basic\_block}}    & \doublequote{false} \addtoindexx{basic block} \\
-\addtoindex{\texttt{end\_sequence}}   & \doublequote{false} \\
-\addtoindex{\texttt{prologue\_end}}   & \doublequote{false} \\
-\addtoindex{\texttt{epilogue\_begin}} & \doublequote{false} \\
-\addtoindex{\texttt{isa}} & 0 \\
-\addtoindex{\texttt{discriminator}} & 0 \\
+\addttindex{basic\_block}    & \doublequote{false} \addtoindexx{basic block} \\
+\addttindex{end\_sequence}   & \doublequote{false} \\
+\addttindex{prologue\_end}   & \doublequote{false} \\
+\addttindex{epilogue\_begin} & \doublequote{false} \\
+\addttindex{isa} & 0 \\
+\addttindex{discriminator} & 0 \\
 \end{tabular}
 \end{center}
 
 \textit{The 
-\addtoindex{\texttt{isa}} value 0 specifies that the instruction set is the
+\addttindex{isa} value 0 specifies that the instruction set is the
 architecturally determined default instruction set. This may
 be fixed by the ABI, or it may be specified by other means,
 for example, by the object file description.}
@@ -480,7 +480,7 @@ a header containing the following fields in order:
 
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length})  \\
-\addtoindexx{\texttt{unit\_length}}
+\addttindexx{unit\_length}
 The size in bytes of the line number information for this
 compilation unit, not including the length field itself
 (see Section \refersec{datarep:initiallengthvalues}). 
@@ -493,7 +493,7 @@ the line number information and is independent of the DWARF
 version number. 
 
 \item \texttt{header\_length}  \\
-The number of bytes following the \addtoindex{\texttt{header\_length}} field to the
+The number of bytes following the \addttindex{header\_length} field to the
 beginning of the first byte of the line number program itself.
 In the \thirtytwobitdwarfformat, this is a 4\dash byte unsigned
 length; in the \sixtyfourbitdwarfformat, this field is an
@@ -501,40 +501,40 @@ length; in the \sixtyfourbitdwarfformat, this field is an
 (see Section \refersec{datarep:32bitand64bitdwarfformats}). 
 
 \item \texttt{minimum\_instruction\_length} (\addtoindex{ubyte})  \\
-\addtoindexx{\texttt{minimum\_instruction\_length}}
+\addttindexx{minimum\_instruction\_length}
 The size in bytes of the smallest target machine
 instruction. Line number program opcodes that alter
-the \texttt{address} and \addtoindex{\texttt{op\_index}}
+the \texttt{address} and \addttindex{op\_index}
 registers use this and
-\addtoindex{\texttt{maximum\_operations\_per\_instruction}}
+\addttindex{maximum\_operations\_per\_instruction}
 (see following) in their calculations. 
 
 \needlines{9}
 \item \texttt{maximum\_operations\_per\_instruction} (\addtoindex{ubyte}) \\
 The 
-\addtoindexx{\texttt{maximum\_operations\_per\_instruction}}
+\addttindexx{maximum\_operations\_per\_instruction}
 maximum number of individual operations that may be
 encoded in an instruction. Line number program opcodes
 that alter the \texttt{address} and 
-\addtoindex{\texttt{op\_index}} registers use this and
-\addtoindex{\texttt{minimum\_instruction\_length}} (see preceeding)
+\addttindex{op\_index} registers use this and
+\addttindex{minimum\_instruction\_length} (see preceeding)
 in their calculations.
 
 For non-VLIW
-architectures, this field is 1, the \addtoindex{\texttt{op\_index}} register is always
+architectures, this field is 1, the \addttindex{op\_index} register is always
 0, and the operation pointer is simply the \texttt{address} register.
 
 \needlines{4}
 \item \texttt{default\_is\_stmt} (\addtoindex{ubyte}) \\
-\addtoindexx{\texttt{default\_is\_stmt}}
-The initial value of the \addtoindex{\texttt{is\_stmt}} register.  
+\addttindexx{default\_is\_stmt}
+The initial value of the \addttindex{is\_stmt} register.  
 
 \textit{A simple approach
 to building line number information when machine instructions
 are emitted in an order corresponding to the source program
-is to set \addtoindex{\texttt{default\_is\_stmt}} 
+is to set \addttindex{default\_is\_stmt}
 to ``true'' and to not change the
-value of the \addtoindex{\texttt{is\_stmt}} register 
+value of the \addttindex{is\_stmt} register 
 within the line number program.
 One matrix entry is produced for each line that has code
 generated for it. The effect is that every entry in the
@@ -548,25 +548,25 @@ the matrix for a line number; in this case, at least one entry
 breakpoint location for the line number. \livelink{chap:DWLNSnegatestmt}{DW\_LNS\_negate\_stmt}
 opcodes in the line number program control which matrix entries
 constitute such a recommendation and 
-\addtoindex{\texttt{default\_is\_stmt}} might
+\addttindex{default\_is\_stmt} might
 be either ``true'' or ``false''. This approach might be
 used as part of support for debugging optimized code.}
 
 \item \texttt{line\_base} (\addtoindex{sbyte}) \\
-\addtoindexx{\texttt{line\_base}}
+\addttindexx{line\_base}
 This parameter affects the meaning of the special opcodes. See below.
 
 \item \texttt{line\_range} (\addtoindex{ubyte}) \\
-\addtoindexx{\texttt{line\_range}}
+\addttindexx{line\_range}
 This parameter affects the meaning of the special opcodes. See below.
 
 \item \texttt{opcode\_base} (\addtoindex{ubyte}) \\
 The 
-\addtoindexx{\texttt{opcode\_base}}
+\addttindexx{opcode\_base}
 number assigned to the first special opcode.
 
 \textit{Opcode base is typically one greater than the highest-numbered
-\addtoindexx{\texttt{opcode\_base}}
+\addttindexx{opcode\_base}
 standard opcode defined for the specified version of the line
 number information (12 in 
 \addtoindex{DWARF Version 3} and 
@@ -575,7 +575,7 @@ Version 4, 9 in
 \addtoindexx{DWARF Version 2}
 Version 2).  
 If opcode\_base is less than the typical value,
-\addtoindexx{\texttt{opcode\_base}}
+\addttindexx{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 \texttt{opcode\_base}
@@ -584,7 +584,7 @@ that of the highest standard opcode and the first special
 opcode (not inclusive) are used for vendor specific extensions.}
 
 \item \texttt{standard\_opcode\_lengths} (array of \addtoindex{ubyte}) \\
-\addtoindexx{\texttt{standard\_opcode\_lengths}}
+\addttindexx{standard\_opcode\_lengths}
 This array specifies the number of \addtoindex{LEB128} operands for each
 of the standard opcodes. The first element of the array
 corresponds to the opcode whose value is 1, and the last
@@ -592,7 +592,7 @@ element corresponds to the opcode whose value
 is \texttt{opcode\_base - 1}.
 
 \textit{By increasing \texttt{opcode\_base}, and adding elements to this array,
-\addtoindexx{\texttt{opcode\_base}}
+\addttindexx{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.}
 
@@ -602,7 +602,7 @@ just like standard opcodes.}
 \needlines{3}
 \item \texttt{include\_directories} (sequence of path names) \\
 Entries 
-\addtoindexx{\texttt{include\_directories}}
+\addttindexx{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
@@ -621,10 +621,11 @@ not explicitly represented.
 Entries 
 \addtoindexx{file names}
 in 
-\addtoindexx{\texttt{file\_names}}
+\addttindexx{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
+used in other contexts, such as in a 
+\livelinki{chap:declarationcoordinates}{declaration coordinate}{declaration coordinates} or
 a macro file inclusion. Each entry consists of the following
 values:
 
@@ -637,12 +638,12 @@ to either the compilation directory (as specified by the
 \livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir} 
 attribute given in the compilation unit) or one
 of the directories listed in the 
-\addtoindex{\texttt{include\_directories}} section.
+\addttindex{include\_directories} section.
 
 \item An unsigned LEB128\addtoindexx{LEB128!unsigned} 
 number representing the directory
 index of a directory in the 
-\addtoindex{\texttt{include\_directories}} section.
+\addttindex{include\_directories} section.
 
 
 \item An unsigned LEB128\addtoindexx{LEB128!unsigned}
@@ -659,11 +660,11 @@ bytes of the file, or 0 if not available.
 The last entry is followed by a single null byte.
 
 The directory index represents an entry in the
-\addtoindex{\texttt{include\_directories}} section. 
+\addttindex{include\_directories} section. 
 The index is 0 if the file was
 found in the current directory of the compilation, 1 if it
 was found in the first directory in the 
-\addtoindex{\texttt{include\_directories}}
+\addttindex{include\_directories}
 section, and so on. The directory index is ignored for file
 names that represent full path names.
 
@@ -703,21 +704,21 @@ Each \addtoindex{ubyte} special opcode has the following effect on the state mac
 \item  Add a signed integer to the \texttt{line} register.
 
 \item  Modify the \addtoindex{operation pointer} by incrementing the
-\texttt{address} and \addtoindex{\texttt{op\_index|}} registers as described below.
+\texttt{address} and \addttindex{op\_index} registers as described below.
 
 \item  Append a row to the matrix using the current values
 of the state machine registers.
 
-\item  Set the \addtoindex{\texttt{basic\_block}} register to \doublequote{false.} \addtoindexx{basic block}
-\item  Set the \addtoindex{\texttt{prologue\_end}} register to \doublequote{false.}
-\item  Set the \addtoindex{\texttt{epilogue\_begin}} register to \doublequote{false.}
-\item  Set the \addtoindex{\texttt{discriminator}} register to 0.
+\item  Set the \addttindex{basic\_block} register to \doublequote{false.} \addtoindexx{basic block}
+\item  Set the \addttindex{prologue\_end} register to \doublequote{false.}
+\item  Set the \addttindex{epilogue\_begin} register to \doublequote{false.}
+\item  Set the \addttindex{discriminator} register to 0.
 
 \end{enumerate}
 
 All of the special opcodes do those same seven things; they
 differ from one another only in what values they add to the
-\texttt{line}, \texttt{address} and \addtoindex{\texttt{op\_index}} registers.
+\texttt{line}, \texttt{address} and \addttindex{op\_index} registers.
 
 
 \textit{Instead of assigning a fixed meaning to each special opcode,
@@ -741,22 +742,22 @@ way to decrease the line number) in return for the ability
 to add larger positive values to the \texttt{address} register. To
 permit this variety of strategies, the line number program
 header defines a 
-\addtoindex{\texttt{line\_base}}
+\addttindex{line\_base}
 field that specifies the minimum
 value which a special opcode can add to the line register
 and a 
-\addtoindex{\texttt{line\_range}}
+\addttindex{line\_range}
 field that defines the range of values it
 can add to the line register.}
 
 
 A special opcode value is chosen based on the amount that needs
-to be added to the \texttt{line}, \texttt{address} and \addtoindex{\texttt{op\_index}} registers.
+to be added to the \texttt{line}, \texttt{address} and \addttindex{op\_index} registers.
 The maximum line increment for a special opcode is the value
 of the 
-\addtoindex{\texttt{line\_base}}
+\addttindex{line\_base}
 field in the header, plus the value of the 
-\addtoindex{\texttt{line\_range}} field, minus 1 (line base + 
+\addttindex{line\_range} field, minus 1 (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
@@ -766,57 +767,57 @@ of operations to skip when advancing the \addtoindex{operation pointer}.
 The special opcode is then calculated using the following formula:
 \begin{alltt}
   opcode = 
-    (\textit{desired line increment} - \addtoindex{line\_base}) +
-      (\addtoindex{line\_range} * \textit{operation advance}) + \addtoindex{opcode\_base}
+    (\textit{desired line increment} - \addttindex{line\_base}) +
+      (\addttindex{line\_range} * \textit{operation advance}) + \addttindex{opcode\_base}
 \end{alltt}
 If the resulting opcode is greater than 255, a standard opcode
 must be used instead.
 
-\textit{When \addtoindex{\texttt{maximum\_operations\_per\_instruction}} is 1, 
+\textit{When \addttindex{maximum\_operations\_per\_instruction} is 1, 
 the operation advance is simply the address increment divided by the
-\addtoindex{\texttt{minimum\_instruction\_length}}.}
+\addttindex{minimum\_instruction\_length}.}
 
 \needlines{6}
-To decode a special opcode, subtract the \addtoindex{\texttt{opcode\_base}} from
+To decode a special opcode, subtract the \addttindex{opcode\_base} from
 the opcode itself to give the \textit{adjusted opcode}. 
 The \textit{operation advance} 
 is the result of the adjusted opcode divided by the
 \texttt{line\_range}. The new \texttt{address} and 
-\addtoindex{\texttt{op\_index}} values are given by
+\addttindex{op\_index} values are given by
 \begin{alltt}
   \textit{adjusted opcode} = opcode \dash opcode\_base
   \textit{operation advance} = \textit{adjusted opcode} / line\_range
 
   new address = address +
-    \addtoindex{minimum\_instruction\_length} *
-      ((\addtoindex{op\_index} + \addtoindex{operation advance}) / \addtoindex{maximum\_operations\_per\_instruction})
+    \addttindex{minimum\_instruction\_length} *
+      ((\addttindex{op\_index} + \addtoindex{operation advance}) / \addttindex{maximum\_operations\_per\_instruction})
 
   new op\_index =
-    (\addtoindex{op\_index} + \addtoindex{operation advance}) \% \addtoindex{maximum\_operations\_per\_instruction}
+    (\addttindex{op\_index} + \addtoindex{operation advance}) \% \addttindex{maximum\_operations\_per\_instruction}
 \end{alltt}
 
-\textit{When the \addtoindex{\texttt{maximum\_operations\_per\_instruction}} field is 1,
+\textit{When the \addttindex{maximum\_operations\_per\_instruction} field is 1,
 \texttt{op\_index} is always 0 and these calculations simplify to those
 given for addresses in 
 \addtoindex{DWARF Version 3}.}
 
 The amount to increment the line register is the 
-\addtoindex{\texttt{line\_base}} plus
+\addttindex{line\_base} plus
 the result of the 
 \textit{\addtoindex{adjusted opcode}} modulo the 
-\addtoindex{\texttt{line\_range}}. That
+\addttindex{line\_range}. That
 is,
 
 \begin{alltt}
-  line increment = \addtoindex{line\_base} + (\textit{adjusted opcode} \% \addtoindex{line\_range})
+  line increment = \addttindex{line\_base} + (\textit{adjusted opcode} \% \addttindex{line\_range})
 \end{alltt}
 
 \textit{As an example, suppose that the opcode\_base is 13, 
-\addtoindex{\texttt{line\_base}} is -3, 
-\addtoindex{\texttt{line\_range}} is 12, 
-\addtoindex{\texttt{minimum\_instruction\_length}} is 1
+\addttindex{line\_base} is -3, 
+\addttindex{line\_range} is 12, 
+\addttindex{minimum\_instruction\_length} is 1
 and 
-\addtoindex{\texttt{maximum\_operations\_per\_instruction}} is 1. 
+\addttindex{maximum\_operations\_per\_instruction} is 1. 
 This means that
 we can use a special opcode whenever two successive rows in
 the matrix have source line numbers differing by any value
@@ -861,8 +862,8 @@ Figure \refersec{fig:examplelinenumberspecialopcodemapping}.}
 \end{figure}
 
 \textit{There is no requirement that the expression 
-255 - \addtoindex{\texttt{line\_base}} + 1 be an integral multiple of
-\addtoindex{\texttt{line\_range}}. }
+255 - \addttindex{line\_base} + 1 be an integral multiple of
+\addttindex{line\_range}. }
 
 \subsubsection{Standard Opcodes}
 \label{chap:standardopcodes}
@@ -877,17 +878,17 @@ actions performed by these opcodes are as follows:
 The \livetarg{chap:DWLNScopy}{DW\_LNS\_copy} 
 opcode takes no operands. It appends a row
 to the matrix using the current values of the state machine
-registers. Then it sets the \addtoindex{\texttt{discriminator}} register to 0,
-and sets the \addtoindex{\texttt{basic\_block}}, 
-\addtoindex{\texttt{prologue\_end}} and 
-\addtoindex{\texttt{epilogue\_begin}}
+registers. Then it sets the \addttindex{discriminator} register to 0,
+and sets the \addttindex{basic\_block}, 
+\addttindex{prologue\_end} and 
+\addttindex{epilogue\_begin}
 registers to ``false.''
 
 \item \textbf{DW\_LNS\_advance\_pc} \\
 The \livetarg{chap:DWLNSadvancepc}{DW\_LNS\_advance\_pc} 
 opcode takes a single unsigned LEB128\addtoindexx{LEB128!unsigned}
 operand as the \addtoindex{operation advance} and modifies the \texttt{address}
-and \addtoindex{\texttt{op\_index}} registers as specified in 
+and \addttindex{op\_index} registers as specified in 
 Section \refersec{chap:specialopcodes}.
 
 \item \textbf{DW\_LNS\_advance\_line} \\
@@ -912,7 +913,7 @@ register of the state machine.
 \needlines{4}
 \item \textbf{DW\_LNS\_negate\_stmt} \\
 The \livetarg{chap:DWLNSnegatestmt}{DW\_LNS\_negate\_stmt} opcode takes no
-operands. It sets the \addtoindex{\texttt{is\_stmt}} register of the state machine
+operands. It sets the \addttindex{is\_stmt} register of the state machine
 to the logical negation of its current value.
 
 \needlines{4}
@@ -921,14 +922,14 @@ The \livetarg{chap:DWLNSsetbasicblock}{DW\_LNS\_set\_basic\_block}
 opcode
 \addtoindexx{basic block}
 takes no operands. 
-It sets the \texttt{basic\_block} register of the
+It sets the \addttindex{basic\_block} register of the
 state machine to ``true.''
 
 
 
 \item \textbf{DW\_LNS\_const\_add\_pc} \\
 The \livetarg{chap:DWLNSconstaddpc}{DW\_LNS\_const\_add\_pc} opcode takes
-no operands. It advances the \texttt{address} and \texttt{op\_index} registers
+no operands. It advances the \texttt{address} and \addttindex{op\_index} registers
 by the increments corresponding to special opcode 255.
 
 \textit{When the line number program needs to advance the \texttt{address}
@@ -944,11 +945,11 @@ or more bytes.}
 \item \textbf{DW\_LNS\_fixed\_advance\_pc} \\ 
 The \livetarg{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc} opcode
 takes a single \addtoindex{uhalf} (unencoded) operand and adds it to the
-\texttt{address} register of the state machine and sets the \texttt{op\_index}
+\texttt{address} register of the state machine and sets the \addttindex{op\_index}
 register to 0. This is the only standard opcode whose operand
 is \textbf{not} a variable length number. It also does 
 \textbf{not} multiply the
-operand by the \addtoindex{\texttt{minimum\_instruction\_length}
+operand by the \addttindex{minimum\_instruction\_length
 field of the header.
 
 \textit{Existing assemblers cannot emit 
@@ -962,7 +963,7 @@ use \livelink{chap:DWLNSfixedadvancepc}{DW\_LNS\_fixed\_advance\_pc} instead, sa
 \item \textbf{DW\_LNS\_set\_prologue\_end} \\
 The \livetarg{chap:DWLNSsetprologueend}{DW\_LNS\_set\_prologue\_end}
 opcode takes no operands. It sets the 
-\addtoindex{\texttt{prologue\_end}} register
+\addttindex{prologue\_end} register
 to \doublequote{true}.
 
 \textit{When a breakpoint is set on entry to a function, it is
@@ -989,7 +990,7 @@ subroutines).}
 
 \item \textbf{DW\_LNS\_set\_epilogue\_begin} \\
 The \livetarg{chap:DWLNSsetepiloguebegin}{DW\_LNS\_set\_epilogue\_begin} opcode takes no operands. It
-sets the \addtoindex{\texttt{epilogue\_begin}} register to \doublequote{true}.
+sets the \addttindex{epilogue\_begin} register to \doublequote{true}.
 
 \textit{When a breakpoint is set on the exit of a function or execution
 steps over the last executable statement of a function, it is
@@ -1013,7 +1014,7 @@ subroutines).}
 \item \textbf{DW\_LNS\_set\_isa} \\
 The \livetarg{chap:DWLNSsetisa}{DW\_LNS\_set\_isa} opcode takes a single
 unsigned LEB128\addtoindexx{LEB128!unsigned} operand and stores that value in the 
-\addtoindex{\texttt{isa}}
+\addttindex{isa}
 register of the state machine.
 \end{enumerate}
 
@@ -1027,7 +1028,7 @@ The extended opcodes are as follows:
 
 \item \textbf{DW\_LNE\_end\_sequence} \\
 The \livetarg{chap:DWLNEendsequence}{DW\_LNE\_end\_sequence} opcode takes no operands. It sets the
-\addtoindex{\texttt{end\_sequence}}
+\addttindex{end\_sequence}
 register of the state machine to \doublequote{true} and
 appends a row to the matrix using the current values of the
 state-machine registers. Then it resets the registers to the
@@ -1044,7 +1045,7 @@ The \livetarg{chap:DWLNEsetaddress}{DW\_LNE\_set\_address} opcode takes a single
 address as an operand. The size of the operand is the size
 of an address on the target machine. It sets the \texttt{address}
 register to the value given by the relocatable address and
-sets the \texttt{op\_index} register to 0.
+sets the \addttindex{op\_index} register to 0.
 
 \textit{All of the other line number program opcodes that
 affect the \texttt{address} register add a delta to it. This instruction
@@ -1062,7 +1063,7 @@ name or a relative path name, the file is located relative
 to either the compilation directory (as specified by the
 \livelink{chap:DWATcompdir}{DW\_AT\_comp\_dir} attribute given in the compilation unit)
 or one of the directories in the 
-\addtoindex{\texttt{include\_directories}} section.
+\addttindex{include\_directories} section.
 
 \item An unsigned LEB128\addtoindexx{LEB128!unsigned} 
 number representing the directory index
@@ -1078,10 +1079,10 @@ not available.
 \end{enumerate}
 
 The directory index represents an entry in the
-\addtoindex{\texttt{include\_directories}} section of the line number program
+\addttindex{include\_directories} section of the line number program
 header. The index is 0 if the file was found in the current
 directory of the compilation, 1 if it was found in the first
-directory in the \addtoindex{\texttt{include\_directories}} section,
+directory in the \addttindex{include\_directories} section,
 and so on. The
 directory index is ignored for file names that represent full
 path names.
@@ -1099,7 +1100,7 @@ The \livetarg{chap:DWLNEsetdiscriminator}{DW\_LNE\_set\_discriminator}
 opcode takes a single
 parameter, an unsigned LEB128\addtoindexx{LEB128!unsigned} 
 integer. It sets the
-\addtoindex{\texttt{discriminator}} register to the new value.
+\addttindex{discriminator} register to the new value.
 
 \end{enumerate}
 
@@ -1534,31 +1535,31 @@ UTF\dash 8 encoding.}
 
 \item  \texttt{address\_size} (\addtoindex{ubyte}) \\
 The size of a target address
-\addtoindexx{\texttt{address\_size}}
+\addttindexx{address\_size}
 in this CIE and any FDEs that
 use it, in bytes. If a compilation unit exists for this frame,
 its address size must match the address size here.
 
 \item  \texttt{segment\_size} (\addtoindex{ubyte}) \\
-The \addtoindexx{\texttt{segment\_size}}
+The \addttindexx{segment\_size}
 size of a segment selector in this CIE and any FDEs that
 use it, in bytes.
 
-\item  \addtoindex{\texttt{code\_alignment\_factor}} (unsigned LEB128) 
+\item  \addttindex{code\_alignment\_factor} (unsigned LEB128) 
 \addtoindexx{LEB128!unsigned}\addtoindexx{unsigned LEB128|see{LEB128, unsigned}}
-\addtoindexx{\texttt{code alignment factor}} \\
+\addtoindexx{code alignment factor} \\
 A 
-\addtoindexx{\texttt{\textless caf\textgreater}|see{code alignment factor}}
+\addtoindexx{\textless caf\textgreater|see{code alignment factor}}
 constant that is factored out of all advance location
 instructions (see 
 Section \refersec{chap:rowcreationinstructions}).
 
 
-\item  \addtoindex{\texttt{data\_alignment\_factor}} (signed LEB128)
+\item  \addttindex{data\_alignment\_factor} (signed LEB128)
 \addtoindexx{LEB128!signed}\addtoindexx{signed LEB128|see{LEB128, signed}} \\
 \addtoindexx{data alignment factor}
 A 
-\addtoindexx{\texttt{\textless daf\textgreater}|see{data alignment factor}}
+\addtoindexx{\textless daf\textgreater|see{data alignment factor}}
 constant that is factored out of certain offset instructions
 (see below). The resulting value is  \textit{(operand} *
 \texttt{data\_alignment\_factor}).
@@ -1605,16 +1606,16 @@ the CIE that is associated with this FDE.
 
 \item  \texttt{initial\_location} (segment selector and target address) \\
 The 
-\addtoindexx{\texttt{initial\_location}}
+\addttindexx{initial\_location}
 address of the first location associated with this table
 entry. 
-If the \addtoindex{\texttt{segment\_size}} field of this FDE's CIE is non-zero,
+If the \addttindex{segment\_size} field of this FDE's CIE is non-zero,
 the initial location is preceded by a segment selector of
 the given length.
 
 \item  \texttt{address\_range} (target address) \\
 The 
-\addtoindexx{\texttt{address\_range}}
+\addttindexx{address\_range}
 number 
 \addtoindexx{target address}
 of bytes of program instructions described by this entry.
@@ -1678,7 +1679,7 @@ new table row using the specified address as the location. All
 other values in the new row are initially identical to the
 current row. The new location value is always greater than
 the current one. 
-If the \addtoindex{\texttt{segment\_size}} field of this FDE's 
+If the \addttindex{segment\_size} field of this FDE's 
 \addtoindex{CIE}
 is non\dash zero, the initial location is preceded by a segment
 selector of the given length.
@@ -1690,7 +1691,7 @@ with the opcode) that represents a constant delta. The required
 action is to create a new table row with a location value that
 is computed by taking the current entry\textquoteright s location value
 and adding the value of 
-\textit{delta} * \addtoindex{\texttt{code\_alignment\_factor}}. 
+\textit{delta} * \addttindex{code\_alignment\_factor}. 
 All other values in the new row are initially identical to the
 current row
 
@@ -1736,7 +1737,7 @@ representing a register number and a
 signed LEB128\addtoindexx{LEB128!signed} factored offset. This instruction is identical
 to \livelink{chap:DWCFAdefcfa}{DW\_CFA\_def\_cfa} except that the second operand is signed
 and factored. The resulting offset is \textit{factored\_offset} *
-\addtoindex{\texttt{data\_alignment\_factor}}.
+\addttindex{data\_alignment\_factor}.
 
 
 \item \textbf{DW\_CFA\_def\_cfa\_register} \\
@@ -1764,7 +1765,7 @@ The \livetarg{chap:DWCFAdefcfaoffsetsf}{DW\_CFA\_def\_cfa\_offset\_sf} instructi
 LEB128\addtoindexx{LEB128!signed} operand representing a factored offset. This instruction
 is identical to \livelink{chap:DWCFAdefcfaoffset}{DW\_CFA\_def\_cfa\_offset} except that the
 operand is signed and factored. The resulting offset is
-\textit{factored\_offset} * \addtoindex{\texttt{data\_alignment\_factor}}.
+\textit{factored\_offset} * \addttindex{data\_alignment\_factor}.
 This operation
 is valid only if the current CFA rule is defined to use a
 register and offset.
@@ -1807,7 +1808,7 @@ constant representing a factored offset. The required action
 is to change the rule for the register indicated by the
 register number to be an offset(N) rule where the value of
 N is 
-\textit{factored offset} * \addtoindex{\texttt{data\_alignment\_factor}}.
+\textit{factored offset} * \addttindex{data\_alignment\_factor}.
 
 \item \textbf{DW\_CFA\_offset\_extended} \\
 The \livetarg{chap:DWCFAoffsetextended}{DW\_CFA\_offset\_extended} 
@@ -1826,7 +1827,7 @@ signed LEB128 factored offset. This instruction is identical
 to \livelink{chap:DWCFAoffsetextended}{DW\_CFA\_offset\_extended} 
 except that the second operand is
 signed and factored. The resulting offset is 
-\textit{factored\_offset} * \addtoindex{\texttt{data\_alignment\_factor}}.
+\textit{factored\_offset} * \addttindex{data\_alignment\_factor}.
 
 \item \textbf{DW\_CFA\_val\_offset} \\
 The \livetarg{chap:DWCFAvaloffset}{DW\_CFA\_val\_offset} 
@@ -1835,15 +1836,16 @@ LEB128 operands\addtoindexx{LEB128!unsigned} representing a register number and
 factored offset. The required action is to change the rule
 for the register indicated by the register number to be a
 val\_offset(N) rule where the value of N is 
-\textit{factored\_offset} * \addtoindex{\texttt{data\_alignment\_factor}}.
+\textit{factored\_offset} * \addttindex{data\_alignment\_factor}.
 
+\needlines{6}
 \item \textbf{DW\_CFA\_val\_offset\_sf} \\
 The \livetarg{chap:DWCFAvaloffsetsf}{DW\_CFA\_val\_offset\_sf} instruction takes two operands: an
 unsigned LEB128\addtoindexx{LEB128!unsigned} value representing a register number and a
 signed LEB128\addtoindexx{LEB128!signed} factored offset. This instruction is identical
 to \livelink{chap:DWCFAvaloffset}{DW\_CFA\_val\_offset} except that the second operand is signed
 and factored. The resulting offset is 
-\textit{factored\_offset} * \addtoindex{\texttt{data\_alignment\_factor}}.
+\textit{factored\_offset} * \addttindex{data\_alignment\_factor}.
 
 \item \textbf{DW\_CFA\_register} \\
 The \livetarg{chap:DWCFAregister}{DW\_CFA\_register} 
@@ -1897,6 +1899,7 @@ required action is to change the rule for the indicated
 register to the rule assigned it by the \texttt{initial\_instructions}
 in the CIE.
 
+\needlines{5}
 \item \textbf{DW\_CFA\_restore\_extended} \\
 The \livetarg{chap:DWCFArestoreextended}{DW\_CFA\_restore\_extended}
 instruction takes a single unsigned LEB128\addtoindexx{LEB128!unsigned} 
index 5fe2e5c..11d0e90 100644 (file)
@@ -263,7 +263,8 @@ attributes reflect the names as they appear in the source
 program but that a case insensitive lookup should be used to
 access those names.
 
-\item A \livelink{chap:DWATbasetypes}{DW\_AT\_base\_types} attribute whose value is a reference.
+\item A \livelink{chap:DWATbasetypes}{DW\_AT\_base\_types} attribute whose value is a 
+\livelink{chap:classreference}{reference}.
 
 
 This 
@@ -287,14 +288,14 @@ correctly.
 
 \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
+which is a \livelink{chap:classflag}{flag} whose
 presence indicates that all strings (such as the names of
 declared entities in the source program) are represented
 using the UTF\dash 8 representation 
 (see Section \refersec{datarep:attributeencodings}).
 
 
-\item A \livelink{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram} attribute, which is a \livelink{chap:flag}{flag}
+\item A \livelink{chap:DWATmainsubprogram}{DW\_AT\_main\_subprogram} attribute, which is a \livelink{chap:classflag}{flag}
 \addtoindexx{main subprogram attribute}
 whose presence indicates 
 \hypertarget{chap:DWATmainsubprogramunitcontainingmainorstartingsubprogram}
@@ -333,7 +334,7 @@ An imported unit entry contains
 \addtoindexx{import attribute}
 a
 \livelink{chap:DWATimport}{DW\_AT\_import} attribute 
-whose value is a reference to the
+whose value is a \livelink{chap:classreference}{reference} to the
 normal or partial compilation unit whose declarations logically
 belong at the place of the imported unit entry.
 
@@ -516,7 +517,7 @@ 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 
 \addtoindexx{specification attribute}
-whose value is a reference to the
+whose value is a \livelink{chap:classreference}{reference} to the
 debugging information entry representing the declaration of
 the type, variable or function. Type, variable, or function
 entries with a 
@@ -596,7 +597,7 @@ each overloading.
 \addtoindexx{import attribute}
 Each imported declaration entry has a
 \livelink{chap:DWATimport}{DW\_AT\_import} attribute,
-whose value is a reference to the
+whose value is a \livelink{chap:classreference}{reference} to the
 debugging information entry representing the declaration that
 is being imported.
 
@@ -625,7 +626,7 @@ declaration entry
 with a name attribute whose value is
 a null\dash terminated string containing the alias name as it
 appears in the source program and an import attribute whose
-value is a reference to the applicable original namespace or
+value is a \livelink{chap:classreference}{reference} to the applicable original namespace or
 namespace extension entry.
 }
 
@@ -673,7 +674,8 @@ An
 imported module entry contains a 
 \livelink{chap:DWATimport}{DW\_AT\_import} attribute
 \addtoindexx{import attribute}
-whose value is a reference to the module or namespace entry
+whose value is a \livelink{chap:classreference}{reference} 
+to the module or namespace entry
 containing the definition and/or declaration entries for
 the entities that are to be imported into the context of the
 imported module entry.
@@ -792,7 +794,7 @@ compilation unit, that entry has
 \addtoindexx{external attribute}
 a 
 \livelink{chap:DWATexternal}{DW\_AT\_external} attribute,
-which is a \livelink{chap:flag}{flag}.
+which is a \livelink{chap:classflag}{flag}.
 
 \textit{Additional attributes for functions that are members of a
 class or structure are described in 
@@ -807,7 +809,7 @@ may contain a
 attribute 
 \addtoindexx{main subprogram attribute}
 which is 
-a \livelink{chap:flag}{flag} whose presence indicates that the
+a \livelink{chap:classflag}{flag} whose presence indicates that the
 subroutine has been identified as the starting function of
 the program.  If more than one subprogram contains this 
 \nolink{flag},
@@ -830,7 +832,8 @@ A subroutine entry may
 \hypertarget{chap:DWATcallingconventionsubprogramcallingconvention}
 contain a 
 \livelink{chap:DWATcallingconvention}{DW\_AT\_calling\_convention}
-attribute, whose value is an integer constant. The set of
+attribute, whose value is an 
+\livelink{chap:classconstant}{integer constant}. The set of
 calling convention codes is given in 
 Table \refersec{tab:callingconventioncodes}.
 
@@ -876,7 +879,7 @@ declaration may have
 \addtoindexx{prototyped attribute}
 a 
 \livelink{chap:DWATprototyped}{DW\_AT\_prototyped} attribute, which is
-a \livelink{chap:flag}{flag}.
+a \livelink{chap:classflag}{flag}.
 
 \textit{The \addtoindex{Fortran} 
 language allows the keywords \texttt{elemental}, \texttt{pure}
@@ -895,7 +898,7 @@ may have
 \addtoindexx{elemental attribute}
 a 
 \livelink{chap:DWATelemental}{DW\_AT\_elemental} attribute, which
-is a \livelink{chap:flag}{flag}. 
+is a \livelink{chap:classflag}{flag}. 
 The attribute indicates whether the subroutine
 or entry point was declared with the ``elemental'' keyword
 or property.
@@ -906,7 +909,7 @@ subprogram entry may have
 \addtoindexx{pure attribute}
 a 
 \livelink{chap:DWATpure}{DW\_AT\_pure} attribute, which is
-a \livelink{chap:flag}{flag}. 
+a \livelink{chap:classflag}{flag}. 
 The attribute indicates whether the subroutine was
 declared with the ``pure'' keyword or property.
 
@@ -914,7 +917,7 @@ A
 \hypertarget{chap:DWATrecursiverecursivepropertyofasubroutine}
 subprogram entry may have a 
 \livelink{chap:DWATrecursive}{DW\_AT\_recursive} attribute, which
-is a \livelink{chap:flag}{flag}. 
+is a \livelink{chap:classflag}{flag}. 
 The attribute indicates whether the subroutine
 or entry point was declared with the ``recursive'' keyword
 or property.
@@ -1023,10 +1026,9 @@ represented by a debugging information entry\addtoindexx{unspecified parameters
 with the tag
 \livetarg{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}.
 
-The entry for a subroutine that includes 
+The entry for a subroutine that includes a
+\addtoindex{Fortran}
 \addtoindexx{Fortran!common block}
-a 
-\addtoindex{Fortran} common block
 \livelink{chap:fortrancommonblock}{common} 
 \livelink{chap:commonblockentry}{block}
 \addtoindexx{common block|see{Fortran common block}}
@@ -1036,7 +1038,8 @@ The
 \hypertarget{chap:commonreferencecommonblockusage}
 common inclusion entry has a 
 \livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference} attribute
-whose value is a reference to the debugging information entry
+whose value is a \livelink{chap:classreference}{reference} 
+to the debugging information entry
 for the common \nolink{block} being included 
 (see Section \refersec{chap:commonblockentries}).
 
@@ -1158,7 +1161,8 @@ representing the subroutine that may throw this type. Each
 thrown type entry contains 
 \addtoindexx{type attribute}
 a \livelink{chap:DWATtype}{DW\_AT\_type} attribute, whose
-value is a reference to an entry describing the type of the
+value is a \livelink{chap:classreference}{reference} 
+to an entry describing the type of the
 exception that may be thrown.
 
 \subsection{Function Template Instantiations}
@@ -1231,7 +1235,8 @@ explicitly declared to be available for inline expansion or
 that was expanded inline implicitly by the compiler has 
 \addtoindexx{inline attribute}
 a
-\livelink{chap:DWATinline}{DW\_AT\_inline} attribute whose value is an integer constant. The
+\livelink{chap:DWATinline}{DW\_AT\_inline} attribute whose value is an 
+\livelink{chap:classconstant}{integer constant}. The
 set of values for the \livelink{chap:DWATinline}{DW\_AT\_inline} attribute is given in
 Table \refersec{tab:inlinecodes}.
 
@@ -1255,7 +1260,7 @@ Name&Meaning\\ \hline
 \end{table}
 
 \textit{In \addtoindex{C++}, a function or a constructor declared with
-\addtoindex{\texttt{constexpr}} is implicitly declared inline. The abstract inline
+\addttindex{constexpr} is implicitly declared inline. The abstract inline
 instance (see below) is represented by a debugging information
 entry with the tag \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}. Such an entry has a
 \livelink{chap:DWATinline}{DW\_AT\_inline} attribute whose value is \livelink{chap:DWINLinlined}{DW\_INL\_inlined}.}
@@ -1403,7 +1408,8 @@ entry
 may also have \livelink{chap:DWATcallfile}{DW\_AT\_call\_file},
 \livelink{chap:DWATcallline}{DW\_AT\_call\_line} and \livelink{chap:DWATcallcolumn}{DW\_AT\_call\_column} attributes, 
 each of whose
-value is an integer constant. These attributes represent the
+value is an \livelink{chap:classconstant}{integer constant}. 
+These attributes represent the
 source file, source line number, and source column number,
 respectively, of the first character of the statement or
 expression that caused the inline expansion. The call file,
@@ -1421,7 +1427,7 @@ An inlined subroutine entry
 \hypertarget{chap:DWATconstexprcompiletimeconstantfunction}
 may have a 
 \livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr}
-attribute, which is a \livelink{chap:flag}{flag} 
+attribute, which is a \livelink{chap:classflag}{flag} 
 whose presence indicates that the
 subroutine has been evaluated as a compile\dash time constant. Such
 an entry may also have a \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value} attribute,
@@ -1431,7 +1437,7 @@ this attribute is the actual return value of the subroutine,
 represented as it would be on the target architecture.
 
 \textit{In \addtoindex{C++}, if a function or a constructor declared with 
-\addtoindex{\texttt{constexpr}}
+\addttindex{constexpr}
 is called with constant expressions, then the corresponding
 concrete inlined instance has a 
 \livelink{chap:DWATconstexpr}{DW\_AT\_const\_expr} attribute,
@@ -1485,14 +1491,14 @@ associated abstract instance entry.
 If an entry within a concrete inlined instance tree contains
 attributes describing the 
 \addtoindexx{declaration coordinates!in concrete instance}
-declaration coordinates 
-of that
-entry, then those attributes should refer to the file, line
+\livelink{chap:declarationcoordinates}{declaration coordinates} 
+of that entry, then those attributes should refer to the file, line
 and column of the original declaration of the subroutine,
 not to the point at which it was inlined. As a consequence,
 they may usually be omitted from any entry that has an abstract
 origin attribute.
 
+\needlines{4}
 For each pair of entries that are associated via a
 \addtoindexx{abstract origin attribute}
 \livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin} attribute, both members of the pair
@@ -1616,6 +1622,7 @@ and concrete instance trees for the outer subroutine apply
 also to the abstract and concrete instance entries for the
 nested subroutine.
 
+\needlines{5}
 For an inlined subroutine nested within another inlined
 subroutine, the following rules apply to their abstract and
 \addtoindexx{abstract instance!nested}
@@ -1693,7 +1700,7 @@ the relocated address of the target subprogram.
 (possibly mangled) \addtoindexx{mangled names}
 name of the target subprogram.
 
-\item If the value is of class \livelink{chap:flag}{flag}, then the value true
+\item If the value is of class \livelink{chap:classflag}{flag}, then the value true
 indicates that the containing subroutine is a trampoline but
 that the target subroutine is not known.
 \end{itemize}
index 2e040da..a1fc867 100644 (file)
@@ -38,7 +38,8 @@ A base type entry has
 \addtoindexx{encoding attribute}
 a \livelink{chap:DWATencoding}{DW\_AT\_encoding} attribute describing
 how the base type is encoded and is to be interpreted. The
-value of this attribute is an integer constant. The set of
+value of this attribute is an 
+\livelink{chap:classconstant}{integer constant}. The set of
 values and their meanings for the
 \livelink{chap:DWATencoding}{DW\_AT\_encoding} attribute
 is given in 
@@ -59,7 +60,7 @@ either a \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} attribute
 \hypertarget{chap:DWATbitsizebasetypebitsize}
 or a \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size} attribute 
 \addtoindex{bit size attribute}
-whose integer constant value
+whose \livelink{chap:classconstant}{integer constant} value
 (see Section \refersec{chap:byteandbitsizes}) 
 is the amount of storage needed to hold
 a value of the type.
@@ -83,8 +84,8 @@ a
 both 
 \addtoindexx{data bit offset attribute}
 of whose values are
-integer constant values (
-see Section \refersec{chap:staticanddynamicvaluesofattributes}). 
+\livelink{chap:classconstant}{integer constant} values
+(see Section \refersec{chap:staticanddynamicvaluesofattributes}). 
 The bit size
 attribute describes the actual size in bits used to represent
 values of the given type. The data bit offset attribute is the
@@ -244,10 +245,10 @@ attributes.
 
 A \livelink{chap:DWATdecimalsign}{DW\_AT\_decimal\_sign} attribute 
 \addtoindexx{decimal sign attribute}
-is an integer constant that
+is an \livelink{chap:classconstant}{integer constant} that
 conveys the representation of the sign of the decimal type
 (see Figure \refersec{tab:decimalsignattributevalues}). 
-Its integer constant value is interpreted to
+Its \livelink{chap:classconstant}{integer constant} value is interpreted to
 mean that the type has a leading overpunch, trailing overpunch,
 leading separate or trailing separate sign representation or,
 alternatively, no sign at all.
@@ -282,7 +283,7 @@ The
 \livelink{chap:DWATdigitcount}{DW\_AT\_digit\_count}
 attribute 
 \addtoindexx{digit count attribute}
-is an integer constant
+is an \livelink{chap:classconstant}{integer constant}
 value that represents the number of digits in an instance of
 the type.
 
@@ -358,7 +359,7 @@ binary type entry has a
 \livelink{chap:DWATbinaryscale}{DW\_AT\_binary\_scale} attribute. 
 The
 \livelink{chap:DWATbinaryscale}{DW\_AT\_binary\_scale} attribute 
-is an integer constant value
+is an \livelink{chap:classconstant}{integer constant} value
 that represents the exponent of the base two scale factor to
 be applied to an instance of the type.  Zero scale puts the
 binary point immediately to the right of the least significant
@@ -453,7 +454,8 @@ Each of the type modifier entries has
 \addtoindexx{type attribute}
 a 
 \livelink{chap:DWATtype}{DW\_AT\_type} attribute,
-whose value is a reference to a debugging information entry
+whose value is a \livelink{chap:classreference}{reference} 
+to a debugging information entry
 describing a base type, a user-defined type or another type
 modifier.
 
@@ -595,7 +597,8 @@ The typedef entry may also contain
 \addtoindexx{type attribute}
 a 
 \livelink{chap:DWATtype}{DW\_AT\_type} attribute whose
-value is a reference to the type named by the typedef. If
+value is a \livelink{chap:classreference}{reference} 
+to the type named by the typedef. If
 the debugging information entry for a typedef represents
 a declaration of the type that is not also a definition,
 it does not contain a type attribute.
@@ -634,7 +637,8 @@ The
 \hypertarget{chap:DWATorderingarrayrowcolumnordering}
 array type entry describing a multidimensional array may
 \addtoindexx{array!element ordering}
-have a \livelink{chap:DWATordering}{DW\_AT\_ordering} attribute whose integer constant value is
+have a \livelink{chap:DWATordering}{DW\_AT\_ordering} attribute whose 
+\livelink{chap:classconstant}{integer constant} value is
 interpreted to mean either row-major or column-major ordering
 of array elements. The set of values and their meanings
 for the ordering attribute are listed in 
@@ -711,6 +715,7 @@ a \doublequote{multidimensional array}, an array of arrays may
 be represented by a debugging information entry for a
 multidimensional array.}
 
+\needlines{5}
 Other attributes especially applicable to arrays are
 \livelink{chap:DWATallocated}{DW\_AT\_allocated}, 
 \livelink{chap:DWATassociated}{DW\_AT\_associated} and 
@@ -824,7 +829,7 @@ of a structure, class or union member corresponding to a prior
 incomplete structure, class or union, the entry may have a
 \livelink{chap:DWATspecification}{DW\_AT\_specification} attribute 
 \addtoindexx{specification attribute}
-whose value is a reference to
+whose value is a \livelink{chap:classreference}{reference} to
 the debugging information entry representing that incomplete
 declaration.
 
@@ -1094,7 +1099,7 @@ entry
 may 
 \addtoindexx{mutable attribute}
 have a \livelink{chap:DWATmutable}{DW\_AT\_mutable} attribute,
-which is a \livelink{chap:flag}{flag}. 
+which is a \livelink{chap:classflag}{flag}. 
 This attribute indicates whether the data
 member was declared with the mutable storage class specifier.
 
@@ -1133,7 +1138,8 @@ For a \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} att
 \addtoindexx{data member location attribute}
 there are two cases:
 \begin{enumerate}[1. ]
-\item If the value is an integer constant, it is the offset
+\item If the value is an \livelink{chap:classconstant}{integer constant}, 
+it is the offset
 in bytes from the beginning of the containing entity. If
 the beginning of the containing entity has a non-zero bit
 offset then the beginning of the member entry has that same
@@ -1168,7 +1174,7 @@ do not allow for manipulating or computing bit offsets.}
 \end{enumerate}
 
 For a \livelink{chap:DWATdatabitoffset}{DW\_AT\_data\_bit\_offset} attribute, 
-the value is an integer constant 
+the value is an \livelink{chap:classconstant}{integer constant} 
 (see Section \refersec{chap:staticanddynamicvaluesofattributes}) 
 that specifies the number of bits
 from the beginning of the containing entity to the beginning
@@ -1181,7 +1187,7 @@ of the type given for the data member, the data member has
 \addtoindexx{bit size attribute}
 either a \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} 
 or a \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size} attribute whose
-integer constant value 
+\livelink{chap:classconstant}{integer constant} value 
 (see Section \refersec{chap:staticanddynamicvaluesofattributes}) 
 is the amount
 of storage needed to hold the value of the data member.
@@ -1300,7 +1306,7 @@ and is also used for base types
 (see Section 
 \refersec{chap:basetypeentries}). 
 It replaces the
-\livetarg{chap:DWATbitoffsetdatamemberbitlocation}
+\livetarg{chap:DWATbitoffsetdatamemberbitlocation}{}
 attributes \livelink{chap:DWATbitoffset}{DW\_AT\_bit\_offset} and
 \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} when used to
 identify the beginning of bit field data members as defined
@@ -1472,7 +1478,8 @@ has
 \addtoindexx{object pointer attribute}
 a \livelink{chap:DWATobjectpointer}{DW\_AT\_object\_pointer} 
 attribute
-whose value is a reference to the formal parameter entry
+whose value is a \livelink{chap:classreference}{reference} 
+to the formal parameter entry
 that corresponds to the object for which the function is
 called. The name attribute of that formal parameter is defined
 by the current language (for example, 
@@ -1625,7 +1632,7 @@ structure data member entry. The variant part entry will
 \addtoindexx{discriminant attribute}
 have a 
 \livelink{chap:DWATdiscr}{DW\_AT\_discr} attribute 
-whose value is a reference to
+whose value is a \livelink{chap:classreference}{reference} to
 the member entry for the discriminant.
 
 If the variant part does not have a discriminant (tag field),
@@ -1649,6 +1656,7 @@ if the tag type for the variant part containing this variant
 is a signed type. The number is unsigned if the tag type is
 an unsigned type.
 
+\needlines{5}
 Alternatively, 
 \hypertarget{chap:DWATdiscrlistlistofdiscriminantvalues}
 the variant entry may contain 
@@ -1657,7 +1665,7 @@ a
 \livelink{chap:DWATdiscrlist}{DW\_AT\_discr\_list}
 attribute, whose value represents a list of discriminant
 values. This list is represented by any of the 
-\livelink{chap:block}{block} forms and
+\livelink{chap:classblock}{block} forms and
 may contain a mixture of case labels and label ranges. Each
 item on the list is prefixed with a discriminant value
 descriptor that determines whether the list item represents
@@ -1674,8 +1682,8 @@ constant that may have one of the values given in
 Table \refersec{tab:discriminantdescriptorvalues}.
 
 \begin{simplenametable}[1.4in]{Discriminant descriptor values}{tab:discriminantdescriptorvalues}
-\addtoindex{DW\_DSC\_label} \\
-\addtoindex{DW\_DSC\_range} \\
+\livetarg{chap:DWDSClabel}{DW\_DSC\_label} \\
+\livetarg{chap:DWDSCrange}{DW\_DSC\_range} \\
 \end{simplenametable}
 
 If a variant entry has neither a \livelink{chap:DWATdiscrvalue}{DW\_AT\_discr\_value}
@@ -1761,8 +1769,10 @@ a \livelink{chap:DWATname}{DW\_AT\_name} attribute
 \addtoindexx{name attribute}
 whose value is a null\dash terminated
 string containing the enumeration type name as it appears
-in the source program. This entry also has a \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}
-attribute whose integer constant value is the number of bytes
+in the source program. This entry also has a 
+\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}
+attribute whose \livelink{chap:classconstant}{integer constant} 
+value is the number of bytes
 required to hold an instance of the enumeration.
 
 The \addtoindex{enumeration type entry}
@@ -1785,7 +1795,7 @@ semantics such that
 then the \addtoindex{enumeration type entry} may 
 \addtoindexx{enum class|see{type-safe enumeration}}
 have a \livelink{chap:DWATenumclass}{DW\_AT\_enum\_class}
-attribute, which is a \livelink{chap:flag}{flag}. 
+attribute, which is a \livelink{chap:classflag}{flag}. 
 In a language that offers only
 one kind of enumeration declaration, this attribute is not
 required.
@@ -1895,7 +1905,7 @@ declaration may have
 \addtoindexx{prototyped attribute}
 a 
 \livelink{chap:DWATprototyped}{DW\_AT\_prototyped} attribute, which is
-a \livelink{chap:flag}{flag}.
+a \livelink{chap:classflag}{flag}.
 
 Each debugging information entry owned by a subroutine
 type entry correspond to either a formal parameter or the sequence of
@@ -1922,7 +1932,7 @@ tag \livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}
 
 
 \section{String Type Entries}
-\label{chap:stringtypeentries}
+\label{chap:classstringtypeentries}
 
 \textit{A ``string'' is a sequence of characters that have specific
 \addtoindexx{string type entry}
@@ -1961,6 +1971,7 @@ size attribute is present, the size of the data to be retrieved
 is the same as the 
 \addtoindex{size of an address} on the target machine.
 
+\needlines{5}
 If no string length attribute is present, the string type
 entry may have a \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} attribute or 
 \livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}
@@ -2047,7 +2058,7 @@ subrange entry may have
 \addtoindexx{threads scaled attribute}
 a 
 \livelink{chap:DWATthreadsscaled}{DW\_AT\_threads\_scaled} attribute,
-which is a \livelink{chap:flag}{flag}. 
+which is a \livelink{chap:classflag}{flag}. 
 If present, this attribute indicates whether
 this subrange represents a \addtoindex{UPC} array bound which is scaled
 by the runtime THREADS value (the number of UPC threads in
@@ -2173,7 +2184,7 @@ The \addtoindex{pointer to member} entry also
 \hypertarget{chap:DWATcontainingtypecontainingtypeofpointertomembertype}
 has a 
 \livelink{chap:DWATcontainingtype}{DW\_AT\_containing\_type}
-attribute, whose value is a reference to a debugging
+attribute, whose value is a \livelink{chap:classreference}{reference} to a debugging
 information entry for the class or structure to whose members
 objects of this type may point.
 
@@ -2283,6 +2294,7 @@ description yields the location of the data for an object.
 When this attribute is omitted, the address of the data is
 the same as the address of the object.
 
+\needlines{5}
 \textit{This location description will typically begin with
 \livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address} 
 which loads the address of the
@@ -2376,8 +2388,8 @@ the source program. The template alias entry also contains
 \addtoindexx{type attribute}
 a
 \livelink{chap:DWATtype}{DW\_AT\_type} attribute 
-whose value is a reference to the type
-named by the template alias. 
+whose value is a \livelink{chap:classreference}{reference}
+to the type named by the template alias. 
 
 \needlines{4}
 The template alias entry has the following child entries: