This indexes letters f, g, and h.
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 9a2aa99..5689109 100644 (file)
@@ -8,8 +8,12 @@ and of other fundamental elements described above.
 
 \section{Vendor Extensibility}
 \label{datarep:vendorextensibility}
+\addtoindexx{vendor extensibility}
+\addtoindexx{vendor specific extensions|see{vendor extensibility}}
 
-To reserve a portion of the DWARF name space and ranges of
+To 
+\addtoindexx{extensibility|see{vendor extensibility}}
+reserve a portion of the DWARF name space and ranges of
 enumeration values for use for vendor specific extensions,
 special labels are reserved for tag names, attribute names,
 base type encodings, location operations, language names,
@@ -17,13 +21,14 @@ calling conventions and call frame instructions.
 
 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
+appropriate prefix (DW\-\_TAG, DW\-\_AT, DW\-\_END, DW\-\_ATE, DW\-\_OP,
+DW\-\_LANG, DW\-\_LNE, DW\-\_CC or DW\-\_CFA respectively) followed by
 \_lo\_user or \_hi\_user. 
 \textit{For example, for entry tags, the special
-labels are DW\_TAG\_lo\_user and DW\_TAG\_hi\_user.}
+labels are \livetarg{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user} and 
+\livetarg{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}.}
 Values in the
-range between prefix\_lo\_user and prefix\_hi\_user inclusive,
+range between \textit{prefix}\_lo\_user and \textit{prefix}\_hi\_user inclusive,
 are reserved for vendor specific extensions. Vendors may
 use values in this range without conflicting with current or
 future system\dash defined values. All other values are reserved
@@ -34,12 +39,15 @@ between the number of standard line number opcodes and
 the first special line number opcode. However, since the
 number of standard opcodes varies with the DWARF version,
 the range for extensions is also version dependent. Thus,
-DW\_LNS\_lo\_user and DW\_LNS\_hi\_user symbols are not defined.}
+\livetarg{chap:DWLNSlouser}{DW\-\_LNS\-\_lo\-\_user} and 
+\livetarg{chap:DWLNShiuser}{DW\-\_LNS\-\_hi\-\_user} symbols are not defined.
+}
 
 Vendor defined tags, attributes, base type encodings, location
 atoms, language names, line number actions, calling conventions
 and call frame instructions, conventionally use the form
-prefix\_vendor\_id\_name, where vendor\_id is some identifying
+\text{prefix\_vendor\_id\_name}, where 
+\textit{vendor\_id}\addtoindexx{vendor id} is some identifying
 character sequence chosen so as to avoid conflicts with
 other vendors.
 
@@ -67,8 +75,11 @@ the semantics of previously existing tags.
 \label{datarep:reservedvalues}
 \subsection{Error Values}
 \label{datarep:errorvalues}
+\addtoindexx{reserved values!error}
 
-As a convenience for consumers of DWARF information, the value
+As 
+\addtoindexx{error value}
+a convenience for consumers of DWARF information, the value
 0 is reserved in the encodings for attribute names, attribute
 forms, base type encodings, location operations, languages,
 line number program opcodes, macro information entries and tag
@@ -80,17 +91,22 @@ not appear in DWARF debugging information.
 
 \subsection{Initial Length Values}
 \label{datarep:initiallengthvalues}
+\addtoindexx{reserved values!initial length}
 
 An initial length field is one of the length fields that occur
 at the beginning of those DWARF sections that have a header
-(.debug\_aranges, .debug\_info, .debug\_types, .debug\_line,
-.debug\_pubnames, and .debug\_pubtypes) or the length field
+(\addtoindex{.debug\_aranges}, 
+\addtoindex{.debug\_info}, 
+\addtoindex{.debug\_types}, 
+\addtoindex{.debug\_line},
+\addtoindex{.debug\_pubnames}, and 
+\addtoindex{.debug\_pubtypes}) or the length field
 that occurs at the beginning of the CIE and FDE structures
-in the .debug\_frame section.
+in the \addtoindex{.debug\_frame} section.
 
 In an initial length field, the values 0xfffffff0 through
 0xffffffff are reserved by DWARF to indicate some form of
-extension relative to DWARF Version 2; such values must not
+extension relative to \addtoindex{DWARF Version 2}; such values must not
 be interpreted as a length field. The use of one such value,
 0xffffffff, is defined below 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
@@ -119,6 +135,8 @@ is available in the run\dash time linker’s data structures.}
 \section{32-Bit and 64-Bit DWARF Formats}
 \label{datarep:32bitand64bitdwarfformats}
 
+\addtoindexx{32-bit DWARF format}
+\addtoindexx{64-bit DWARF format}
 There are two closely related file formats. In the 32\dash bit DWARF
 format, all values that represent lengths of DWARF sections
 and offsets relative to the beginning of DWARF sections are
@@ -162,19 +180,19 @@ they are 64\dash bit unsigned integer values.
 \begin{center}
 \begin{tabular}{lll}
 Section &Name & Role  \\ \hline
-.debug\_ranges & debug\_info\_offset & offset in .debug\_info \\
-.debug\_frame/CIE & CIE\_id & CIE distinguished value \\
-.debug\_frame/FDE & CIE\_pointer & offset in .debug\_frame \\
-.debug\_info & debug\_abbrev\_offset & offset in .debug\_abbrev \\
-.debug\_line & header\_length & length of header itself \\
-.debug\_pubnames & debug\_info\_offset & offset in .debug\_info \\
-                & debug\_info\_length & length of .debug\_info \\
+\addtoindex{.debug\_ranges} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
+\addtoindex{.debug\_frame}/CIE & \addtoindex{CIE\_id} & CIE distinguished value \\
+\addtoindex{.debug\_frame}/FDE & \addtoindex{CIE\_pointer} & offset in \addtoindex{.debug\_frame} \\
+\addtoindex{.debug\_info} & \addtoindex{debug\_abbrev\_offset} & offset in \addtoindex{.debug\_abbrev} \\
+\addtoindex{.debug\_line} & \addtoindex{header\_length} & length of header itself \\
+\addtoindex{.debug\_pubnames} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
+                & \addtoindex{debug\_info\_length} & length of \addtoindex{.debug\_info} \\
                 &                   & contribution \\
-.debug\_pubtypes & debug\_info\_offset & offset in .debug\_info \\
-                & debug\_info\_length & length of .debug\_info \\
+\addtoindex{.debug\_pubtypes} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
+                & \addtoindex{debug\_info\_length} & length of \addtoindex{.debug\_info} \\
                 &                   & contribution \\
-.debug\_types & debug\_abbrev\_offset & offset in .debug\_info \\
-                & type\_offset & offset in of .debug\_types \\
+\addtoindex{.debug\_types} & \addtoindex{debug\_abbrev\_offset} & offset in \addtoindex{.debug\_info} \\
+                & \addtoindex{type\_offset} & offset in of \addtoindex{.debug\_types} \\
 
 \end{tabular}
 \end{center}
@@ -185,7 +203,7 @@ union must be accessed to distinguish whether a CIE or FDE is
 present, consequently, these two fields must exactly overlay
 each other (both offset and size).}
 
-\item Within the body of the .debug\_info or .debug\_types
+\item Within the body of the \addtoindex{.debug\_info} or \addtoindex{.debug\_types}
 section, certain forms of attribute value depend on the choice
 of DWARF format as follows. For the 32\dash bit DWARF format,
 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
@@ -193,16 +211,18 @@ format, the value is a 64\dash bit unsigned integer.
 \begin{center}
 \begin{tabular}{lll}
 Form & Role  \\ \hline
-DW\_FORM\_ref\_addr& offset in .debug\_info \\
-DW\_FORM\_sec\_offset& offset in a section other than .debug\_info or .debug\_str \\
-DW\_FORM\_strp&offset in .debug\_str \\
-DW\_OP\_call\_ref&offset in .debug\_info \\
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in \addtoindex{.debug\_info} \\
+\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than \addtoindex{.debug\_info} or \addtoindex{.debug\_str} \\
+\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in \addtoindex{.debug\_str} \\
+\livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&offset in \addtoindex{.debug\_info} \\
 \end{tabular}
 \end{center}
 
-\item Within the body of the .debug\_pubnames and
-.debug\_pubtypes sections, the representation of the first field
-of each tuple (which represents an offset in the .debug\_info
+\item Within the body of the \addtoindex{.debug\_pubnames} and
+\addtoindex{.debug\_pubtypes} 
+sections, the representation of the first field
+of each tuple (which represents an offset in the 
+\addtoindex{.debug\_info}
 section) depends on the DWARF format as follows: in the
 32\dash bit DWARF format, this field is a 32\dash bit unsigned integer;
 in the 64\dash bit DWARF format, it is a 64\dash bit unsigned integer.
@@ -243,28 +263,32 @@ executable libraries can still be used.}
 \label{datarep:formatofdebugginginformation}
 
 For each compilation unit compiled with a DWARF producer,
-a contribution is made to the .debug\_info section of
+a contribution is made to the \addtoindex{.debug\_info} section of
 the object file. Each such contribution consists of a
 compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}) 
 followed by a
-single DW\_TAG\_compile\_unit or DW\_TAG\_partial\_unit debugging
+single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
 information entry, together with its children.
 
 For each type defined in a compilation unit, a contribution may
-be made to the .debug\_types section of the object file. Each
+be made to the \addtoindex{.debug\_types} 
+section of the object file. Each
 such contribution consists of a type unit header 
 (see Section \refersec{datarep:typeunitheader}) 
-followed by a DW\_TAG\_type\_unit entry, together with
+followed by a \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} entry, together with
 its children.
 
 Each debugging information entry begins with a code that
-represents an entry in a separate abbreviations table. This
+represents an entry in a separate 
+\addtoindex{abbreviations table}. This
 code is followed directly by a series of attribute values.
 
-The appropriate entry in the abbreviations table guides the
+The appropriate entry in the 
+\addtoindex{abbreviations table} guides the
 interpretation of the information contained directly in the
-.debug\_info or .debug\_types section.
+\addtoindex{.debug\_info} or 
+\addtoindex{.debug\_types} section.
 
 Multiple debugging information entries may share the same
 abbreviation table entry. Each compilation unit is associated
@@ -280,7 +304,8 @@ units may share the same table.
 
 \item unit\_length (initial length) \\
 A 4\dash byte or 12\dash byte unsigned integer representing the length
-of the .debug\_info contribution for that compilation unit,
+of the \addtoindex{.debug\_info}
+contribution for that compilation unit,
 not including the length field itself. In the 32\dash bit DWARF
 format, this is a 4\dash byte unsigned integer (which must be less
 than 0xfffffff0); in the 64\dash bit DWARF format, this consists
@@ -290,12 +315,13 @@ integer that gives the actual length
 
 \item  version (uhalf)
 A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit 
+DWARF information for the compilation unit\addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 The value in this field is 4.
 
-\item debug\_abbrev\_offset (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the .debug\_abbrev
+\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
+A 4\dash byte or 8\dash byte unsigned offset into the 
+\addtoindex{.debug\_abbrev}
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
 the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
@@ -304,7 +330,9 @@ in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
 
 \item address\_size (ubyte) \\
 A 1\dash byte unsigned integer representing the size in bytes of
+\addtoindexx{address\_size}
 an address on the target architecture. If the system uses
+\addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
@@ -318,14 +346,15 @@ offset portion of an address.
 
 The header for the series of debugging information entries
 contributing to the description of a type that has been
-placed in its own type unit, within the .debug\_types section,
+placed in its own type unit, within the 
+\addtoindex{.debug\_types} section,
 consists of the following information:
 
 \begin{enumerate}[1.]
 
 \item unit\_length (initial length) \\
 A 4\dash byte or 12\dash byte unsigned integer representing the length
-of the .debug\_types contribution for that compilation unit,
+of the \addtoindex{.debug\_types} contribution for that compilation unit,
 not including the length field itself. In the 32\dash bit DWARF
 format, this is a 4\dash byte unsigned integer (which must be
 less than 0xfffffff0); in the 64\dash bit DWARF format, this
@@ -335,12 +364,13 @@ consists of the 4\dash byte value 0xffffffff followed by an
 
 \item  version (uhalf)
 A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit 
+DWARF information for the compilation unit\addtoindexx{version number!type unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 The value in this field is 4.
 
-\item debug\_abbrev\_offset (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the .debug\_abbrev
+\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
+A 4\dash byte or 8\dash byte unsigned offset into the 
+\addtoindex{.debug\_abbrev}
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
 the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
@@ -349,7 +379,9 @@ in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
 
 \item address\_size (ubyte) \\
 A 1\dash byte unsigned integer representing the size in bytes of
+\addtoindexx{address\_size}
 an address on the target architecture. If the system uses
+\addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
@@ -358,7 +390,7 @@ offset portion of an address.
 A 64\dash bit unique signature of the type described in this type
 unit.  
 
-\textit{An attribute that refers(using DW\_FORM\_ref\_sig8) to
+\textit{An attribute that refers(using \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) to
 the primary type contained in this type unit uses this value.}
 
 
@@ -397,7 +429,8 @@ null entries.
 
 The abbreviations tables for all compilation units
 are contained in a separate object file section called
-.debug\_abbrev. As mentioned before, multiple compilation
+\addtoindex{.debug\_abbrev}.
+As mentioned before, multiple compilation
 units may share the same abbreviations table.
 
 The abbreviations table for a single compilation unit consists
@@ -406,8 +439,10 @@ specifies the tag and attributes for a particular form of
 debugging information entry. Each declaration begins with
 an unsigned LEB128 number representing the abbreviation
 code itself. It is this code that appears at the beginning
-of a debugging information entry in the .debug\_info or
-.debug\_types section. As described above, the abbreviation
+of a debugging information entry in the 
+\addtoindex{.debug\_info} or
+\addtoindex{.debug\_types}
+section. As described above, the abbreviation
 code 0 is reserved for null debugging information entries. The
 abbreviation code is followed by another unsigned LEB128
 number that encodes the entry’s tag. The encodings for the
@@ -416,11 +451,13 @@ Table \refersec{tab:tagencodings}.
 
 Following the tag encoding is a 1\dash byte value that determines
 whether a debugging information entry using this abbreviation
-has child entries or not. If the value is DW\_CHILDREN\_yes,
+has child entries or not. If the value is 
+\livetarg{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes},
 the next physically succeeding entry of any debugging
 information entry using this abbreviation is the first
 child of that entry. If the 1\dash byte value following the
-abbreviation’s tag encoding is DW\_CHILDREN\_no, the next
+abbreviation’s tag encoding is 
+\livetarg{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}, the next
 physically succeeding entry of any debugging information entry
 using this abbreviation is a sibling of that entry. (Either
 the first child or sibling entries may be null entries). The
@@ -439,11 +476,16 @@ is an unsigned LEB128 number representing the attribute’s
 form. The series of attribute specifications ends with an
 entry containing 0 for the name and 0 for the form.
 
-The attribute form DW\_FORM\_indirect is a special case. For
+The attribute form 
+\livetarg{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect} is a special case. For
 attributes with this form, the attribute value itself in the
-.debug\_info or .debug\_types section begins with an unsigned
+\addtoindex{.debug\_info} or 
+\addtoindex{.debug\_types}
+section begins with an unsigned
 LEB128 number that represents its form. This allows producers
-to choose forms for particular attributes dynamically,
+to choose forms for particular attributes 
+\addtoindexx{abbreviations table!dynamic forms in}
+dynamically,
 without having to add a new entry to the abbreviations table.
 
 The abbreviations for a given compilation unit end with an
@@ -466,53 +508,55 @@ class is a set of forms which have related representations
 and which are given a common interpretation according to the
 attribute in which the form is used.
 
-Form DW\_FORM\_sec\_offset is a member of more than one class,
-namely lineptr, loclistptr, macptr or rangelistptr; the list
+Form \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} is a member of more than one class,
+namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
-\textit{In DWARF V3 the forms DW\_FORM\_data4 and DW\_FORM\_data8 were
-members of either class constant or one of the classes lineptr,
-loclistptr, macptr or rangelistptr, depending on context. In
-DWARF V4 DW\_FORM\_data4 and DW\_FORM\_data8 are members of class
-constant in all cases. The new DW\_FORM\_sec\_offset replaces
+\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
+members of either class constant 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
+DWARF V4 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} are members of class
+constant in all cases. The new \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} replaces
 their usage for the other classes.}
 
 Each possible form belongs to one or more of the following classes:
 
 \begin{itemize}
-\item address \\
+\item \livelinki{chap:DWATaddressclass}{address}{address class} \\
 Represented as an object of appropriate size to hold an
-address on the target machine (DW\_FORM\_addr). The size is
+address on the target machine 
+(\livetarg{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}). 
+The size is
 encoded in the compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}).
 This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object.
 
-\item block \\
+\item \livelink{chap:block}{block} \\
 Blocks come in four forms:
 
 \begin{myindentpara}{1cm}
 A 1\dash byte length followed by 0 to 255 contiguous information
-bytes (DW\_FORM\_block1).
+bytes (\livetarg{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}).
 \end{myindentpara}
 
 \begin{myindentpara}{1cm}
 A 2\dash byte length followed by 0 to 65,535 contiguous information
-bytes (DW\_FORM\_block2).
+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 (DW\_FORM\_block4).
+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 (DW\_FORM\_block).
+specified by the length (\livetarg{chap:DWFORMblock}{DW\-\_FORM\-\_block}).
 \end{myindentpara}
 
 In all forms, the length is the number of information bytes
@@ -523,51 +567,67 @@ debugging information entries or data bytes.
 \item constant \\
 There are six forms of constants. There are fixed length
 constant data forms for one, two, four and eight byte values
-(respectively, DW\_FORM\_data1, DW\_FORM\_data2, DW\_FORM\_data4,
-and DW\_FORM\_data8). There are also variable length constant
+(respectively, 
+\livetarg{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}, 
+\livetarg{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}, 
+\livetarg{chap:DWFORMdata4}{DW\-\_FORM\-\_data4},
+and \livetarg{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}). 
+There are also variable length constant
 data forms encoded using LEB128 numbers (see below). Both
-signed (DW\_FORM\_sdata) and unsigned (DW\_FORM\_udata) variable
+signed (\livetarg{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}) and unsigned 
+(\livetarg{chap:DWFORMudata}{DW\-\_FORM\-\_udata}) variable
 length constants are available
 
-The data in DW\_FORM\_data1, DW\_FORM\_data2, DW\_FORM\_data4 and
-DW\_FORM\_data8 can be anything. Depending on context, it may
+The data in \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}, 
+\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}, 
+\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and
+\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} 
+can be anything. Depending on context, it may
 be a signed integer, an unsigned integer, a floating\dash point
 constant, or anything else. A consumer must use context to
 know how to interpret the bits, which if they are target
 machine data (such as an integer or floating point constant)
 will be in target machine byte\dash order.
 
-\textit{If one of the DW\_FORM\_data<n> forms is used to represent a
+\textit{If one of the \livetarg{chap:DWFORMdata}{DW\-\_FORM\-\_data}<n> forms is used to represent a
 signed or unsigned integer, it can be hard for a consumer
 to discover the context necessary to determine which
 interpretation is intended. Producers are therefore strongly
-encouraged to use DW\_FORM\_sdata or DW\_FORM\_udata for signed and
+encouraged to use \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} or 
+\livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata} for signed and
 unsigned integers respectively, rather than 
-DW\_FORM\_data\textless n \textgreater.}
+\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data} \textless n \textgreater.}
 
 
-\item exprloc \\
+\item \livelink{chap:exprloc}{exprloc} \\
 This is an unsigned LEB128 length followed by the
 number of information bytes specified by the length
-(DW\_FORM\_exprloc). The information bytes contain a DWARF
+(\livetarg{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc}). 
+The information bytes contain a DWARF
 expression 
 (see Section \refersec{chap:dwarfexpressions}) 
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
-\item flag \\
-A flag is represented explicitly as a single byte of data
-(DW\_FORM\_flag) or implicitly (DW\_FORM\_flag\_present). In the
-first case, if the flag has value zero, it indicates the
-absence of the attribute; if the flag has a non\dash zero value,
+\item \livelink{chap:flag}{flag} \\
+A flag \addtoindexx{flag class}
+is represented explicitly as a single byte of data
+(\livetarg{chap:DWFORMflag}{DW\-\_FORM\-\_flag}) or 
+implicitly (\livetarg{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present}). 
+In the
+first case, if the \nolink{flag} has value zero, it indicates the
+absence of the attribute; if the \nolink{flag} has a non\dash zero value,
 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 lineptr \\
-This is an offset into the .debug\_line section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
-beginning of the .debug\_line section to the first byte of
+\item \livelink{chap:lineptr}{lineptr} \\
+This is an offset into the 
+\addtoindex{.debug\_line} section
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+beginning of the 
+\addtoindex{.debug\_line}
+section to the first byte of
 the data making up the line number list for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
@@ -577,10 +637,14 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item loclistptr \\
-This is an offset into the .debug\_loc section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
-beginning of the .debug\_loc section to the first byte of
+\item \livelink{chap:loclistptr}{loclistptr} \\
+This is an offset into the 
+\addtoindex{.debug\_loc}
+section
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+beginning of the 
+\addtoindex{.debug\_loc}
+section to the first byte of
 the data making up the location list for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
@@ -590,10 +654,12 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item macptr \\
-This is an offset into the .debug\_macinfo section
-(DW\_FORM\_sec\_offset). It consists of an offset from the
-beginning of the .debug\_macinfo section to the first byte of
+\item \livelink{chap:macptr}{macptr} \\
+This is an offset into the 
+\addtoindex{.debug\_macinfo} section
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+beginning of the \addtoindex{.debug\_macinfo} 
+section to the first byte of
 the data making up the macro information list for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
@@ -602,11 +668,12 @@ DWARF format, this offset is a 4\dash byte unsigned value;
 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item rangelistptr \\
-This is an offset into the .debug\_ranges section
-(DW\_FORM\_sec\_offset). 
+\item \livelink{chap:rangelistptr}{rangelistptr} \\
+This is an offset into the \addtoindex{.debug\_ranges} section
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
 It consists of an
-offset from the beginning of the .debug\_ranges section
+offset from the beginning of the 
+\addtoindex{.debug\_ranges} section
 to the beginning of the non\dash contiguous address ranges
 information for the referencing entity.  
 It is relocatable in
@@ -617,7 +684,7 @@ format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \end{itemize}
 
-\textit{Because classes lineptr, loclistptr, macptr and rangelistptr
+\textit{Because classes \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} and \livelink{chap:rangelistptr}{rangelistptr}
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
@@ -632,20 +699,26 @@ reference is an offset from the first byte of the compilation
 header for the compilation unit containing the reference. There
 are five forms for this type of reference. There are fixed
 length forms for one, two, four and eight byte offsets
-(respectively, DW\_FORM\_ref1, DW\_FORM\_ref2, DW\_FORM\_ref4,
-and DW\_FORM\_ref8). There is also an unsigned variable
+(respectively, \livetarg{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}, 
+\livetarg{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}, 
+\livetarg{chap:DWFORMref4}{DW\-\_FORM\-\_ref4},
+and \livetarg{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}). 
+There is also an unsigned variable
 length offset encoded form that uses unsigned LEB128 numbers
-(DW\_FORM\_ref\_udata). Because this type of reference is within
+(\livetarg{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}). 
+Because this type of reference is within
 the containing compilation unit no relocation of the value
 is required.
 
 The second type of reference can identify any debugging
-information entry within a .debug\_info section; in particular,
+information entry within a 
+\addtoindex{.debug\_info} section; in particular,
 it may refer to an entry in a different compilation unit
 from the unit containing the reference, and may refer to an
 entry in a different shared object.  This type of reference
-(DW\_FORM\_ref\_addr) is an offset from the beginning of the
-.debug\_info section of the target executable or shared object;
+(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
+\addtoindex{.debug\_info} 
+section of the target executable or shared object;
 it is relocatable in a relocatable object file and frequently
 relocated in an executable file or shared object. For
 references from one shared object or static executable file
@@ -657,19 +730,21 @@ unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 A debugging information entry that may be referenced by
-another compilation unit using DW\_FORM\_ref\_addr must have a
+another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
 global symbolic name.
 
 For a reference from one executable or shared object to
 another, the reference is resolved by the debugger to identify
 the shared object or executable and the offset into that
-object’s .debug\_info section in the same fashion as the run
+object’s \addtoindex{.debug\_info}
+section in the same fashion as the run
 time loader, either when the debug information is first read,
 or when the reference is used.
 
 The third type of reference can identify any debugging
 information type entry that has been placed in its own
-type unit. This type of reference (DW\_FORM\_ref\_sig8) is the
+type unit. This type of 
+reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
 64\dash bit type signature 
 (see Section \refersec{datarep:typesignaturecomputation}) 
 that was computed
@@ -688,15 +763,18 @@ header.
 \item string \\
 A string is a sequence of contiguous non\dash null bytes followed by
 one null byte. A string may be represented immediately in the
-debugging information entry itself (DW\_FORM\_string), or may
+debugging information entry itself 
+(\livetarg{chap:DWFORMstring}{DW\-\_FORM\-\_string}), or may
 be represented as an offset into a string table contained in
-the .debug\_str section of the object file (DW\_FORM\_strp). In
-the 32\dash bit DWARF format, the representation of a DW\_FORM\_strp
+the \addtoindex{.debug\_str} section of the object file 
+(\livetarg{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}). In
+the 32\dash bit DWARF format, the representation of a 
+\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}
 value is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
 it is an 8\dash byte unsigned offset 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-If the DW\_AT\_use\_UTF8 attribute is specified for the
+If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
 compilation unit entry, string values are encoded using the
 UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
 Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
@@ -713,9 +791,9 @@ not. However, the UTF\dash 8 representation is strongly recommended.
 
 \end{itemize}
 
-In no case does an attribute use one of the classes lineptr,
-loclistptr, macptr or rangelistptr to point into either the
-.debug\_info or .debug\_str section.
+In no case does an attribute use one of the classes \livelink{chap:lineptr}{lineptr},
+\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
+\addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
 
 The form encodings are listed in 
 Table \refersec{tab:attributeformencodings}.
@@ -732,70 +810,70 @@ Table \refersec{tab:attributeformencodings}.
 \endfoot
   \hline
 \endlastfoot
-DW\_TAG\_array\_type &0x01 \\
-DW\_TAG\_class\_type&0x02 \\
-DW\_TAG\_entry\_point&0x03 \\
-DW\_TAG\_enumeration\_type&0x04 \\
-DW\_TAG\_formal\_parameter&0x05 \\
-DW\_TAG\_imported\_declaration&0x08 \\
-DW\_TAG\_label&0x0a \\
-DW\_TAG\_lexical\_block&0x0b \\
-DW\_TAG\_member&0x0d \\
-DW\_TAG\_pointer\_type&0x0f \\
-DW\_TAG\_reference\_type&0x10 \\
-DW\_TAG\_compile\_unit&0x11 \\
-DW\_TAG\_string\_type&0x12 \\
-DW\_TAG\_structure\_type&0x13 \\
-DW\_TAG\_subroutine\_type&0x15 \\
-DW\_TAG\_typedef&0x16 \\
-DW\_TAG\_union\_type&0x17 \\
-DW\_TAG\_unspecified\_parameters&0x18  \\
-DW\_TAG\_variant&0x19  \\
-DW\_TAG\_common\_block&0x1a  \\
-DW\_TAG\_common\_inclusion&0x1b  \\
-DW\_TAG\_inheritance&0x1c  \\
-DW\_TAG\_inlined\_subroutine&0x1d  \\
-DW\_TAG\_module&0x1e  \\
-DW\_TAG\_ptr\_to\_member\_type&0x1f  \\
-DW\_TAG\_set\_type&0x20  \\
-DW\_TAG\_subrange\_type&0x21  \\
-DW\_TAG\_with\_stmt&0x22  \\
-DW\_TAG\_access\_declaration&0x23  \\
-DW\_TAG\_base\_type&0x24  \\
-DW\_TAG\_catch\_block&0x25  \\
-DW\_TAG\_const\_type&0x26  \\
-DW\_TAG\_constant&0x27  \\
-DW\_TAG\_enumerator&0x28  \\
-DW\_TAG\_file\_type&0x29  \\
-DW\_TAG\_friend&0x2a  \\
-DW\_TAG\_namelist&0x2b    \\
-DW\_TAG\_namelist\_item&0x2c    \\
-DW\_TAG\_packed\_type&0x2d    \\
-DW\_TAG\_subprogram&0x2e    \\
-DW\_TAG\_template\_type\_parameter&0x2f    \\
-DW\_TAG\_template\_value\_parameter&0x30    \\
-DW\_TAG\_thrown\_type&0x31    \\
-DW\_TAG\_try\_block&0x32    \\
-DW\_TAG\_variant\_part&0x33    \\
-DW\_TAG\_variable&0x34    \\
-DW\_TAG\_volatile\_type&0x35    \\
-DW\_TAG\_dwarf\_procedure&0x36     \\
-DW\_TAG\_restrict\_type&0x37      \\
-DW\_TAG\_interface\_type&0x38      \\
-DW\_TAG\_namespace&0x39      \\
-DW\_TAG\_imported\_module&0x3a      \\
-DW\_TAG\_unspecified\_type&0x3b      \\
-DW\_TAG\_partial\_unit&0x3c      \\
-DW\_TAG\_imported\_unit&0x3d      \\
-DW\_TAG\_condition&0x3f      \\
-DW\_TAG\_shared\_type&0x40      \\
-DW\_TAG\_type\_unit \ddag &0x41      \\
-DW\_TAG\_rvalue\_reference\_type \ddag &0x42      \\
-DW\_TAG\_template\_alias \ddag &0x43      \\
-DW\_TAG\_lo\_user&0x4080      \\
-DW\_TAG\_hi\_user&0xffff      \\
+\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
+\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
+\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
+\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
+\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
+\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
+\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
+\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
+\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
+\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
+\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
+\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
+\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
+\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
+\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
+\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
+\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
+\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
+\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
+\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
+\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
+\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
+\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
+\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
+\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
+\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
+\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
+\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
+\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
+\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
+\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
+\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
+\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
+\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
+\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
+\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
+\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
+\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
+\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
+\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
+\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
+\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
+\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
+\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
+\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
+\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
+\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
+\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
+\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
+\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
 \end{longtable}
-\ddag  TAG new in DWARF Version 4 
+\ddag  TAG new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 
@@ -806,8 +884,8 @@ DW\_TAG\_hi\_user&0xffff      \\
 \label{tab:childdeterminationencodings}
 \begin{tabular}{l|l} \hline
 Child determination name& Value\\ \hline
-DW\_CHILDREN\_no&0x00 \\ 
-DW\_CHILDREN\_yes&0x01 \\ \hline
+\livelink{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}&0x00 \\ 
+\livelink{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes}&0x01 \\ \hline
 \end{tabular}
 \end{figure}
 
@@ -815,7 +893,7 @@ DW\_CHILDREN\_yes&0x01 \\ \hline
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Attribute encodings} \label{tab:attributeencodings} \\
+  \caption{Attribute encodings} \label{tab:attributeencodings} \addtoindexx{attribute encodings} \\
   \hline \\ \bfseries Attribute name&\bfseries Value &\bfseries Classes \\ \hline
 \endfirsthead
   \bfseries Attribute name&\bfseries Value &\bfseries Classes\\ \hline
@@ -824,108 +902,198 @@ DW\_CHILDREN\_yes&0x01 \\ \hline
 \endfoot
   \hline
 \endlastfoot
-DW\_AT\_sibling&0x01&reference \\
-DW\_AT\_location&0x02&exprloc, loclistptr   \\
-DW\_AT\_name&0x03&string   \\
-DW\_AT\_ordering&0x09&constant   \\
-DW\_AT\_byte\_size&0x0b&constant, exprloc, reference   \\
-DW\_AT\_bit\_offset&0x0c&constant, exprloc, reference   \\
-DW\_AT\_bit\_size&0x0d&constant, exprloc, reference   \\
-DW\_AT\_stmt\_list&0x10&lineptr   \\
-DW\_AT\_low\_pc&0x11&address   \\
-DW\_AT\_high\_pc&0x12&address, constant   \\
-DW\_AT\_language&0x13&constant   \\
-DW\_AT\_discr&0x15&reference   \\
-DW\_AT\_discr\_value&0x16&constant   \\
-DW\_AT\_visibility&0x17&constant   \\
-DW\_AT\_import&0x18&reference   \\
-DW\_AT\_string\_length&0x19&exprloc, loclistptr   \\
-DW\_AT\_common\_reference&0x1a&reference   \\
-DW\_AT\_comp\_dir&0x1b&string   \\
-DW\_AT\_const\_value&0x1c&block, constant, string   \\
-DW\_AT\_containing\_type&0x1d&reference     \\
-DW\_AT\_default\_value&0x1e&reference     \\
-DW\_AT\_inline&0x20&constant     \\
-DW\_AT\_is\_optional&0x21&flag     \\
-DW\_AT\_lower\_bound&0x22&constant, exprloc, reference     \\
-DW\_AT\_producer&0x25&string     \\
-DW\_AT\_prototyped&0x27&flag     \\
-DW\_AT\_return\_addr&0x2a&exprloc, loclistptr     \\
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference 
+        \addtoindexx{sibling attribute!encoding} \\
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, 
+        \livelink{chap:loclistptr}{loclistptr}\addtoindex{location attribute!encoding}   \\
+\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string 
+        \addtoindexx{name attribute!encoding} \\
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&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} 
+        \addtoindex{statement list attribute!encoding} \\
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address 
+        \addtoindexx{low PC attribute!encoding}  \\
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant 
+        \addtoindexx{high PC attribute!encoding}  \\
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant 
+        \addtoindexx{language attribute!encoding}  \\
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference 
+        \addtoindexx{discriminant attribute!encoding}  \\
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant 
+        \addtoindexx{discriminant value attribute!encoding}  \\
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant 
+        \addtoindexx{visibility attribute!encoding} \\
+\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&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 
+        \addtoindexx{common reference attribute!encoding}  \\
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string 
+        \addtoindexx{compilation directory attribute!encoding}  \\
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&\livelink{chap:block}{block}, constant, string 
+        \addtoindexx{constant value attribute!encoding} \\
+\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference 
+        \addtoindexx{containing type attribute!encoding} \\
+\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference 
+        \addtoindexx{default value attribute!encoding} \\
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant 
+        \addtoindexx{inlineibute!encoding}  \\
+\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&\livelink{chap:flag}{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} 
+        \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}  \\
 % FIXME: lower case , not Constant
-DW\_AT\_start\_scope&0x2c&Constant, rangelistptr     \\
-DW\_AT\_bit\_stride&0x2e&constant, exprloc, reference     \\
-DW\_AT\_upper\_bound&0x2f&constant, exprloc, reference     \\
-DW\_AT\_abstract\_origin&0x31&reference     \\
-DW\_AT\_accessibility&0x32&constant     \\
-DW\_AT\_address\_class&0x33&constant     \\
-DW\_AT\_artificial&0x34&flag     \\
-DW\_AT\_base\_types&0x35&reference     \\
-DW\_AT\_calling\_convention&0x36&constant     \\
-DW\_AT\_count&0x37&constant, exprloc, reference     \\
-DW\_AT\_data\_member\_location&0x38&constant, exprloc, loclistptr     \\
-DW\_AT\_decl\_column&0x39&constant     \\
-DW\_AT\_decl\_file&0x3a&constant     \\
-DW\_AT\_decl\_line&0x3b&constant     \\
-DW\_AT\_declaration&0x3c&flag     \\
-DW\_AT\_discr\_list&0x3d&block     \\
-DW\_AT\_encoding&0x3e&constant     \\
-DW\_AT\_external&0x3f&flag     \\
-DW\_AT\_frame\_base&0x40&exprloc, loclistptr     \\
-DW\_AT\_friend&0x41&reference     \\
-DW\_AT\_identifier\_case&0x42&constant    \\
-DW\_AT\_macro\_info&0x43&macptr    \\
-DW\_AT\_namelist\_item&0x44&reference    \\
-DW\_AT\_priority&0x45&reference    \\
-DW\_AT\_segment&0x46&exprloc, loclistptr    \\
-DW\_AT\_specification&0x47&reference    \\
-DW\_AT\_static\_link&0x48&exprloc, loclistptr    \\
-DW\_AT\_type&0x49&reference    \\
-DW\_AT\_use\_location&0x4a&exprloc, loclistptr    \\
-DW\_AT\_variable\_parameter&0x4b&flag    \\
-DW\_AT\_virtuality&0x4c&constant    \\
-DW\_AT\_vtable\_elem\_location&0x4d&exprloc, loclistptr    \\
-
-
-DW\_AT\_allocated&0x4e&constant, exprloc, reference     \\
-DW\_AT\_associated&0x4f&constant, exprloc, reference     \\
-DW\_AT\_data\_location&0x50&exprloc     \\
-DW\_AT\_byte\_stride&0x51&constant, exprloc, reference     \\
-DW\_AT\_entry\_pc&0x52&address     \\
-DW\_AT\_use\_UTF8&0x53&flag     \\
-DW\_AT\_extension&0x54&reference     \\
-DW\_AT\_ranges&0x55&rangelistptr     \\
-DW\_AT\_trampoline&0x56&address, flag, reference, string     \\
-DW\_AT\_call\_column&0x57&constant     \\
-DW\_AT\_call\_file&0x58&constant     \\
-DW\_AT\_call\_line&0x59&constant     \\
-DW\_AT\_description&0x5a&string     \\
-DW\_AT\_binary\_scale&0x5b&constant     \\
-DW\_AT\_decimal\_scale&0x5c&constant     \\
-DW\_AT\_small &0x5d&reference     \\
-DW\_AT\_decimal\_sign&0x5e&constant     \\
-DW\_AT\_digit\_count&0x5f&constant     \\
-DW\_AT\_picture\_string&0x60&string      \\
-DW\_AT\_mutable&0x61&flag     \\
-
-
-DW\_AT\_threads\_scaled&0x62&flag     \\
-DW\_AT\_explicit&0x63&flag     \\
-DW\_AT\_object\_pointer&0x64&reference     \\
-DW\_AT\_endianity&0x65&constant     \\
-DW\_AT\_elemental&0x66&flag     \\
-DW\_AT\_pure&0x67&flag     \\
-DW\_AT\_recursive&0x68&flag     \\
-DW\_AT\_signature \ddag &0x69&reference     \\ 
-DW\_AT\_main\_subprogram \ddag &0x6a&flag     \\
-DW\_AT\_data\_bit\_offset \ddag &0x6b&constant     \\
-DW\_AT\_const\_expr \ddag &0x6c&flag     \\
-DW\_AT\_enum\_class \ddag &0x6d&flag     \\
-DW\_AT\_linkage\_name \ddag &0x6e&string     \\
-DW\_AT\_lo\_user&0x2000 & ---     \\
-DW\_AT\_hi\_user&0x3fff& ---     \\
+\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 
+        \addtoindexx{abstract origin attribute!encoding}  \\
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant 
+        \addtoindexx{accessibility attribute!encoding}  \\
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant 
+        \addtoindexx{address class atribute!encoding}  \\
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&\livelink{chap:flag}{flag} 
+        \addtoindexx{artificial attribute!encoding}  \\
+\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference 
+        \addtoindexx{base types attribute!encoding}  \\
+\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant 
+        \addtoindexx{calling convention attribute!encoding} \\
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference 
+        \addtoindexx{count attribute!encoding}  \\
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, 
+        \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} 
+        \addtoindexx{data member attribute!encoding}  \\
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant 
+        \addtoindexx{declaration column attribute!encoding}  \\
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant 
+        \addtoindexx{declaration file attribute!encoding}  \\
+\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant 
+        \addtoindexx{declaration line attribute!encoding}  \\
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&\livelink{chap:flag}{flag} 
+        \addtoindexx{declaration attribute!encoding}  \\
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block} 
+        \addtoindexx{discriminant list attribute!encoding}  \\
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant 
+        \addtoindexx{encoding attribute!encoding}  \\
+\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{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 
+        \addtoindexx{friend attribute!encoding}  \\
+\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant 
+        \addtoindexx{identifier case attribute!encoding}  \\
+\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr} 
+        \addtoindexx{macro information attribute!encoding}  \\
+\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference 
+        \addtoindexx{name list item attribute!encoding}  \\
+\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&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 
+        \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 
+        \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} 
+        \addtoindexx{variable parameter attribute!encoding}  \\
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&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} 
+        \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 
+        \addtoindexx{entry pc attribute!encoding}  \\
+\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&\livelink{chap:flag}{flag} 
+        \addtoindexx{use UTF8 attribute!encoding}  \\
+\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference 
+        \addtoindexx{extension attribute!encoding}  \\
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{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 
+        \addtoindexx{call column attribute!encoding}  \\
+\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant 
+        \addtoindexx{call file attribute!encoding}  \\
+\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant 
+        \addtoindexx{call line attribute!encoding}  \\
+\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string 
+        \addtoindexx{description attribute!encoding}  \\
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant 
+        \addtoindexx{binary scale attribute!encoding}  \\
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant 
+        \addtoindexx{decimal scale attribute!encoding}  \\
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference 
+        \addtoindexx{small attribute!encoding}  \\
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant 
+        \addtoindexx{decimal scale attribute!encoding}  \\
+\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant 
+        \addtoindexx{digit count attribute!encoding}  \\
+\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string 
+        \addtoindexx{picture string attribute!encoding}  \\
+\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&\livelink{chap:flag}{flag} 
+        \addtoindexx{mutable attribute!encoding}  \\
+
+\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&\livelink{chap:flag}{flag} 
+        \addtoindexx{thread scaled attribute!encoding}  \\
+\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&\livelink{chap:flag}{flag} 
+        \addtoindexx{explicit attribute!encoding}  \\
+\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference 
+        \addtoindexx{object pointer attribute!encoding}  \\
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant 
+        \addtoindexx{endianity attribute!encoding}  \\
+\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&\livelink{chap:flag}{flag} 
+        \addtoindexx{elemental attribute!encoding}  \\
+\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&\livelink{chap:flag}{flag} 
+        \addtoindexx{pure attribute!encoding}  \\
+\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&\livelink{chap:flag}{flag} 
+        \addtoindexx{recursive attribute!encoding}  \\
+\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference 
+        \addtoindexx{signature attribute!encoding}  \\ 
+\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag} 
+        \addtoindexx{main subprogram attribute!encoding}  \\
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant 
+        \addtoindexx{data bit offset attribute!encoding}  \\
+\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&\livelink{chap:flag}{flag} 
+        \addtoindexx{constant expression attribute!encoding}  \\
+\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&\livelink{chap:flag}{flag} 
+        \addtoindexx{enumeration class attribute!encoding}  \\
+\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string 
+        \addtoindexx{linkage name attribute!encoding}  \\
+\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
+\livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding}  \\
 
 \end{longtable}
-\ddag  Attribute new in DWARF Version 4 
+\ddag  Attribute new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \begin{centering}
@@ -940,38 +1108,40 @@ DW\_AT\_hi\_user&0x3fff& ---     \\
 \endfoot
   \hline
 \endlastfoot
-DW\_FORM\_addr&0x01&address  \\
-DW\_FORM\_block2&0x03&block \\
-DW\_FORM\_block4&0x04&block  \\
-DW\_FORM\_data2&0x05&constant \\
-DW\_FORM\_data4&0x06&constant \\
-DW\_FORM\_data8&0x07&constant \\
-DW\_FORM\_string&0x08&string \\
-DW\_FORM\_block&0x09&block \\
-DW\_FORM\_block1&0x0a&block \\
-DW\_FORM\_data1&0x0b&constant \\
-DW\_FORM\_flag&0x0c&flag \\
-DW\_FORM\_sdata&0x0d&constant    \\
-DW\_FORM\_strp&0x0e&string         \\
-DW\_FORM\_udata&0x0f&constant         \\
-DW\_FORM\_ref\_addr&0x10&reference         \\
-DW\_FORM\_ref1&0x11&reference          \\
-DW\_FORM\_ref2&0x12&reference         \\
-DW\_FORM\_ref4&0x13&reference         \\
-DW\_FORM\_ref8&0x14&reference \\
-DW\_FORM\_ref\_udata&0x15&reference  \\
-DW\_FORM\_indirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-DW\_FORM\_sec\_offset \ddag &0x17&lineptr, loclistptr, macptr, rangelistptr \\
-DW\_FORM\_exprloc \ddag &0x18&exprloc \\
-DW\_FORM\_flag\_present \ddag &0x19&flag \\
-DW\_FORM\_ref\_sig8 \ddag &0x20&reference \\
+\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: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 \\
  
 \end{longtable}
-\ddag  FORM new in DWARF Version 4 
+\ddag  FORM new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
+\addtoindexx{variable length data|see {LEB128}}
+\addtoindexx{LEB128 encoding}
 Integers may be encoded using ``Little Endian Base 128''
 (LEB128) numbers. LEB128 is a scheme for encoding integers
 densely that exploits the assumption that most integers are
@@ -1026,7 +1196,7 @@ gives algorithms for encoding and decoding these forms.
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Examples of unsigned LEB32 encodings} \label{tab:examplesofunsignedleb128encodings} \\
+  \caption{Examples of unsigned LEB128 encodings} \label{tab:examplesofunsignedleb128encodings} \\
   \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
@@ -1041,7 +1211,7 @@ gives algorithms for encoding and decoding these forms.
 129& 1 + 0x80 & 1 \\
 130& 2 + 0x80 & 1 \\
 12857& 57 + 0x80 & 100 \\
-
+\addtoindex{LEB128 encoding!examples}
 \end{longtable}
 \end{centering}
 
@@ -1050,7 +1220,7 @@ gives algorithms for encoding and decoding these forms.
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Examples of signed LEB32 encodings} \label{tab:examplesofsignedleb128encodings} \\
+  \caption{Examples of signed LEB128 encodings} \label{tab:examplesofsignedleb128encodings} \\
   \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
@@ -1078,7 +1248,9 @@ gives algorithms for encoding and decoding these forms.
 \subsection{DWARF Expressions}
 \label{datarep:dwarfexpressions}
 
-A DWARF expression is stored in a block of contiguous
+A 
+\addtoindexx{DWARF Expression!operator encoding}
+DWARF expression is stored in a \nolink{block} of contiguous
 bytes. The bytes form a sequence of operations. Each operation
 is a 1\dash byte code that identifies that operation, followed by
 zero or more bytes of additional data. The encodings for the
@@ -1100,98 +1272,98 @@ Table \refersec{tab:dwarfoperationencodings}.
   \hline
 \endlastfoot
 
-DW\_OP\_addr&0x03&1 & constant address  \\ 
+\livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
 & & &(size target specific) \\
 
-DW\_OP\_deref&0x06&0 & \\
-
-
-DW\_OP\_const1u&0x08&1&1\dash byte constant  \\
-DW\_OP\_const1s&0x09&1&1\dash byte constant   \\
-DW\_OP\_const2u&0x0a&1&2\dash byte constant   \\
-DW\_OP\_const2s&0x0b&1&2\dash byte constant   \\
-DW\_OP\_const4u&0x0c&1&4\dash byte constant    \\
-DW\_OP\_const4s&0x0d&1&4\dash byte constant   \\
-DW\_OP\_const8u&0x0e&1&8\dash byte constant   \\
-DW\_OP\_const8s&0x0f&1&8\dash byte constant   \\
-DW\_OP\_constu&0x10&1&ULEB128 constant   \\
-DW\_OP\_consts&0x11&1&SLEB128 constant   \\
-DW\_OP\_dup&0x12&0 &   \\
-DW\_OP\_drop&0x13&0  &   \\
-DW\_OP\_over&0x14&0 &   \\
-DW\_OP\_pick&0x15&1&1\dash byte stack index   \\
-DW\_OP\_swap&0x16&0 &   \\
-DW\_OP\_rot&0x17&0 &   \\
-DW\_OP\_xderef&0x18&0 &   \\
-DW\_OP\_abs&0x19&0 &   \\
-DW\_OP\_and&0x1a&0 &   \\
-DW\_OP\_div&0x1b&0 &   \\
-
-
-
-DW\_OP\_minus&0x1c&0 & \\
-DW\_OP\_mod&0x1d&0 & \\
-DW\_OP\_mul&0x1e&0 & \\
-DW\_OP\_neg&0x1f&0 & \\
-DW\_OP\_not&0x20&0 & \\
-DW\_OP\_or&0x21&0 & \\
-DW\_OP\_plus&0x22&0 & \\
-DW\_OP\_plus\_uconst&0x23&1&ULEB128 addend \\
-DW\_OP\_shl&0x24&0 & \\
-DW\_OP\_shr&0x25&0 & \\
-DW\_OP\_shra&0x26&0 & \\
-DW\_OP\_xor&0x27&0 & \\
-DW\_OP\_skip&0x2f&1&signed 2\dash byte constant \\
-DW\_OP\_bra&0x28&1 & signed 2\dash byte constant \\
-DW\_OP\_eq&0x29&0 & \\
-DW\_OP\_ge&0x2a&0 & \\
-DW\_OP\_gt&0x2b&0 & \\
-DW\_OP\_le&0x2c&0 & \\
-DW\_OP\_lt&0x2d&0  & \\
-DW\_OP\_ne&0x2e&0 & \\ \hline
-
-
-
-DW\_OP\_lit0&0x30 & 0 & \\
-
-DW\_OP\_lit1&0x31 & 0& literals 0 .. 31 = \\
-\ldots & & & (DW\_OP\_lit0 + literal) \\
-DW\_OP\_lit31&0x4f & 0 & \\ \hline
-
-DW\_OP\_reg0 & 0x50 & 0 & \\
-DW\_OP\_reg1 & 0x51 & 0&reg 0 .. 31 = \\
-\ldots & & & (DW\_OP\_reg0 + regnum) \\
-DW\_OP\_reg31 & 0x6f & 0 & \\ \hline
-
-DW\_OP\_breg0 & 0x70 &1 & SLEB128 offset \\
-DW\_OP\_breg1 & 0x71 & 1 &base register 0 .. 31 = \\
-... & &              &(DW\_OP\_breg0 + regnum) \\
-DW\_OP\_breg31 & 0x8f & 1 & \\ \hline
-
-DW\_OP\_regx & 0x90 &1&ULEB128 register \\
-DW\_OP\_fbreg & 0x91&1&SLEB128 offset \\
-DW\_OP\_bregx & 0x92&2 &ULEB128 register followed \\
+\livelink{chap:DWOPderef}{DW\-\_OP\-\_deref}&0x06&0 & \\
+
+
+\livelink{chap:DWOPconst1u}{DW\-\_OP\-\_const1u}&0x08&1&1\dash byte constant  \\
+\livelink{chap:DWOPconst1s}{DW\-\_OP\-\_const1s}&0x09&1&1\dash byte constant   \\
+\livelink{chap:DWOPconst2u}{DW\-\_OP\-\_const2u}&0x0a&1&2\dash byte constant   \\
+\livelink{chap:DWOPconst2s}{DW\-\_OP\-\_const2s}&0x0b&1&2\dash byte constant   \\
+\livelink{chap:DWOPconst4u}{DW\-\_OP\-\_const4u}&0x0c&1&4\dash byte constant    \\
+\livelink{chap:DWOPconst4s}{DW\-\_OP\-\_const4s}&0x0d&1&4\dash byte constant   \\
+\livelink{chap:DWOPconst8u}{DW\-\_OP\-\_const8u}&0x0e&1&8\dash byte constant   \\
+\livelink{chap:DWOPconst8s}{DW\-\_OP\-\_const8s}&0x0f&1&8\dash byte constant   \\
+\livelink{chap:DWOPconstu}{DW\-\_OP\-\_constu}&0x10&1&ULEB128 constant   \\
+\livelink{chap:DWOPconsts}{DW\-\_OP\-\_consts}&0x11&1&SLEB128 constant   \\
+\livelink{chap:DWOPdup}{DW\-\_OP\-\_dup}&0x12&0 &   \\
+\livelink{chap:DWOPdrop}{DW\-\_OP\-\_drop}&0x13&0  &   \\
+\livelink{chap:DWOPover}{DW\-\_OP\-\_over}&0x14&0 &   \\
+\livelink{chap:DWOPpick}{DW\-\_OP\-\_pick}&0x15&1&1\dash byte stack index   \\
+\livelink{chap:DWOPswap}{DW\-\_OP\-\_swap}&0x16&0 &   \\
+\livelink{chap:DWOProt}{DW\-\_OP\-\_rot}&0x17&0 &   \\
+\livelink{chap:DWOPxderef}{DW\-\_OP\-\_xderef}&0x18&0 &   \\
+\livelink{chap:DWOPabs}{DW\-\_OP\-\_abs}&0x19&0 &   \\
+\livelink{chap:DWOPand}{DW\-\_OP\-\_and}&0x1a&0 &   \\
+\livelink{chap:DWOPdiv}{DW\-\_OP\-\_div}&0x1b&0 &   \\
+
+
+
+\livelink{chap:DWOPminus}{DW\-\_OP\-\_minus}&0x1c&0 & \\
+\livelink{chap:DWOPmod}{DW\-\_OP\-\_mod}&0x1d&0 & \\
+\livelink{chap:DWOPmul}{DW\-\_OP\-\_mul}&0x1e&0 & \\
+\livelink{chap:DWOPneg}{DW\-\_OP\-\_neg}&0x1f&0 & \\
+\livelink{chap:DWOPnot}{DW\-\_OP\-\_not}&0x20&0 & \\
+\livelink{chap:DWOPor}{DW\-\_OP\-\_or}&0x21&0 & \\
+\livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}&0x22&0 & \\
+\livelink{chap:DWOPplusuconst}{DW\-\_OP\-\_plus\-\_uconst}&0x23&1&ULEB128 addend \\
+\livelink{chap:DWOPshl}{DW\-\_OP\-\_shl}&0x24&0 & \\
+\livelink{chap:DWOPshr}{DW\-\_OP\-\_shr}&0x25&0 & \\
+\livelink{chap:DWOPshra}{DW\-\_OP\-\_shra}&0x26&0 & \\
+\livelink{chap:DWOPxor}{DW\-\_OP\-\_xor}&0x27&0 & \\
+\livelink{chap:DWOPskip}{DW\-\_OP\-\_skip}&0x2f&1&signed 2\dash byte constant \\
+\livelink{chap:DWOPbra}{DW\-\_OP\-\_bra}&0x28&1 & signed 2\dash byte constant \\
+\livelink{chap:DWOPeq}{DW\-\_OP\-\_eq}&0x29&0 & \\
+\livelink{chap:DWOPge}{DW\-\_OP\-\_ge}&0x2a&0 & \\
+\livelink{chap:DWOPgt}{DW\-\_OP\-\_gt}&0x2b&0 & \\
+\livelink{chap:DWOPle}{DW\-\_OP\-\_le}&0x2c&0 & \\
+\livelink{chap:DWOPlt}{DW\-\_OP\-\_lt}&0x2d&0  & \\
+\livelink{chap:DWOPne}{DW\-\_OP\-\_ne}&0x2e&0 & \\ \hline
+
+
+
+\livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0}&0x30 & 0 & \\
+
+\livelink{chap:DWOPlit1}{DW\-\_OP\-\_lit1}&0x31 & 0& literals 0 .. 31 = \\
+\ldots & & & (\livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0} + literal) \\
+\livelink{chap:DWOPlit31}{DW\-\_OP\-\_lit31}&0x4f & 0 & \\ \hline
+
+\livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} & 0x50 & 0 & \\
+\livelink{chap:DWOPreg1}{DW\-\_OP\-\_reg1} & 0x51 & 0&reg 0 .. 31 = \\
+\ldots & & & (\livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} + regnum) \\
+\livelink{chap:DWOPreg31}{DW\-\_OP\-\_reg31} & 0x6f & 0 & \\ \hline
+
+\livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} & 0x70 &1 & SLEB128 offset \\
+\livelink{chap:DWOPbreg1}{DW\-\_OP\-\_breg1} & 0x71 & 1 &base register 0 .. 31 = \\
+... & &              &(\livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} + regnum) \\
+\livelink{chap:DWOPbreg31}{DW\-\_OP\-\_breg31} & 0x8f & 1 & \\ \hline
+
+\livelink{chap:DWOPregx}{DW\-\_OP\-\_regx} & 0x90 &1&ULEB128 register \\
+\livelink{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} & 0x91&1&SLEB128 offset \\
+\livelink{chap:DWOPbregx}{DW\-\_OP\-\_bregx} & 0x92&2 &ULEB128 register followed \\
 & & & by SLEB128 offset \\
-DW\_OP\_piece & 0x93 &1& ULEB128 size of piece addressed \\
-DW\_OP\_deref\_size & 0x94 &1& 1-byte size of data retrieved \\
-DW\_OP\_xderef\_size & 0x95&1&1-byte size of data retrieved \\
-DW\_OP\_nop & 0x96 &0& \\
+\livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} & 0x93 &1& ULEB128 size of piece addressed \\
+\livelink{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} & 0x94 &1& 1-byte size of data retrieved \\
+\livelink{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size} & 0x95&1&1-byte size of data retrieved \\
+\livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} & 0x96 &0& \\
 
 
-DW\_OP\_push\_object\_address&0x97&0 &  \\
-DW\_OP\_call2&0x98&1& 2\dash byte offset of DIE \\
-DW\_OP\_call4&0x99&1& 4\dash byte offset of DIE \\
-DW\_OP\_call\_ref&0x9a&1& 4\dash\  or 8\dash byte\\
+\livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}&0x97&0 &  \\
+\livelink{chap:DWOPcall2}{DW\-\_OP\-\_call2}&0x98&1& 2\dash byte offset of DIE \\
+\livelink{chap:DWOPcall4}{DW\-\_OP\-\_call4}&0x99&1& 4\dash byte offset of DIE \\
+\livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&0x9a&1& 4\dash\  or 8\dash byte\\
      &&& offset of DIE \\
-DW\_OP\_form\_tls\_address&0x9b &0& \\
-DW\_OP\_call\_frame\_cfa &0x9c &0& \\
-DW\_OP\_bit\_piece&0x9d &2&ULEB128 size followed by \\
+\livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address}&0x9b &0& \\
+\livelink{chap:DWOPcallframecfa}{DW\-\_OP\-\_call\-\_frame\-\_cfa} &0x9c &0& \\
+\livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece}&0x9d &2&ULEB128 size followed by \\
 &&&ULEB128 offset\\
-DW\_OP\_implicit\_value&0x9e &2&ULEB128 size followed by \\
-&&&block of that size\\
-DW\_OP\_stack\_value\_cfa &0x9f &0& \\
-DW\_OP\_lo\_user\_cfa &0xe0 && \\
-DW\_OP\_hi\_user\_cfa &0xff && \\
+\livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value}&0x9e &2&ULEB128 size followed by \\
+&&&\nolink{block} of that size\\
+\livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} &0x9f &0& \\
+\livetarg{chap:DWOPlouser}{DW\-\_OP\-\_lo\-\_user} &0xe0 && \\
+\livetarg{chap:DWOPhiuser}{DW\-\_OP\-\_hi\-\_user} &0xff && \\
 
 \end{longtable}
 \end{centering}
@@ -1207,7 +1379,9 @@ location of a variable or other entity.
 \label{datarep:locationlists}
 
 Each entry in a location list is either a location list entry,
-a base address selection entry, or an end of list entry.
+a base address selection entry, or an 
+\addtoindex{end of list entry!in location list}
+end of list entry.
 
 A location list entry consists of two address offsets followed
 by a 2\dash byte length, followed by a block of contiguous bytes
@@ -1215,18 +1389,26 @@ 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.
 
-A base address selection entry and an end of list entry each
+A base address selection entry and an 
+\addtoindex{end of list entry!in location list}
+end of list entry each
 consist of two (constant or relocated) address offsets. The two
 offsets are the same size as an address on the target machine.
 
 For a location list to be specified, the base address of
+\addtoindexx{base address selection entry!in location list}
 the corresponding compilation unit must be defined 
 (see Section  \refersec{chap:normalandpartialcompilationunitentries}).
 
 \section{Base Type Attribute Encodings}
 \label{datarep:basetypeattributeencodings}
 
-The encodings of the constants used in the DW\_AT\_encoding
+The encodings of the 
+\hypertarget{chap:DWATencodingencodingofbasetype}
+constants used in 
+\addtoindexx{encoding attribute!encoding}
+the 
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
 attribute are given in 
 Table \refersec{tab:basetypeencodingvalues}
 
@@ -1243,32 +1425,32 @@ Table \refersec{tab:basetypeencodingvalues}
   \hline
 \endlastfoot
 
-DW\_ATE\_address&0x01 \\
-DW\_ATE\_boolean&0x02 \\
-DW\_ATE\_complex\_float&0x03 \\
-DW\_ATE\_float&0x04 \\
-DW\_ATE\_signed&0x05 \\
-DW\_ATE\_signed\_char&0x06 \\
-DW\_ATE\_unsigned&0x07 \\
-DW\_ATE\_unsigned\_char&0x08 \\
-DW\_ATE\_imaginary\_float&0x09 \\
-DW\_ATE\_packed\_decimal&0x0a \\
-DW\_ATE\_numeric\_string&0x0b \\
-DW\_ATE\_edited&0x0c \\
-DW\_ATE\_signed\_fixed&0x0d \\
-DW\_ATE\_unsigned\_fixed&0x0e \\
-DW\_ATE\_decimal\_float & 0x0f \\
-DW\_ATE\_UTF \ddag & 0x10 \\
-DW\_ATE\_lo\_user & 0x80 \\
-DW\_ATE\_hi\_user & 0xff \\
+\livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
+\livelink{chap:DWATEboolean}{DW\-\_ATE\-\_boolean}&0x02 \\
+\livelink{chap:DWATEcomplexfloat}{DW\-\_ATE\-\_complex\-\_float}&0x03 \\
+\livelink{chap:DWATEfloat}{DW\-\_ATE\-\_float}&0x04 \\
+\livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}&0x05 \\
+\livelink{chap:DWATEsignedchar}{DW\-\_ATE\-\_signed\-\_char}&0x06 \\
+\livelink{chap:DWATEunsigned}{DW\-\_ATE\-\_unsigned}&0x07 \\
+\livelink{chap:DWATEunsignedchar}{DW\-\_ATE\-\_unsigned\-\_char}&0x08 \\
+\livelink{chap:DWATEimaginaryfloat}{DW\-\_ATE\-\_imaginary\-\_float}&0x09 \\
+\livelink{chap:DWATEpackeddecimal}{DW\-\_ATE\-\_packed\-\_decimal}&0x0a \\
+\livelink{chap:DWATEnumericstring}{DW\-\_ATE\-\_numeric\-\_string}&0x0b \\
+\livelink{chap:DWATEedited}{DW\-\_ATE\-\_edited}&0x0c \\
+\livelink{chap:DWATEsignedfixed}{DW\-\_ATE\-\_signed\-\_fixed}&0x0d \\
+\livelink{chap:DWATEunsignedfixed}{DW\-\_ATE\-\_unsigned\-\_fixed}&0x0e \\
+\livelink{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} & 0x0f \\
+\livelink{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} \ddag & 0x10 \\
+\livetarg{chap:DWATElouser}{DW\-\_ATE\-\_lo\-\_user} & 0x80 \\
+\livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
-\ddag  Base type encoding new in DWARF Version 4
+\ddag  Base type encoding new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 
 The encodings of the constants used in the 
-DW\_AT\_decimal\_sign attribute 
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute 
 are given in 
 Table \refersec{tab:decimalsignencodings}.
 
@@ -1286,17 +1468,17 @@ Table \refersec{tab:decimalsignencodings}.
   \hline
 \endlastfoot
 
-DW\_DS\_unsigned & 0x01  \\
-DW\_DS\_leading\_overpunch & 0x02  \\
-DW\_DS\_trailing\_overpunch & 0x03  \\
-DW\_DS\_leading\_separate & 0x04  \\
-DW\_DS\_trailing\_separate & 0x05  \\
+\livelink{chap:DWDSunsigned}{DW\-\_DS\-\_unsigned} & 0x01  \\
+\livelink{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & 0x02  \\
+\livelink{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & 0x03  \\
+\livelink{chap:DWDSleadingseparate}{DW\-\_DS\-\_leading\-\_separate} & 0x04  \\
+\livelink{chap:DWDStrailingseparate}{DW\-\_DS\-\_trailing\-\_separate} & 0x05  \\
 
 \end{longtable}
 \end{centering}
 
 The encodings of the constants used in the 
-DW\_AT\_endianity attribute are given in 
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute are given in 
 Table \refersec{tab:endianityencodings}.
 
 \begin{centering}
@@ -1312,19 +1494,22 @@ Table \refersec{tab:endianityencodings}.
   \hline
 \endlastfoot
 
-DW\_END\_default  & 0x00 \\
-DW\_END\_big & 0x01 \\
-DW\_END\_little & 0x02 \\
-DW\_END\_lo\_user & 0x40 \\
-DW\_END\_hi\_user & 0xff \\
+\livelink{chap:DWENDdefault}{DW\-\_END\-\_default}  & 0x00 \\
+\livelink{chap:DWENDbig}{DW\-\_END\-\_big} & 0x01 \\
+\livelink{chap:DWENDlittle}{DW\-\_END\-\_little} & 0x02 \\
+\livetarg{chap:DWENDlouser}{DW\-\_END\-\_lo\-\_user} & 0x40 \\
+\livetarg{chap:DWENDhiuser}{DW\-\_END\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
 \end{centering}
 
 \section{Accessibility Codes}
 \label{datarep:accessibilitycodes}
-The encodings of the constants used in the DW\_AT\_accessibility
-attribute are given in 
+The encodings of the constants used in the 
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+attribute 
+\addtoindexx{accessibility attribute!encoding}
+are given in 
 Table \refersec{tab:accessibilityencodings}.
 
 \begin{centering}
@@ -1340,9 +1525,9 @@ Table \refersec{tab:accessibilityencodings}.
   \hline
 \endlastfoot
 
-DW\_ACCESS\_public&0x01  \\
-DW\_ACCESS\_protected&0x02 \\
-DW\_ACCESS\_private&0x03 \\
+\livelink{chap:DWACCESSpublic}{DW\-\_ACCESS\-\_public}&0x01  \\
+\livelink{chap:DWACCESSprotected}{DW\-\_ACCESS\-\_protected}&0x02 \\
+\livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}&0x03 \\
 
 \end{longtable}
 \end{centering}
@@ -1351,7 +1536,7 @@ DW\_ACCESS\_private&0x03 \\
 \section{Visibility Codes}
 \label{datarep:visibilitycodes}
 The encodings of the constants used in the 
-DW\_AT\_visibility attribute are given in 
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute are given in 
 Table \refersec{tab:visibilityencodings}. 
 
 \begin{centering}
@@ -1367,9 +1552,9 @@ Table \refersec{tab:visibilityencodings}.
   \hline
 \endlastfoot
 
-DW\_VIS\_local&0x01 \\
-DW\_VIS\_exported&0x02 \\
-DW\_VIS\_qualified&0x03 \\
+\livelink{chap:DWVISlocal}{DW\-\_VIS\-\_local}&0x01 \\
+\livelink{chap:DWVISexported}{DW\-\_VIS\-\_exported}&0x02 \\
+\livelink{chap:DWVISqualified}{DW\-\_VIS\-\_qualified}&0x03 \\
 
 \end{longtable}
 \end{centering}
@@ -1378,7 +1563,7 @@ DW\_VIS\_qualified&0x03 \\
 \label{datarep:vitualitycodes}
 
 The encodings of the constants used in the 
-DW\_AT\_virtuality attribute are given in 
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute are given in 
 Table \refersec{tab:virtualityencodings}.
 
 \begin{centering}
@@ -1394,9 +1579,9 @@ Table \refersec{tab:virtualityencodings}.
   \hline
 \endlastfoot
 
-DW\_VIRTUALITY\_none&0x00 \\
-DW\_VIRTUALITY\_virtual&0x01 \\
-DW\_VIRTUALITY\_pure\_virtual&0x02 \\
+\livelink{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none}&0x00 \\
+\livelink{chap:DWVIRTUALITYvirtual}{DW\-\_VIRTUALITY\-\_virtual}&0x01 \\
+\livelink{chap:DWVIRTUALITYpurevirtual}{DW\-\_VIRTUALITY\-\_pure\-\_virtual}&0x02 \\
 
 
 
@@ -1404,14 +1589,14 @@ DW\_VIRTUALITY\_pure\_virtual&0x02 \\
 \end{centering}
 
 The value 
-DW\_VIRTUALITY\_none is equivalent to the absence of the 
-DW\_AT\_virtuality
+\livelink{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none} is equivalent to the absence of the 
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
 attribute.
 
 \section{Source Languages}
 \label{datarep:sourcelanguages}
 
-The encodings of the constants used in the DW\_AT\_language
+The encodings of the constants used in the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
 attribute are given in 
 Table \refersec{tab:languageencodings}.
 Names marked with
@@ -1421,8 +1606,8 @@ and their associated values are reserved, but the
 languages they represent are not well supported. 
 Table \refersec{tab:languageencodings}
 also shows the default lower bound, if any, assumed for
-an omitted DW\_AT\_lower\_bound attribute in the context of a
-DW\_TAG\_subrange\_type debugging information entry for each
+an omitted \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound} attribute in the context of a
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} debugging information entry for each
 defined language.
 
 \begin{centering}
@@ -1438,28 +1623,28 @@ defined language.
   \hline
 \endlastfoot
 
-DW\_LANG\_C89&0x0001&0       \\
-DW\_LANG\_C&0x0002&0       \\
-DW\_LANG\_Ada83 \dag &0x0003&1       \\
-DW\_LANG\_C\_plus\_plus &0x0004&0       \\
-DW\_LANG\_Cobol74 \dag &0x0005&1       \\
-DW\_LANG\_Cobol85 \dag &0x0006&1       \\
-DW\_LANG\_Fortran77&0x0007&1       \\
-DW\_LANG\_Fortran90&0x0008&1       \\
-DW\_LANG\_Pascal83&0x0009&1       \\
-DW\_LANG\_Modula2&0x000a&1       \\
-DW\_LANG\_Java&0x000b&0       \\
-DW\_LANG\_C99&0x000c&0       \\
-DW\_LANG\_Ada95 \dag &0x000d&1       \\
-DW\_LANG\_Fortran95 &0x000e&1       \\
-DW\_LANG\_PLI \dag &0x000f&1 \\
-DW\_LANG\_ObjC&0x0010&0 \\
-DW\_LANG\_ObjC\_plus\_plus&0x0011&0 \\
-DW\_LANG\_UPC&0x0012&0 \\
-DW\_LANG\_D&0x0013&0 \\
-DW\_LANG\_Python \dag &0x0014&0 \\
-DW\_LANG\_lo\_user&0x8000 & \\
-DW\_LANG\_hi\_user&0xffff & \\
+\livelink{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&0x0001&0       \\
+\livelink{chap:DWLANGC}{DW\-\_LANG\-\_C}&0x0002&0  \\
+\livelink{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag &0x0003&1  \addtoindexx{Ada}     \\
+\livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus} &0x0004&0       \\
+\livelink{chap:DWLANGCobol74}{DW\-\_LANG\-\_Cobol74} \dag &0x0005&1       \\
+\livelink{chap:DWLANGCobol85}{DW\-\_LANG\-\_Cobol85} \dag &0x0006&1       \\
+\livelink{chap:DWLANGFortran77}{DW\-\_LANG\-\_Fortran77}&0x0007&1       \\
+\livelink{chap:DWLANGFortran90}{DW\-\_LANG\-\_Fortran90}&0x0008&1       \\
+\livelink{chap:DWLANGPascal83}{DW\-\_LANG\-\_Pascal83}&0x0009&1       \\
+\livelink{chap:DWLANGModula2}{DW\-\_LANG\-\_Modula2}&0x000a&1       \\
+\livelink{chap:DWLANGJava}{DW\-\_LANG\-\_Java}&0x000b&0       \\
+\livelink{chap:DWLANGC99}{DW\-\_LANG\-\_C99}&0x000c&0       \\
+\livelink{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag &0x000d&1 \addtoindexx{Ada}      \\
+\livelink{chap:DWLANGFortran95}{DW\-\_LANG\-\_Fortran95} &0x000e&1       \\
+\livelink{chap:DWLANGPLI}{DW\-\_LANG\-\_PLI} \dag &0x000f&1 \\
+\livelink{chap:DWLANGObjC}{DW\-\_LANG\-\_ObjC}&0x0010&0 \\
+\livelink{chap:DWLANGObjCplusplus}{DW\-\_LANG\-\_ObjC\-\_plus\-\_plus}&0x0011&0 \\
+\livelink{chap:DWLANGUPC}{DW\-\_LANG\-\_UPC}&0x0012&0 \\
+\livelink{chap:DWLANGD}{DW\-\_LANG\-\_D}&0x0013&0 \\
+\livelink{chap:DWLANGPython}{DW\-\_LANG\-\_Python} \dag &0x0014&0 \\
+\livetarg{chap:DWLANGlouser}{DW\-\_LANG\-\_lo\-\_user}&0x8000 & \\
+\livetarg{chap:DWLANGhiuser}{DW\-\_LANG\-\_hi\-\_user}&0xffff & \\
 
 \end{longtable}
 \dag See text
@@ -1468,15 +1653,17 @@ DW\_LANG\_hi\_user&0xffff & \\
 \section{Address Class Encodings}
 \label{datarep:addressclassencodings}
 
-The value of the common address class encoding 
-DW\_ADDR\_none is 0.
+The value of the common 
+\addtoindexi{address}{address class!attribute encoding}
+class encoding 
+\livelink{chap:DWADDRnone}{DW\-\_ADDR\-\_none} is 0.
 
 
 \section{Identifier Case}
 \label{datarep:identifiercase}
 
 The encodings of the constants used in the 
-DW\_AT\_identifier\_case attribute are given in 
+\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} attribute are given in 
 Table \refersec{tab:identifiercaseencodings}.
 
 \begin{centering}
@@ -1491,17 +1678,17 @@ Table \refersec{tab:identifiercaseencodings}.
 \endfoot
   \hline
 \endlastfoot
-DW\_ID\_case\_sensitive&0x00     \\
-DW\_ID\_up\_case&0x01     \\
-DW\_ID\_down\_case&0x02     \\
-DW\_ID\_case\_insensitive&0x03     \\
+\livelink{chap:DWIDcasesensitive}{DW\-\_ID\-\_case\-\_sensitive}&0x00     \\
+\livelink{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case}&0x01     \\
+\livelink{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case}&0x02     \\
+\livelink{chap:DWIDcaseinsensitive}{DW\-\_ID\-\_case\-\_insensitive}&0x03     \\
 \end{longtable}
 \end{centering}
 
 \section{Calling Convention Encodings}
 \label{datarep:callingconventionencodings}
 The encodings of the constants used in the 
-DW\_AT\_calling\_convention attribute are given in
+\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention} attribute are given in
 Table \refersec{tab:callingconventionencodings}.
 
 \begin{centering}
@@ -1517,11 +1704,11 @@ Table \refersec{tab:callingconventionencodings}.
   \hline
 \endlastfoot
 
-DW\_CC\_normal&0x01     \\
-DW\_CC\_program&0x02     \\
-DW\_CC\_nocall&0x03     \\
-DW\_CC\_lo\_user&0x40     \\
-DW\_CC\_hi\_user&0xff     \\
+\livelink{chap:DWCCnormal}{DW\-\_CC\-\_normal}&0x01     \\
+\livelink{chap:DWCCprogram}{DW\-\_CC\-\_program}&0x02     \\
+\livelink{chap:DWCCnocall}{DW\-\_CC\-\_nocall}&0x03     \\
+\livetarg{chap:DWCClouser}{DW\-\_CC\-\_lo\-\_user}&0x40     \\
+\livetarg{chap:DWCChiuser}{DW\-\_CC\-\_hi\-\_user}&0xff     \\
 
 \end{longtable}
 \end{centering}
@@ -1530,7 +1717,7 @@ DW\_CC\_hi\_user&0xff     \\
 \label{datarep:inlinecodes}
 
 The encodings of the constants used in the 
-DW\_AT\_inline attribute are given in 
+\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
 Table \refersec{tab:inlineencodings}.
 
 \begin{centering}
@@ -1546,10 +1733,10 @@ Table \refersec{tab:inlineencodings}.
   \hline
 \endlastfoot
 
-DW\_INL\_not\_inlined&0x00      \\
-DW\_INL\_inlined&0x01      \\
-DW\_INL\_declared\_not\_inlined&0x02      \\
-DW\_INL\_declared\_inlined&0x03      \\
+\livelink{chap:DWINLnotinlined}{DW\-\_INL\-\_not\-\_inlined}&0x00      \\
+\livelink{chap:DWINLinlined}{DW\-\_INL\-\_inlined}&0x01      \\
+\livelink{chap:DWINLdeclarednotinlined}{DW\-\_INL\-\_declared\-\_not\-\_inlined}&0x02      \\
+\livelink{chap:DWINLdeclaredinlined}{DW\-\_INL\-\_declared\-\_inlined}&0x03      \\
 
 \end{longtable}
 \end{centering}
@@ -1561,7 +1748,7 @@ DW\_INL\_declared\_inlined&0x03      \\
 \label{datarep:arrayordering}
 
 The encodings of the constants used in the 
-DW\_AT\_ordering attribute are given in 
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute are given in 
 Table \refersec{tab:orderingencodings}.
 
 \begin{centering}
@@ -1577,8 +1764,8 @@ Table \refersec{tab:orderingencodings}.
   \hline
 \endlastfoot
 
-DW\_ORD\_row\_major&0x00  \\
-DW\_ORD\_col\_major&0x01  \\
+\livelink{chap:DWORDrowmajor}{DW\-\_ORD\-\_row\-\_major}&0x00  \\
+\livelink{chap:DWORDcolmajor}{DW\-\_ORD\-\_col\-\_major}&0x01  \\
 
 \end{longtable}
 \end{centering}
@@ -1587,8 +1774,10 @@ DW\_ORD\_col\_major&0x01  \\
 \section{Discriminant Lists}
 \label{datarep:discriminantlists}
 
-The descriptors used in the 
-DW\_AT\_discr\_list attribute are 
+The descriptors used in 
+\addtoindexx{discriminant list attribute!encoding}
+the 
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are 
 encoded as 1\dash byte constants. The
 defined values are given in 
 Table \refersec{tab:discriminantdescriptorencodings}.
@@ -1607,8 +1796,8 @@ Table \refersec{tab:discriminantdescriptorencodings}.
   \hline
 \endlastfoot
 
-DW\_DSC\_label&0x00 \\
-DW\_DSC\_range&0x01 \\
+\livetarg{chap:DWDSClabel}{DW\-\_DSC\-\_label}&0x00 \\
+\livetarg{chap:DWDSCrange}{DW\-\_DSC\-\_range}&0x01 \\
 
 \end{longtable}
 \end{centering}
@@ -1617,14 +1806,16 @@ DW\_DSC\_range&0x01 \\
 \label{datarep:namelookuptables}
 
 Each set of entries in the table of global names contained
-in the .debug\_pubnames and .debug\_pubtypes sections begins
+in the \addtoindex{.debug\_pubnames} and 
+\addtoindex{.debug\_pubtypes} sections begins
 with a header consisting of:
 
 
 \begin{enumerate}[1.]
 \item unit\_length (initial length) \\
 A 4\dash byte or 12\dash byte unsigned integer representing the length
-of the .debug\_info contribution for that compilation unit,
+of the \addtoindex{.debug\_info}
+contribution for that compilation unit,
 not including the length field itself. In the 32\dash bit DWARF
 format, this is a 4\dash byte unsigned integer (which must be less
 than 0xfffffff0); in the 64\dash bit DWARF format, this consists
@@ -1634,13 +1825,15 @@ integer that gives the actual length
 
 \item  version (uhalf)
 A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit
+DWARF information\addtoindexx{version number!compilation unit} for the compilation unit
+\addtoindexx{version number!name lookup table}
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
 The value in this field is 4.
 
 % Some say unsigned offset this just says offset: FIXME
 \item debug\_info\_offset (section offset) \\
-A 4\dash byte or 8\dash byte offset into the .debug\_info
+A 4\dash byte or 8\dash byte offset into the 
+\addtoindex{.debug\_info}
 section of the compilation unit header.
 In
 the 32\dash bit DWARF format, this is a 4\dash byte unsigned offset;
@@ -1649,7 +1842,8 @@ in the 64\dash bit DWARF format, this is an 8\dash byte unsigned offsets
 
 \item  debug\_info\_length (section length) \\
 A 4\dash byte or 8\dash byte length containing the size in bytes of the
-contents of the .debug\_info section generated to represent
+contents of the \addtoindex{.debug\_info}
+section generated to represent
 this compilation unit. In the 32\dash bit DWARF format, this is
 a 4\dash byte unsigned length; in the 64\dash bit DWARF format, this
 is an 8-byte unsigned length 
@@ -1672,7 +1866,8 @@ offset containing the value 0.
 \label{datarep:addrssrangetable}
 
 Each set of entries in the table of address ranges contained
-in the .debug\_aranges section begins with a header containing:
+in the \addtoindex{.debug\_aranges}
+section begins with a header containing:
 
 \begin{enumerate}[1.]
 % FIXME The unit length text is not fully consistent across
@@ -1689,11 +1884,13 @@ the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item version (uhalf) \\
-A 2\dash byte version identifier containing the value 2 
+A 2\dash byte version identifier
+\addtoindexx{version number!address range table} containing the value 2 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 \item debug\_info\_offset (section offset) \\
-A 4\dash byte or 8\dash byte offset into the .debug\_info section of
+A 4\dash byte or 8\dash byte offset into the 
+\addtoindex{.debug\_info} section of
 the compilation unit header. In the 32\dash bit DWARF format,
 this is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
 this is an 8\dash byte unsigned offset 
@@ -1701,7 +1898,9 @@ this is an 8\dash byte unsigned offset
 
 \item address\_size (ubyte) \\
 A 1\dash byte unsigned integer containing the size in bytes of an
+\addtoindexx{address\_size}
 address (or the offset portion of an address for segmented
+\addtoindexx{address space!segmented}
 addressing) on the target system.
 
 \item segment\_size (ubyte) \\
@@ -1731,7 +1930,8 @@ the terminating tuple.
 \section{Line Number Information}
 \label{datarep:linenumberinformation}
 
-The version number in the line number program header is 4
+The \addtoindexi{version number}{version number!line number information}
+in the line number program header is 4
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 The boolean values ``true'' and ``false'' 
@@ -1756,18 +1956,18 @@ Table \refersec{tab:linenumberstandardopcodeencodings}.
   \hline
 \endlastfoot
 
-DW\_LNS\_copy&0x01 \\
-DW\_LNS\_advance\_pc&0x02 \\
-DW\_LNS\_advance\_line&0x03 \\
-DW\_LNS\_set\_file&0x04 \\
-DW\_LNS\_set\_column&0x05 \\
-DW\_LNS\_negate\_stmt&0x06 \\
-DW\_LNS\_set\_basic\_block&0x07 \\
-DW\_LNS\_const\_add\_pc*0x08 \\
-DW\_LNS\_fixed\_advance\_pc&0x09 \\
-DW\_LNS\_set\_prologue\_end&0x0a \\
-DW\_LNS\_set\_epilogue\_begin&0x0b \\
-DW\_LNS\_set\_isa&0x0c \\
+\livelink{chap:DWLNScopy}{DW\-\_LNS\-\_copy}&0x01 \\
+\livelink{chap:DWLNSadvancepc}{DW\-\_LNS\-\_advance\-\_pc}&0x02 \\
+\livelink{chap:DWLNSadvanceline}{DW\-\_LNS\-\_advance\-\_line}&0x03 \\
+\livelink{chap:DWLNSsetfile}{DW\-\_LNS\-\_set\-\_file}&0x04 \\
+\livelink{chap:DWLNSsetcolumn}{DW\-\_LNS\-\_set\-\_column}&0x05 \\
+\livelink{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt}&0x06 \\
+\livelink{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}&0x07 \\
+\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}*0x08 \\
+\livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}&0x09 \\
+\livelink{chap:DWLNSsetprologueend}{DW\-\_LNS\-\_set\-\_prologue\-\_end}&0x0a \\
+\livelink{chap:DWLNSsetepiloguebegin}{DW\-\_LNS\-\_set\-\_epilogue\-\_begin}&0x0b \\
+\livelink{chap:DWLNSsetisa}{DW\-\_LNS\-\_set\-\_isa}&0x0c \\
 
 \end{longtable}
 \end{centering}
@@ -1789,15 +1989,15 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
   \hline
 \endlastfoot
 
-DW\_LNE\_end\_sequence&0x01    \\
-DW\_LNE\_set\_address&0x02\\
-DW\_LNE\_define\_file&0x03\\
-DW\_LNE\_set\_discriminator \ddag &0x04   \\
-DW\_LNE\_lo\_user&0x80   \\
-DW\_LNE\_hi\_user&0xff   \\
+\livelink{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence}&0x01    \\
+\livelink{chap:DWLNEsetaddress}{DW\-\_LNE\-\_set\-\_address}&0x02\\
+\livelink{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file}&0x03\\
+\livelink{chap:DWLNEsetdiscriminator}{DW\-\_LNE\-\_set\-\_discriminator} \ddag &0x04   \\
+\livetarg{chap:DWLNElouser}{DW\-\_LNE\-\_lo\-\_user}&0x80   \\
+\livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
 
 \end{longtable}
-\ddag Extended opcode new in DWARF Version 4.
+\ddag Extended opcode new in \addtoindex{DWARF Version 4}.
 \end{centering}
 
 \section{Macro Information}
@@ -1805,7 +2005,8 @@ DW\_LNE\_hi\_user&0xff   \\
 
 The source line numbers and source file indices encoded in the
 macro information section are represented as unsigned LEB128
-numbers as are the constants in a DW\_MACINFO\_vendor\_ext entry.
+numbers as are the constants in a 
+\livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext} entry.
 
 The macinfo type is encoded as a single byte. 
 The encodings are given in 
@@ -1825,11 +2026,11 @@ Table \refersec{tab:macinfotypeencodings}.
   \hline
 \endlastfoot
 
-DW\_MACINFO\_define&0x01 \\
-DW\_MACINFO\_undef&0x02 \\
-DW\_MACINFO\_start\_file&0x03 \\
-DW\_MACINFO\_end\_file&0x04 \\
-DW\_MACINFO\_vendor\_ext&0xff \\
+\livelink{chap:DWMACINFOdefine}{DW\-\_MACINFO\-\_define}&0x01 \\
+\livelink{chap:DWMACINFOundef}{DW\-\_MACINFO\-\_undef}&0x02 \\
+\livelink{chap:DWMACINFOstartfile}{DW\-\_MACINFO\-\_start\-\_file}&0x03 \\
+\livelink{chap:DWMACINFOendfile}{DW\-\_MACINFO\-\_end\-\_file}&0x04 \\
+\livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext}&0xff \\
 
 \end{longtable}
 \end{centering}
@@ -1841,8 +2042,8 @@ In the 32\dash bit DWARF format, the value of the CIE id in the
 CIE header is 0xffffffff; in the 64\dash bit DWARF format, the
 value is 0xffffffffffffffff.
 
-The value of the CIE version number is 4 
-(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
+The value of the CIE \addtoindexi{version number}{version number!call frame information}
+is 4 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 Call frame instructions are encoded in one or more bytes. The
 primary opcode is encoded in the high order two bits of
@@ -1867,35 +2068,35 @@ Table \refersec{tab:callframeinstructionencodings}.
   \hline
 \endlastfoot
 
-DW\_CFA\_advance\_loc&0x1&delta & \\
-DW\_CFA\_offset&0x2&register&ULEB128 offset \\
-DW\_CFA\_restore&0x3&register & & \\
-DW\_CFA\_nop&0&0 & & \\
-DW\_CFA\_set\_loc&0&0x01&address & \\
-DW\_CFA\_advance\_loc1&0&0x02&1\dash byte delta & \\
-DW\_CFA\_advance\_loc2&0&0x03&2\dash byte delta & \\
-DW\_CFA\_advance\_loc4&0&0x04&4\dash byte delta & \\
-DW\_CFA\_offset\_extended&0&0x05&ULEB128 register&ULEB128 offset \\
-DW\_CFA\_restore\_extended&0&0x06&ULEB128 register & \\
-DW\_CFA\_undefined&0&0x07&ULEB128 register & \\
-DW\_CFA\_same\_value&0&0x08 &ULEB128 register & \\
-DW\_CFA\_register&0&0x09&ULEB128 register &ULEB128 offset \\
-DW\_CFA\_remember\_state&0&0x0a & & \\
-DW\_CFA\_restore\_state&0&0x0b & & \\
-DW\_CFA\_def\_cfa&0&0x0c &ULEB128 register&ULEB128 offset \\
-DW\_CFA\_def\_cfa\_register&0&0x0d&ULEB128 register & \\
-DW\_CFA\_def\_cfa\_offset&0&0x0e &ULEB128 offset & \\
-DW\_CFA\_def\_cfa\_expression&0&0x0f &BLOCK  \\
-DW\_CFA\_expression&0&0x10&ULEB128 register & BLOCK \\
-
-DW\_CFA\_offset\_extended\_sf&0&0x11&ULEB128 register&SLEB128 offset \\
-DW\_CFA\_def\_cfa\_sf&0&0x12&ULEB128 register&SLEB128 offset \\
-DW\_CFA\_def\_cfa\_offset\_sf&0&0x13&SLEB128 offset & \\
-DW\_CFA\_val\_offset&0&0x14&ULEB128&ULEB128 \\
-DW\_CFA\_val\_offset\_sf&0&0x15&ULEB128&SLEB128 \\
-DW\_CFA\_val\_expression&0&0x16&ULEB128&BLOCK  \\
-DW\_CFA\_lo\_user&0&0x1c   & & \\
-DW\_CFA\_hi\_user&0&0x3f & & \\
+\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}&0x1&delta & \\
+\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}&0x2&register&ULEB128 offset \\
+\livelink{chap:DWCFArestore}{DW\-\_CFA\-\_restore}&0x3&register & & \\
+\livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop}&0&0 & & \\
+\livelink{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc}&0&0x01&address & \\
+\livelink{chap:DWCFAadvanceloc1}{DW\-\_CFA\-\_advance\-\_loc1}&0&0x02&1\dash byte delta & \\
+\livelink{chap:DWCFAadvanceloc2}{DW\-\_CFA\-\_advance\-\_loc2}&0&0x03&2\dash byte delta & \\
+\livelink{chap:DWCFAadvanceloc4}{DW\-\_CFA\-\_advance\-\_loc4}&0&0x04&4\dash byte delta & \\
+\livelink{chap:DWCFAoffsetextended}{DW\-\_CFA\-\_offset\-\_extended}&0&0x05&ULEB128 register&ULEB128 offset \\
+\livelink{chap:DWCFArestoreextended}{DW\-\_CFA\-\_restore\-\_extended}&0&0x06&ULEB128 register & \\
+\livelink{chap:DWCFAundefined}{DW\-\_CFA\-\_undefined}&0&0x07&ULEB128 register & \\
+\livelink{chap:DWCFAsamevalue}{DW\-\_CFA\-\_same\-\_value}&0&0x08 &ULEB128 register & \\
+\livelink{chap:DWCFAregister}{DW\-\_CFA\-\_register}&0&0x09&ULEB128 register &ULEB128 offset \\
+\livelink{chap:DWCFArememberstate}{DW\-\_CFA\-\_remember\-\_state}&0&0x0a & & \\
+\livelink{chap:DWCFArestorestate}{DW\-\_CFA\-\_restore\-\_state}&0&0x0b & & \\
+\livelink{chap:DWCFAdefcfa}{DW\-\_CFA\-\_def\-\_cfa}&0&0x0c &ULEB128 register&ULEB128 offset \\
+\livelink{chap:DWCFAdefcfaregister}{DW\-\_CFA\-\_def\-\_cfa\-\_register}&0&0x0d&ULEB128 register & \\
+\livelink{chap:DWCFAdefcfaoffset}{DW\-\_CFA\-\_def\-\_cfa\-\_offset}&0&0x0e &ULEB128 offset & \\
+\livelink{chap:DWCFAdefcfaexpression}{DW\-\_CFA\-\_def\-\_cfa\-\_expression}&0&0x0f &BLOCK  \\
+\livelink{chap:DWCFAexpression}{DW\-\_CFA\-\_expression}&0&0x10&ULEB128 register & BLOCK \\
+
+\livelink{chap:DWCFAoffsetextendedsf}{DW\-\_CFA\-\_offset\-\_extended\-\_sf}&0&0x11&ULEB128 register&SLEB128 offset \\
+\livelink{chap:DWCFAdefcfasf}{DW\-\_CFA\-\_def\-\_cfa\-\_sf}&0&0x12&ULEB128 register&SLEB128 offset \\
+\livelink{chap:DWCFAdefcfaoffsetsf}{DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf}&0&0x13&SLEB128 offset & \\
+\livelink{chap:DWCFAvaloffset}{DW\-\_CFA\-\_val\-\_offset}&0&0x14&ULEB128&ULEB128 \\
+\livelink{chap:DWCFAvaloffsetsf}{DW\-\_CFA\-\_val\-\_offset\-\_sf}&0&0x15&ULEB128&SLEB128 \\
+\livelink{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression}&0&0x16&ULEB128&BLOCK  \\
+\livetarg{chap:DWCFAlouser}{DW\-\_CFA\-\_lo\-\_user}&0&0x1c   & & \\
+\livetarg{chap:DWCFAhiuser}{DW\-\_CFA\-\_hi\-\_user}&0&0x3f & & \\
 \end{longtable}
 \end{centering}
 
@@ -1905,17 +2106,22 @@ DW\_CFA\_hi\_user&0&0x3f & & \\
 Each entry in a range list 
 (see Section \refersec{chap:noncontiguousaddressranges})
 is either a
+\addtoindexx{base address selection entry!in range list}
 range list entry, a base address selection entry, or an end
 of list entry.
 
 A range list entry consists of two relative addresses. The
 addresses are the same size as addresses on the target machine.
 
-A base address selection entry and an end of list entry each
+A base address selection entry and an 
+\addtoindex{end of list entry!in range list}
+end of list entry each
+\addtoindexx{base address selection entry!in range list}
 consist of two (constant or relocated) addresses. The two
 addresses are the same size as addresses on the target machine.
 
 For a range list to be specified, the base address of the
+\addtoindexx{base address selection entry!in range list}
 corresponding compilation unit must be defined 
 (see Section \refersec{chap:normalandpartialcompilationunitentries}).
 
@@ -1924,10 +2130,23 @@ corresponding compilation unit must be defined
 \label{datarep:dependenciesandconstraints}
 
 The debugging information in this format is intended to
-exist in the .debug\_abbrev, .debug\_aranges, .debug\_frame,
-.debug\_info, .debug\_line, .debug\_loc, .debug\_macinfo,
-.debug\_pubnames, .debug\_pubtypes, .debug\_ranges, .debug\_str
-and .debug\_types sections of an object file, or equivalent
+exist 
+\addtoindexx{DWARF section names!list of}
+in 
+the \addtoindex{.debug\_abbrev}, 
+\addtoindex{.debug\_aranges}, 
+\addtoindex{.debug\_frame},
+\addtoindex{.debug\_info}, 
+\addtoindex{.debug\_line}, 
+\addtoindex{.debug\_loc}, 
+\addtoindex{.debug\_macinfo},
+\addtoindex{.debug\_pubnames}, 
+\addtoindex{.debug\_pubtypes}, 
+\addtoindex{.debug\_ranges}, 
+\addtoindex{.debug\_str}
+and 
+\addtoindex{.debug\_types}
+sections of an object file, or equivalent
 separate file or database. The information is not 
 word\dash aligned. Consequently: •
 
@@ -2019,7 +2238,7 @@ is nested inside another type or a namespace, append to S
 the type’s context as follows: For each surrounding type
 or namespace, beginning with the outermost such construct,
 append the letter 'C', the DWARF tag of the construct, and
-the name (taken from the DW\_AT\_name attribute) of the type
+the name (taken from the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
 or namespace (including its trailing null byte).
 
 \item  Append to S the letter 'D', followed by the DWARF tag of
@@ -2031,57 +2250,57 @@ append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
 
 \begin{itemize}
-\item DW\_AT\_name
-\item DW\_AT\_accessibility
-\item DW\_AT\_address\_class
-\item DW\_AT\_allocated
-\item DW\_AT\_artificial
-\item DW\_AT\_associated
-\item DW\_AT\_binary\_scale
-\item DW\_AT\_bit\_offset
-\item DW\_AT\_bit\_size
-\item DW\_AT\_bit\_stride
-\item DW\_AT\_byte\_size
-\item DW\_AT\_byte\_stride
-\item DW\_AT\_const\_expr
-\item DW\_AT\_const\_value
-\item DW\_AT\_containing\_type
-\item DW\_AT\_count
-\item DW\_AT\_data\_bit\_offset
-\item DW\_AT\_data\_location
-\item DW\_AT\_data\_member\_location
-\item DW\_AT\_decimal\_scale
-\item DW\_AT\_decimal\_sign
-\item DW\_AT\_default\_value
-\item DW\_AT\_digit\_count
-\item DW\_AT\_discr
-\item DW\_AT\_discr\_list
-\item DW\_AT\_discr\_value
-\item DW\_AT\_encoding
-\item DW\_AT\_enum\_class
-\item DW\_AT\_endianity
-\item DW\_AT\_explicit
-\item DW\_AT\_is\_optional
-\item DW\_AT\_location
-\item DW\_AT\_lower\_bound
-\item DW\_AT\_mutable
-\item DW\_AT\_ordering
-\item DW\_AT\_picture\_string
-\item DW\_AT\_prototyped
-\item DW\_AT\_small
-\item DW\_AT\_segment
-\item DW\_AT\_string\_length
-\item DW\_AT\_threads\_scaled
-\item DW\_AT\_upper\_bound
-\item DW\_AT\_use\_location
-\item DW\_AT\_use\_UTF8
-\item DW\_AT\_variable\_parameter
-\item DW\_AT\_virtuality
-\item DW\_AT\_visibility
-\item DW\_AT\_vtable\_elem\_location
+\item \livelink{chap:DWATname}{DW\-\_AT\-\_name}
+\item \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+\item \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
+\item \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}
+\item \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}
+\item \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
+\item \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
+\item \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
+\item \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
+\item \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
+\item \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
+\item \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
+\item \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
+\item \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
+\item \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
+\item \livelink{chap:DWATcount}{DW\-\_AT\-\_count}
+\item \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
+\item \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
+\item \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
+\item \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
+\item \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
+\item \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
+\item \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
+\item \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}
+\item \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
+\item \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
+\item \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
+\item \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
+\item \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}
+\item \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
+\item \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
+\item \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
+\item \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
+\item \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}
+\item \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}
+\item \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
+\item \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
+\item \livelink{chap:DWATsmall}{DW\-\_AT\-\_small}
+\item \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
+\item \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
+\item \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
+\item \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
+\item \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
+\item \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
+\item \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
+\item \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
+\item \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
+\item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
 \end{itemize}
 
-Note that except for the initial DW\_AT\_name attribute,
+Note that except for the initial \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 attributes are appended in order according to the alphabetical
 spelling of their identifier.
 
@@ -2102,44 +2321,44 @@ the value consists of the form code (encoded as an unsigned
 LEB128 value) followed by the encoding of the value according
 to the form code. To ensure reproducibility of the signature,
 the set of forms used in the signature computation is limited
-to the following: DW\_FORM\_sdata
-DW\_FORM\_flag
-DW\_FORM\_string,
-and DW\_FORM\_block.
-
-\item If the tag in Step 3 is one of DW\-\_TAG\-\_pointer\-\_type,
-DW\-\_TAG\-\_reference\-\_type
-DW\-\_TAG\-\_rvalue\-\_reference\-\_type,
-DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type
-or DW\-\_TAG\-\_friend, and the referenced
-type (via the DW\-\_AT\-\_type or 
-DW\-\_AT\-\_friend attribute) has a
-DW\-\_AT\-\_name attribute, append to S the letter 'N', the DWARF
-attribute code (DW\-\_AT\-\_type or 
-DW\-\_AT\-\_friend), the context of
+to the following: \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}
+\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}
+\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string},
+and \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}.
+
+\item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}
+or \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, and the referenced
+type (via the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) has a
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to S the letter 'N', the DWARF
+attribute code (\livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}), the context of
 the type (according to the method in Step 2), the letter 'E',
-and the name of the type. For DW\-\_TAG\-\_friend, if the referenced
-entry is a DW\-\_TAG\-\_subprogram, the context is omitted and the
+and the name of the type. For \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, if the referenced
+entry is a \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
 (e.g., the mangled linker name).
 
 
-\item 6.If the tag in Step 3 is not one of DW\-\_TAG\-\_pointer\-\_type,
-DW\-\_TAG\-\_reference\-\_type
-DW\-\_TAG\-\_rvalue\-\_reference\-\_type,
-DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type, or 
-DW\-\_TAG\-\_friend, but has
-a DW\-\_AT\-\_type attribute, or if the referenced type (via
-the DW\-\_AT\-\_type or 
-DW\-\_AT\-\_friend attribute) does not have a
-DW\-\_AT\-\_name attribute, the attribute is processed according to
+\item 6.If the tag in Step 3 is not one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, or 
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, but has
+a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, or if the referenced type (via
+the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
+\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) does not have a
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, the attribute is processed according to
 the method in Step 4 for an attribute that refers to another
 type entry.
 
 
 \item Visit each child C of the debugging information
 entry as follows: If C is a nested type entry or a member
-function entry, and has a DW\-\_AT\-\_name attribute, append to
+function entry, and has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
 S the letter 'S', the tag of C, and its name; otherwise,
 process C recursively by performing Steps 3 through 7,
 appending the result to S. Following the last child (or if
@@ -2150,10 +2369,10 @@ there are no children), append a zero byte.
 
 For the purposes of this algorithm, if a debugging information
 entry S has a 
-DW\-\_AT\-\_specification 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} 
 attribute that refers to
 another entry D (which has a 
-DW\-\_AT\-\_declaration 
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
 attribute),
 then S inherits the attributes and children of D, and S is
 processed as if those attributes and children were present in
@@ -2206,7 +2425,7 @@ separate type unit if any of the following apply:}
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
-another debugging information entry (e.g., a DW\_OP\_call\_ref
+another debugging information entry (e.g., a \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
@@ -2222,17 +2441,17 @@ a type.}
 \textit{Certain attributes are not included in the type signature:}
 
 \begin{itemize}
-\item \textit{The DW\_AT\_declaration attribute is not included because it
+\item \textit{The \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute is not included because it
 indicates that the debugging information entry represents an
 incomplete declaration, and incomplete declarations should
 not be placed in separate type units.}
 
-\item \textit{The DW\_AT\_description attribute is not included because
+\item \textit{The \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute is not included because
 it does not provide any information unique to the defining
 declaration of the type.}
 
-\item \textit{The DW\_AT\_decl\_file, DW\_AT\_decl\_line, and
-DW\_AT\_decl\_column attributes are not included because they
+\item \textit{The \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}, and
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attributes are not included because they
 may vary from one source file to the next, and would prevent
 two otherwise identical type declarations from producing the
 same hash.}