compression.tex
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index ff144eb..7ffee4f 100644 (file)
@@ -8,6 +8,8 @@ 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
 enumeration values for use for vendor specific extensions,
@@ -24,7 +26,7 @@ DW\-\_LANG, DW\-\_LNE, DW\-\_CC or DW\-\_CFA respectively) followed by
 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
@@ -35,12 +37,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.
 
@@ -68,6 +73,7 @@ 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
 0 is reserved in the encodings for attribute names, attribute
@@ -81,17 +87,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}); 
@@ -120,6 +131,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
@@ -163,19 +176,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}
@@ -186,7 +199,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
@@ -194,16 +207,18 @@ format, the value is a 64\dash bit unsigned integer.
 \begin{center}
 \begin{tabular}{lll}
 Form & Role  \\ \hline
-\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in .debug\_info \\
-\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than .debug\_info or .debug\_str \\
-\livelink{chap:DWFORMstrp}{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.
@@ -244,7 +259,7 @@ 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}) 
@@ -253,19 +268,23 @@ single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \liveli
 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 \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
@@ -281,7 +300,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
@@ -291,12 +311,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;
@@ -305,7 +326,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.
 
@@ -319,14 +342,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
@@ -336,12 +360,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;
@@ -350,7 +375,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.
 
@@ -398,7 +425,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
@@ -407,8 +435,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
@@ -417,11 +447,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
@@ -443,9 +475,13 @@ entry containing 0 for the name and 0 for the form.
 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
@@ -484,16 +520,17 @@ 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 
-(\livetarg{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}). The size is
+(\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}
@@ -568,20 +605,24 @@ expression
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
-\item flag \\
+\item \livelink{chap:flag}{flag} \\
 A flag 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 flag has value zero, it indicates the
-absence of the attribute; if the flag has a non\dash zero value,
+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 \livelink{chap:lineptr}{lineptr} \\
-This is an offset into the .debug\_line section
+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 .debug\_line section to the first byte of
+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
@@ -592,9 +633,13 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 
 
 \item \livelink{chap:loclistptr}{loclistptr} \\
-This is an offset into the .debug\_loc section
+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 .debug\_loc section to the first byte of
+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
@@ -605,9 +650,11 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 
 
 \item \livelink{chap:macptr}{macptr} \\
-This is an offset into the .debug\_macinfo section
+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 .debug\_macinfo section to the first byte of
+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
@@ -617,10 +664,11 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item \livelink{chap:rangelistptr}{rangelistptr} \\
-This is an offset into the .debug\_ranges section
+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
@@ -658,12 +706,14 @@ 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
 (\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
-.debug\_info section of the target executable or shared object;
+\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
@@ -681,7 +731,8 @@ 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.
 
@@ -710,7 +761,7 @@ one null byte. A string may be represented immediately in the
 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 
+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}
@@ -737,7 +788,7 @@ not. However, the UTF\dash 8 representation is strongly recommended.
 
 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
-.debug\_info or .debug\_str section.
+\addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
 
 The form encodings are listed in 
 Table \refersec{tab:attributeformencodings}.
@@ -817,7 +868,7 @@ Table \refersec{tab:attributeformencodings}.
 \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}
 
 
@@ -828,8 +879,8 @@ Table \refersec{tab:attributeformencodings}.
 \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}
 
@@ -837,7 +888,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
@@ -846,108 +897,198 @@ DW\-\_CHILDREN\-\_yes&0x01 \\ \hline
 \endfoot
   \hline
 \endlastfoot
-\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference \\
-\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
-\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string   \\
-\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant   \\
-\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
-\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
-\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
-\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr}   \\
-\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address   \\
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant   \\
-\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant   \\
-\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference   \\
-\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant   \\
-\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant   \\
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference   \\
-\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
-\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference   \\
-\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string   \\
-\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&block, constant, string   \\
-\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference     \\
-\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference     \\
-\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant     \\
-\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&flag     \\
-\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string     \\
-\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&flag     \\
-\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{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{lowpc attribute!encoding}  \\
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant 
+        \addtoindexx{highpc 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
-\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr}     \\
-\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference     \\
-\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant     \\
-\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant     \\
-\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&flag     \\
-\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference     \\
-\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant     \\
-\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
-\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant     \\
-\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant     \\
-\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant     \\
-\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&flag     \\
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&block     \\
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant     \\
-\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&flag     \\
-\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference     \\
-\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant    \\
-\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr}    \\
-\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference    \\
-\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference    \\
-\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference    \\
-\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
-\livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference    \\
-\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
-\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&flag    \\
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant    \\
-\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
-
-
-\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc}     \\
-\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
-\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address     \\
-\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&flag     \\
-\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference     \\
-\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr}     \\
-\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, flag, reference, string     \\
-\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant     \\
-\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant     \\
-\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant     \\
-\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string     \\
-\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant     \\
-\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant     \\
-\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference     \\
-\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant     \\
-\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant     \\
-\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string      \\
-\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&flag     \\
-
-
-\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&flag     \\
-\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&flag     \\
-\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference     \\
-\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant     \\
-\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&flag     \\
-\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&flag     \\
-\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&flag     \\
-\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference     \\ 
-\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&flag     \\
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant     \\
-\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&flag     \\
-\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&flag     \\
-\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string     \\
-\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & ---     \\
-\livetarg{chap:DWAThiuser}{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}
@@ -963,16 +1104,16 @@ DW\-\_CHILDREN\-\_yes&0x01 \\ \hline
   \hline
 \endlastfoot
 \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
-\livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&block \\
-\livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&block  \\
+\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&block \\
-\livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&block \\
+\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&flag \\
+\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         \\
@@ -985,15 +1126,17 @@ DW\-\_CHILDREN\-\_yes&0x01 \\ \hline
 \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&flag \\
+\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
@@ -1048,7 +1191,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
@@ -1063,7 +1206,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}
 
@@ -1072,7 +1215,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
@@ -1100,7 +1243,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
@@ -1122,98 +1267,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}
@@ -1242,13 +1387,17 @@ 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 \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
+The encodings of the 
+\hypertarget{chap:DWATencodingencodingofbasetype}
+constants used in the 
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
 attribute are given in 
 Table \refersec{tab:basetypeencodingvalues}
 
@@ -1265,27 +1414,27 @@ 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}
 
 
@@ -1308,11 +1457,11 @@ 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}
@@ -1334,19 +1483,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 \livelink{chap:DWATaccessibility}{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}
@@ -1362,9 +1514,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}
@@ -1389,9 +1541,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}
@@ -1416,9 +1568,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 \\
 
 
 
@@ -1426,7 +1578,7 @@ DW\-\_VIRTUALITY\-\_pure\-\_virtual&0x02 \\
 \end{centering}
 
 The value 
-DW\-\_VIRTUALITY\-\_none is equivalent to the absence of the 
+\livelink{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none} is equivalent to the absence of the 
 \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
 attribute.
 
@@ -1460,28 +1612,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
@@ -1490,8 +1642,10 @@ 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}
@@ -1513,10 +1667,10 @@ 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}
 
@@ -1539,11 +1693,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}
@@ -1568,10 +1722,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}
@@ -1599,8 +1753,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}
@@ -1609,7 +1763,9 @@ DW\-\_ORD\-\_col\-\_major&0x01  \\
 \section{Discriminant Lists}
 \label{datarep:discriminantlists}
 
-The descriptors used in the 
+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 
@@ -1629,8 +1785,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}
@@ -1639,14 +1795,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
@@ -1656,13 +1814,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;
@@ -1671,7 +1831,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 
@@ -1694,7 +1855,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
@@ -1711,11 +1873,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 
@@ -1723,7 +1887,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) \\
@@ -1753,7 +1919,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'' 
@@ -1778,18 +1945,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}
@@ -1811,15 +1978,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}
@@ -1827,7 +1994,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 
@@ -1847,11 +2015,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}
@@ -1863,8 +2031,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
@@ -1889,35 +2057,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}
 
@@ -1927,6 +2095,7 @@ 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.
 
@@ -1934,10 +2103,12 @@ 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
+\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}).
 
@@ -1946,10 +2117,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: •
 
@@ -2228,7 +2412,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.}