Misc corrections Chpt 6 thru App A
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 1d3555b..3070974 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,
@@ -24,7 +28,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
@@ -36,12 +40,14 @@ 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,
 \livetarg{chap:DWLNSlouser}{DW\-\_LNS\-\_lo\-\_user} and 
-\livetarg{chap:DWLNShiuser}{DW\-\_LNS\-\_hi\-\_user} symbols are not defined.}
+\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.
 
@@ -69,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
@@ -82,9 +91,12 @@ 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
+An \addtoindex{initial length field} is one of the length fields that occur
+at the beginning 
+of those DWARF sections that 
+have a header
 (\addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_info}, 
 \addtoindex{.debug\_types}, 
@@ -94,9 +106,9 @@ at the beginning of those DWARF sections that have a header
 that occurs at the beginning of the CIE and FDE structures
 in the \addtoindex{.debug\_frame} section.
 
-In an initial length field, the values 0xfffffff0 through
+In an \addtoindex{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}); 
@@ -125,6 +137,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
@@ -143,11 +157,15 @@ detailed in the following:
 
 \begin{enumerate}[1.]
 
-\item  In the 32\dash bit DWARF format, an initial length field
-(see Section \refersec{datarep:initiallengthvalues}) 
+\item  In the 32\dash bit DWARF format, an 
+\addtoindex{initial length field}
+(see 
+\addtoindex{initial length field!encoding}
+Section \refersec{datarep:initiallengthvalues}) 
 is an unsigned 32\dash bit integer (which
 must be less than 0xfffffff0); in the 64\dash bit DWARF format,
-an initial length field is 96 bits in size, and has two parts:
+an \addtoindex{initial length field} is 96 bits in size,
+and has two parts:
 \begin{itemize}
 \item The first 32\dash bits have the value 0xffffffff.
 
@@ -159,28 +177,40 @@ represented as an unsigned 64\dash bit integer.
 detect that a DWARF section contribution is using the 64\dash bit
 format and to adapt its processing accordingly.}
 
-\item Section offset and section length fields that occur
-in the headers of DWARF sections (other than initial length
+\item Section offset and section length 
+\addtoindexx{section length!use in headers}
+fields that occur
+\addtoindexx{section offset!use in headers}
+in the headers of DWARF sections (other 
+\addtoindex{initial length field}
+than 
+\addtoindex{initial length}
 fields) are listed following. In the 32\dash bit DWARF format these
 are 32\dash bit unsigned integer values; in the 64\dash bit DWARF format,
-they are 64\dash bit unsigned integer values.
+they 
+\addtoindexx{section length!in .debug\_aranges header}
+are 
+\addtoindexx{section length!in .debug\_pubnames header}
+64\dash bit 
+\addtoindexx{section length!in .debug\_pubtypes header}
+unsigned integer values.
 
 \begin{center}
 \begin{tabular}{lll}
 Section &Name & Role  \\ \hline
-\addtoindex{.debug\_ranges} & debug\_info\_offset & offset in \addtoindex{.debug\_info} \\
-\addtoindex{.debug\_frame}/CIE & CIE\_id & CIE distinguished value \\
-\addtoindex{.debug\_frame}/FDE & CIE\_pointer & offset in \addtoindex{.debug\_frame} \\
-\addtoindex{.debug\_info} & debug\_abbrev\_offset & offset in \addtoindex{.debug\_abbrev} \\
-\addtoindex{.debug\_line} & header\_length & length of header itself \\
-\addtoindex{.debug\_pubnames} & debug\_info\_offset & offset in \addtoindex{.debug\_info} \\
-                & debug\_info\_length & length of \addtoindex{.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 \\
-\addtoindex{.debug\_pubtypes} & debug\_info\_offset & offset in \addtoindex{.debug\_info} \\
-                & debug\_info\_length & length of \addtoindex{.debug\_info} \\
+\addtoindex{.debug\_pubtypes} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
+                & \addtoindex{debug\_info\_length} & length of \addtoindex{.debug\_info} \\
                 &                   & contribution \\
-\addtoindex{.debug\_types} & debug\_abbrev\_offset & offset in \addtoindex{.debug\_info} \\
-                & type\_offset & offset in of \addtoindex{.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}
@@ -262,16 +292,19 @@ information entry, together with its children.
 For each type defined in a compilation unit, a contribution may
 be made to the \addtoindex{.debug\_types} 
 section of the object file. Each
-such contribution consists of a type unit header 
+such contribution consists of a 
+\addtoindex{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
 \addtoindex{.debug\_info} or 
 \addtoindex{.debug\_types} section.
@@ -289,7 +322,10 @@ units may share the same table.
 \begin{enumerate}[1.]
 
 \item unit\_length (initial length) \\
-A 4\dash byte or 12\dash byte unsigned integer representing the length
+\addtoindexx{unit\_length}
+A 4\dash byte or 12\dash byte 
+\addtoindexx{initial length}
+unsigned integer representing the length
 of the \addtoindex{.debug\_info}
 contribution for that compilation unit,
 not including the length field itself. In the 32\dash bit DWARF
@@ -299,14 +335,16 @@ of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
 integer that gives the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  version (uhalf)
+\item  version (\addtoindex{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 
+\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
+A 
+\addtoindexx{section offset!in .debug\_info header}
+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
@@ -314,7 +352,7 @@ 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\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item address\_size (ubyte) \\
+\item address\_size (\addtoindex{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
@@ -332,14 +370,17 @@ 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 
+placed in its own \addtoindex{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
+\addtoindexx{unit\_length}
+A 4\dash byte or 12\dash byte unsigned integer 
+\addtoindexx{initial length}
+representing the length
 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
@@ -348,14 +389,17 @@ consists of the 4\dash byte value 0xffffffff followed by an
 8\dash byte unsigned integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  version (uhalf)
+\item  version (\addtoindex{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 
+\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
+A 
+\addtoindexx{section offset!in .debug\_types header}
+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
@@ -364,7 +408,9 @@ in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item address\_size (ubyte) \\
-A 1\dash byte unsigned integer representing the size in bytes of
+A 1\dash byte unsigned integer representing the size 
+\addtoindexx{size of an address}
+in bytes of
 \addtoindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
@@ -373,16 +419,24 @@ offset portion of an address.
 
 
 \item type\_signature (8\dash byte unsigned integer) \\
-A 64\dash bit unique signature of the type described in this type
+\addtoindexx{type signature}
+A 
+\addtoindexx{type\_signature}
+64\dash bit unique signature of the type described in this type
 unit.  
 
 \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.}
+the primary type contained in 
+this \addtoindex{type unit} uses this value.}
 
 
 \item type\_offset (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset relative to the beginning
-of the type unit header. This offset refers to the debugging
+\addtoindexx{type\_offset}
+A 4\dash byte or 8\dash byte unsigned offset 
+\addtoindexx{section offset!in .debug\_types header}
+relative to the beginning
+of the \addtoindex{type unit} header.
+This offset refers to the debugging
 information entry that describes the type. Because the type
 may be nested inside a namespace or other structures, and may
 contain references to other types that have not been placed in
@@ -451,8 +505,7 @@ encodings for the child determination byte are given in
 Table \refersec{tab:childdeterminationencodings}
 (As mentioned in 
 Section \refersec{chap:relationshipofdebugginginformationentries}, 
-each chain of
-sibling entries is terminated by a null entry.)
+each chain of sibling entries is terminated by a null entry.)
 
 Finally, the child encoding is followed by a series of
 attribute specifications. Each attribute specification
@@ -469,16 +522,18 @@ attributes with this form, the attribute value itself in the
 \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
 entry consisting of a 0 byte for the abbreviation code.
 
-See 
+\textit{See 
 Appendix \refersec{app:compilationunitsandabbreviationstableexample} 
 for a depiction of the organization of the
-debugging information.
+debugging information.}
 
 \subsection{Attribute Encodings}
 \label{datarep:attributeencodings}
@@ -492,17 +547,43 @@ 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 \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
+Form \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} 
+is a member of more 
+\addtoindexx{rangelistptr class}
+than 
+\addtoindexx{macptr class}
+one 
+\addtoindexx{loclistptr class}
+class,
+\addtoindexx{lineptr class}
+namely \livelink{chap:lineptr}{lineptr}, 
+\livelink{chap:loclistptr}{loclistptr}, 
+\livelink{chap:macptr}{macptr} or 
+\livelink{chap:rangelistptr}{rangelistptr}; the list
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
 \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
+\addtoindexx{lineptr class}
+members 
+\addtoindexx{rangelistptr class}
+of 
+\addtoindexx{macptr class}
+either 
+\addtoindexx{loclistptr class}
+class constant \addtoindexx{constant class}
+or one of the classes 
+\livelink{chap:lineptr}{lineptr},
+\livelink{chap:loclistptr}{loclistptr}, 
+\livelink{chap:macptr}{macptr} or 
+\livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
+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:
@@ -573,14 +654,15 @@ 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 \livetarg{chap:DWFORMdata}{DW\-\_FORM\-\_data}<n> forms is used to represent a
+\textit{If one of the \livetarg{chap:DWFORMdata}{DW\-\_FORM\-\_data}\textless n\textgreater 
+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 \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} or 
 \livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata} for signed and
 unsigned integers respectively, rather than 
-\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data} \textless n \textgreater.}
+\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data}\textless n\textgreater.}
 
 
 \item \livelink{chap:exprloc}{exprloc} \\
@@ -594,7 +676,8 @@ or location description
 (see Section \refersec{chap:locationdescriptions}).
 
 \item \livelink{chap:flag}{flag} \\
-A flag is represented explicitly as a single byte of data
+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
@@ -605,9 +688,12 @@ 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 
+This is an offset into 
+\addtoindexx{section offset!in class lineptr value}
+the 
 \addtoindex{.debug\_line} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\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
@@ -624,11 +710,14 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 This is an offset into the 
 \addtoindex{.debug\_loc}
 section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
+It consists of an offset from the
+\addtoindexx{section offset!in class loclistptr value}
 beginning of the 
 \addtoindex{.debug\_loc}
 section to the first byte of
-the data making up the location list for the compilation
+the data making up the 
+\addtoindex{location list} for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
 relocated in an executable or shared object. In the 32\dash bit
@@ -638,7 +727,9 @@ 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 
+This is an 
+\addtoindexx{section offset!in class macptr value}
+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} 
@@ -652,7 +743,9 @@ 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 \addtoindex{.debug\_ranges} section
+This is an 
+\addtoindexx{section offset!in class rangelistptr value}
+offset into the \addtoindex{.debug\_ranges} section
 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
 It consists of an
 offset from the beginning of the 
@@ -667,7 +760,10 @@ format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \end{itemize}
 
-\textit{Because classes \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} and \livelink{chap:rangelistptr}{rangelistptr}
+\textit{Because classes \livelink{chap: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}
 
@@ -676,9 +772,14 @@ attribute to allow more than one of these classes}
 \item reference \\
 There are three types of reference.
 
-The first type of reference can identify any debugging
-information entry within the containing unit. This type of
-reference is an offset from the first byte of the compilation
+The 
+\addtoindexx{reference class}
+first type of reference can identify any debugging
+information entry within the containing unit. 
+This type of
+reference is an 
+\addtoindexx{section offset!in class reference value}
+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
@@ -712,43 +813,48 @@ in the 64\dash bit DWARF format, it is an 8\dash byte
 unsigned value 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-A debugging information entry that may be referenced by
+\textit{A debugging information entry that may be referenced by
 another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
-global symbolic name.
+global symbolic name.}
 
-For a reference from one executable or shared object to
+\textit{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 \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.
+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 
+\addtoindex{type unit}. This type of 
 reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
+\addtoindexx{type signature}
 64\dash bit type signature 
 (see Section \refersec{datarep:typesignaturecomputation}) 
 that was computed
 for the type.
 
-The use of compilation unit relative references will reduce the
+\textit{The use of compilation unit relative references will reduce the
 number of link\dash time relocations and so speed up linking. The
 use of the second and third type of reference allows for the
 sharing of information, such as types, across compilation
-units.
+units.}
 
-A reference to any kind of compilation unit identifies the
+\textit{A reference to any kind of compilation unit identifies the
 debugging information entry for that unit, not the preceding
-header.
+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
+one null byte. 
+\addtoindexx{string class}
+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
+be represented as an 
+\addtoindexx{section offset!in class string value}
+offset into a string table contained in
 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 
@@ -757,24 +863,33 @@ 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 \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
+If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
+\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} 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
+UTF\dash 8 (\addtoindex{Unicode} Transformation Format\dash 8) from the Universal
 Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
 the string representation is unspecified.
 
-The Unicode Standard Version 3 is fully compatible with
+\textit{The \addtoindex{Unicode} Standard Version 3 is fully compatible with
 ISO/IEC 10646\dash 1:1993. It contains all the same characters
 and encoding points as ISO/IEC 10646, as well as additional
-information about the characters and their use.
+information about the characters and their use.}
 
-Earlier versions of DWARF did not specify the representation
+\textit{Earlier versions of DWARF did not specify the representation
 of strings; for compatibility, this version also does
-not. However, the UTF\dash 8 representation is strongly recommended.
+not. However, the UTF\dash 8 representation is strongly recommended.}
 
 \end{itemize}
 
-In no case does an attribute use one of the classes \livelink{chap:lineptr}{lineptr},
+In no case does an attribute use 
+\addtoindexx{rangelistptr class}
+one 
+\addtoindexx{loclistptr class}
+of 
+\addtoindexx{lineptr class}
+the 
+\addtoindexx{macptr class}
+classes \livelink{chap:lineptr}{lineptr},
 \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
 \addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
 
@@ -785,13 +900,14 @@ Table \refersec{tab:attributeformencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l}
   \caption{Tag encodings} \label{tab:tagencodings} \\
-  \hline \\ \bfseries Tag name&\bfseries Value\\ \hline
+  \hline \bfseries Tag name&\bfseries Value\\ \hline
 \endfirsthead
   \bfseries Tag name&\bfseries Value \\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \endlastfoot
 \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
 \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
@@ -856,150 +972,248 @@ 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 
 \end{centering}
 
 
-\begin{figure}[here]
-\centering
+\begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\caption{Child determination encodings}
-\label{tab:childdeterminationencodings}
-\begin{tabular}{l|l} \hline
-Child determination name& Value\\ \hline
+\begin{longtable}{l|l}
+  \caption{Child determination encodings}
+  \label{tab:childdeterminationencodings}
+  \addtoindexx{Child determination encodings} \\
+  \hline \bfseries Children determination name&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries Children determination name&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+\endlastfoot
 \livelink{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}&0x00 \\ 
 \livelink{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes}&0x01 \\ \hline
-\end{tabular}
-\end{figure}
-
+\end{longtable}
+\end{centering}
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Attribute encodings} \label{tab:attributeencodings} \\
-  \hline \\ \bfseries Attribute name&\bfseries Value &\bfseries Classes \\ \hline
+  \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
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \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&\livelink{chap:block}{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&\livelink{chap:flag}{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&\livelink{chap:flag}{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{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{inline attribute!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&\livelink{chap:flag}{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&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block}     \\
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant     \\
-\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{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&\livelink{chap:flag}{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&\livelink{chap:flag}{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, \livelink{chap:flag}{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&\livelink{chap:flag}{flag}     \\
-
-
-\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&\livelink{chap:flag}{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&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference     \\ 
-\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant     \\
-\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&\livelink{chap:flag}{flag}     \\
-\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&\livelink{chap:flag}{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& ---     \\
-
-\end{longtable}
-\ddag  Attribute new in DWARF Version 4 
+\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 attribute!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}\addtoindex{UTF-8}  \\
+\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} 
 \end{centering}
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
   \caption{Attribute form encodings} \label{tab:attributeformencodings} \\
-  \hline \\ \bfseries Form name&\bfseries Value &\bfseries Classes \\ \hline
+  \hline \bfseries Form name&\bfseries Value &\bfseries Classes \\ \hline
 \endfirsthead
   \bfseries Form name&\bfseries Value &\bfseries Classes\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \endlastfoot
 \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
 \livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&\livelink{chap:block}{block} \\
@@ -1028,24 +1242,30 @@ Child determination name& Value\\ \hline
 \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
  
 \end{longtable}
-\ddag  FORM new in DWARF Version 4 
 \end{centering}
 
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
-Integers may be encoded using ``Little Endian Base 128''
-(LEB128) numbers. LEB128 is a scheme for encoding integers
+\addtoindexx{variable length data|see {LEB128}}
+Integers may be 
+\addtoindexx{Little Endian Base 128|see{LEB128}}
+encoded using ``Little Endian Base 128''
+\addtoindexx{little-endian encoding|see{endian attribute}}
+(LEB128) numbers. 
+\addtoindexx{LEB128}
+LEB128 is a scheme for encoding integers
 densely that exploits the assumption that most integers are
 small in magnitude.
 
-This encoding is equally suitable whether the target machine
-architecture represents data in big\dash\  endian or little\dash endian
+\textit{This encoding is equally suitable whether the target machine
+architecture represents data in big\dash\ endian or little\dash endian
 order. It is ``little\dash endian'' only in the sense that it
 avoids using space to represent the ``big'' end of an
 unsigned integer, when the big end is all zeroes or sign
-extension bits.
+extension bits.}
 
 Unsigned LEB128 (ULEB128) numbers are encoded as follows:
+\addtoindexx{LEB128!unsigned, encoding as}
 start at the low order end of an unsigned integer and chop
 it into 7\dash bit chunks. Place each chunk into the low order 7
 bits of a byte. Typically, several of the high order bytes
@@ -1065,6 +1285,7 @@ that an additional byte follows.
 
 
 The encoding for signed, two’s complement LEB128 (SLEB128)
+\addtoindexx{LEB128!signed, encoding as}
 numbers is similar, except that the criterion for discarding
 high order bytes is not whether they are zero, but whether
 they consist entirely of sign extension bits. Consider the
@@ -1078,17 +1299,21 @@ decoder must know what type of number to expect.
 Table \refersec{tab:examplesofunsignedleb128encodings}
 gives some examples of unsigned LEB128 numbers and 
 Table \refersec{tab:examplesofsignedleb128encodings}
-gives some examples of signed LEB128 numbers.
+gives some examples of signed LEB128 
+numbers.
 
-Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
-gives algorithms for encoding and decoding these forms.
+\textit{Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
+\addtoindexx{LEB128!examples}
+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} \\
-  \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
+  \caption{Examples of unsigned LEB128 encodings}
+  \label{tab:examplesofunsignedleb128encodings} 
+  \addtoindexx{LEB128 encoding!examples} \\
+  \hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
@@ -1102,7 +1327,6 @@ gives algorithms for encoding and decoding these forms.
 129& 1 + 0x80 & 1 \\
 130& 2 + 0x80 & 1 \\
 12857& 57 + 0x80 & 100 \\
-
 \end{longtable}
 \end{centering}
 
@@ -1111,8 +1335,8 @@ 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} \\
-  \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
+  \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
 \endhead
@@ -1139,7 +1363,9 @@ gives algorithms for encoding and decoding these forms.
 \subsection{DWARF Expressions}
 \label{datarep:dwarfexpressions}
 
-A DWARF expression is stored in a \nolink{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
@@ -1150,7 +1376,7 @@ Table \refersec{tab:dwarfoperationencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l|l}
   \caption{DWARF operation encodings} \label{tab:dwarfoperationencodings} \\
-  \hline \\ & &\bfseries No. of  &\\ 
+  \hline & &\bfseries No. of  &\\ 
   \bfseries Operation&\bfseries Code &\bfseries Operands &\bfseries Notes\\ \hline
 \endfirsthead
    & &\bfseries No. of &\\ 
@@ -1159,6 +1385,7 @@ Table \refersec{tab:dwarfoperationencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \endlastfoot
 
 \livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
@@ -1216,17 +1443,17 @@ Table \refersec{tab:dwarfoperationencodings}.
 \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) \\
+\ldots & & &\hspace{0.5cm}(\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) \\
+\ldots & & &\hspace{0.5cm}(\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) \\
+... & &              &\hspace{0.5cm}(\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 \\
@@ -1248,9 +1475,9 @@ Table \refersec{tab:dwarfoperationencodings}.
 \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\\
-\livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value}&0x9e &2&ULEB128 size followed by \\
+\livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value} \ddag &0x9e &2&ULEB128 size followed by \\
 &&&\nolink{block} of that size\\
-\livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} &0x9f &0& \\
+\livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} \ddag &0x9f &0& \\
 \livetarg{chap:DWOPlouser}{DW\-\_OP\-\_lo\-\_user} &0xe0 && \\
 \livetarg{chap:DWOPhiuser}{DW\-\_OP\-\_hi\-\_user} &0xff && \\
 
@@ -1267,20 +1494,25 @@ location of a variable or other entity.
 \subsection{Location Lists}
 \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.
+Each entry in a \addtoindex{location list} is either a location 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
+A \addtoindex{location list} entry consists of two address offsets followed
 by a 2\dash byte length, followed by a block of contiguous bytes
 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
+For a \addtoindex{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}).
 
@@ -1289,7 +1521,9 @@ the corresponding compilation unit must be defined
 
 The encodings of the 
 \hypertarget{chap:DWATencodingencodingofbasetype}
-constants used in the 
+constants used in 
+\addtoindexx{encoding attribute!encoding}
+the 
 \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
 attribute are given in 
 Table \refersec{tab:basetypeencodingvalues}
@@ -1298,13 +1532,14 @@ Table \refersec{tab:basetypeencodingvalues}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Base type encoding values} \label{tab:basetypeencodingvalues} \\
-  \hline \\ \bfseries Base type encoding code name&\bfseries Value \\ \hline
+  \hline \bfseries Base type encoding code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Base type encoding code name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \endlastfoot
 
 \livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
@@ -1327,7 +1562,6 @@ Table \refersec{tab:basetypeencodingvalues}
 \livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
-\ddag  Base type encoding new in DWARF Version 4
 \end{centering}
 
 
@@ -1341,7 +1575,7 @@ Table \refersec{tab:decimalsignencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Decimal sign encodings} \label{tab:decimalsignencodings} \\
-  \hline \\ \bfseries Decimal sign code name&\bfseries Value \\ \hline
+  \hline \bfseries Decimal sign code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Decimal sign code name&\bfseries Value\\ \hline
 \endhead
@@ -1367,7 +1601,7 @@ Table \refersec{tab:endianityencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Endianity encodings} \label{tab:endianityencodings}\\
-  \hline \\ \bfseries Endian code name&\bfseries Value \\ \hline
+  \hline \bfseries Endian code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Endian code name&\bfseries Value\\ \hline
 \endhead
@@ -1387,15 +1621,18 @@ Table \refersec{tab:endianityencodings}.
 
 \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}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Accessibility encodings} \label{tab:accessibilityencodings}\\
-  \hline \\ \bfseries Accessibility code name&\bfseries Value \\ \hline
+  \hline \bfseries Accessibility code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Accessibility code name&\bfseries Value\\ \hline
 \endhead
@@ -1422,7 +1659,7 @@ Table \refersec{tab:visibilityencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Visibility encodings} \label{tab:visibilityencodings}\\
-  \hline \\ \bfseries Visiibility code name&\bfseries Value \\ \hline
+  \hline \bfseries Visiibility code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Visibility code name&\bfseries Value\\ \hline
 \endhead
@@ -1449,7 +1686,7 @@ Table \refersec{tab:virtualityencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Virtuality encodings} \label{tab:virtualityencodings}\\
-  \hline \\ \bfseries Virtuality code name&\bfseries Value \\ \hline
+  \hline \bfseries Virtuality code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Virtuality code name&\bfseries Value\\ \hline
 \endhead
@@ -1475,7 +1712,12 @@ attribute.
 \section{Source Languages}
 \label{datarep:sourcelanguages}
 
-The encodings of the constants used in the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
+The encodings of the constants used 
+\addtoindexx{language attribute, encoding}
+in 
+\addtoindexx{language name encoding}
+the 
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
 attribute are given in 
 Table \refersec{tab:languageencodings}.
 Names marked with
@@ -1484,7 +1726,9 @@ Names marked with
 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
+also shows the 
+\addtoindexx{lower bound attribute!default}
+default lower bound, if any, assumed for
 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.
@@ -1493,18 +1737,19 @@ defined language.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|c}
   \caption{Language encodings} \label{tab:languageencodings}\\
-  \hline \\ \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound \\ \hline
+  \hline \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound \\ \hline
 \endfirsthead
   \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \dag See text
 \endlastfoot
 
 \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       \\
+\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       \\
@@ -1514,7 +1759,7 @@ defined language.
 \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       \\
+\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 \\
@@ -1526,7 +1771,6 @@ defined language.
 \livetarg{chap:DWLANGhiuser}{DW\-\_LANG\-\_hi\-\_user}&0xffff & \\
 
 \end{longtable}
-\dag See text
 \end{centering}
 
 \section{Address Class Encodings}
@@ -1549,7 +1793,7 @@ Table \refersec{tab:identifiercaseencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Identifier case encodings} \label{tab:identifiercaseencodings}\\
-  \hline \\ \bfseries Identifier case name&\bfseries Value \\ \hline
+  \hline \bfseries Identifier case name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Identifier case name&\bfseries Value\\ \hline
 \endhead
@@ -1574,7 +1818,7 @@ Table \refersec{tab:callingconventionencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Calling convention encodings} \label{tab:callingconventionencodings}\\
-  \hline \\ \bfseries Calling Convention name&\bfseries Value \\ \hline
+  \hline \bfseries Calling Convention name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Calling Convention name&\bfseries Value\\ \hline
 \endhead
@@ -1595,7 +1839,9 @@ Table \refersec{tab:callingconventionencodings}.
 \section{Inline Codes}
 \label{datarep:inlinecodes}
 
-The encodings of the constants used in the 
+The encodings of the constants used in 
+\addtoindexx{inline attribute!encoding}
+the 
 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
 Table \refersec{tab:inlineencodings}.
 
@@ -1603,7 +1849,7 @@ Table \refersec{tab:inlineencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Inline encodings} \label{tab:inlineencodings}\\
-  \hline \\ \bfseries Iline Code name&\bfseries Value \\ \hline
+  \hline \bfseries Iline Code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Iline Code name&\bfseries Value\\ \hline
 \endhead
@@ -1634,7 +1880,7 @@ Table \refersec{tab:orderingencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Ordering encodings} \label{tab:orderingencodings}\\
-  \hline \\ \bfseries Ordering name&\bfseries Value \\ \hline
+  \hline \bfseries Ordering name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Ordering name&\bfseries Value\\ \hline
 \endhead
@@ -1653,18 +1899,20 @@ Table \refersec{tab:orderingencodings}.
 \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 
 Table \refersec{tab:discriminantdescriptorencodings}.
 
-% Odd that the 'Name' field captalized here, it is not caps elsewhere.
+% Odd that the 'Name' field capitalized here, it is not caps elsewhere.
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Discriminant descriptor encodings} \label{tab:discriminantdescriptorencodings}\\
-  \hline \\ \bfseries Descriptor Name&\bfseries Value \\ \hline
+  \hline \bfseries Descriptor Name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Descriptor Name&\bfseries Value\\ \hline
 \endhead
@@ -1690,7 +1938,10 @@ 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
+\addtoindexx{unit\_length}
+A 4\dash byte or 12\dash byte unsigned integer 
+\addtoindexx{initial length}
+representing the length
 of the \addtoindex{.debug\_info}
 contribution for that compilation unit,
 not including the length field itself. In the 32\dash bit DWARF
@@ -1700,15 +1951,19 @@ of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
 integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  version (uhalf)
+\item  version (\addtoindex{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 
+\item \addtoindex{debug\_info\_offset} (section offset) \\
+A 
+\addtoindexx{section offset!in name lookup table set of entries}
+4\dash byte or 8\dash byte 
+offset into the 
 \addtoindex{.debug\_info}
 section of the compilation unit header.
 In
@@ -1716,8 +1971,11 @@ 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 offsets
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  debug\_info\_length (section length) \\
-A 4\dash byte or 8\dash byte length containing the size in bytes of the
+\item  \addtoindex{debug\_info\_length} (section length) \\
+\addtoindexx{section length!in .debug\_pubnames header}
+A 
+\addtoindexx{section length!in .debug\_pubtypes header}
+4\dash byte or 8\dash byte length containing the size in bytes of the
 contents of the \addtoindex{.debug\_info}
 section generated to represent
 this compilation unit. In the 32\dash bit DWARF format, this is
@@ -1750,7 +2008,9 @@ section begins with a header containing:
 % these tables.
 
 \item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
 A 4-byte or 12-byte length containing the length of the
+\addtoindexx{initial length}
 set of entries for this compilation unit, not including the
 length field itself. In the 32-bit DWARF format, this is a
 4-byte unsigned integer (which must be less than 0xfffffff0);
@@ -1759,12 +2019,15 @@ in the 64-bit DWARF format, this consists of the 4-byte value
 the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item version (uhalf) \\
-A 2\dash byte version identifier containing the value 2 
+\item version (\addtoindex{uhalf}) \\
+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 
+A 
+\addtoindexx{section offset!in .debug\_aranges header}
+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,
@@ -1774,12 +2037,16 @@ 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
+address 
+\addtoindexx{size of an address}
+(or the offset portion of an address for segmented
 \addtoindexx{address space!segmented}
 addressing) on the target system.
 
 \item segment\_size (ubyte) \\
-A 1\dash byte unsigned integer containing the size in bytes of a
+A 
+\addtoindexx{segment\_size}
+1\dash byte unsigned integer containing the size in bytes of a
 segment selector on the target system.
 
 \end{enumerate}
@@ -1787,17 +2054,17 @@ segment selector on the target system.
 This header is followed by a series of tuples. Each tuple
 consists of a segment, an address and a length. 
 The segment
-size is given by the segment\_size field of the header; the
+size is given by the \addtoindex{segment\_size} field of the header; the
 address and length size are each given by the address\_size
 field of the header. 
 The first tuple following the header in
 each set begins at an offset that is a multiple of the size
 of a single tuple (that is, the size of a segment selector
-plus twice the size of an address). 
+plus twice the \addtoindex{size of an address}). 
 The header is padded, if
 necessary, to that boundary. Each set of tuples is terminated
 by a 0 for the segment, a 0 for the address and 0 for the
-length. If the segment\_size field in the header is zero,
+length. If the \addtoindex{segment\_size} field in the header is zero,
 the segment selectors are omitted from all tuples, including
 the terminating tuple.
 
@@ -1805,7 +2072,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'' 
@@ -1814,14 +2082,15 @@ as a single byte containing the value 0
 for ``false,'' and a non-zero value for ``true.''
 
 The encodings for the standard opcodes are given in 
+\addtoindexx{line number opcodes!standard opcode encoding}
 Table \refersec{tab:linenumberstandardopcodeencodings}.
 
-% Odd that the 'Name' field captalized here, it is not caps elsewhere.
+% Odd that the 'Name' field capitalized here, it is not caps elsewhere.
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Line Number Standard Opcode encodings} \label{tab:linenumberstandardopcodeencodings}\\
-  \hline \\ \bfseries Opcode Name&\bfseries Value \\ \hline
+  \hline \bfseries Opcode Name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Opcode Name&\bfseries Value\\ \hline
 \endhead
@@ -1848,19 +2117,21 @@ Table \refersec{tab:linenumberstandardopcodeencodings}.
 
 
 The encodings for the extended opcodes are given in 
+\addtoindexx{line number opcodes!extended opcode encoding}
 Table \refersec{tab:linenumberextendedopcodeencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Line Number Extended Opcode encodings} \label{tab:linenumberextendedopcodeencodings}\\
-  \hline \\ \bfseries Opcode Name&\bfseries Value \\ \hline
+  \hline \bfseries Opcode Name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Opcode Name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag New in \addtoindex{DWARF Version 4}
 \endlastfoot
 
 \livelink{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence}&0x01    \\
@@ -1871,7 +2142,6 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
 
 \end{longtable}
-\ddag Extended opcode new in DWARF Version 4.
 \end{centering}
 
 \section{Macro Information}
@@ -1879,10 +2149,13 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 
 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 \livelink{chap:DWMACINFOvendorext}{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 
+The encodings 
+\addtoindexx{macinfo types!encoding}
+are given in 
 Table \refersec{tab:macinfotypeencodings}.
 
 
@@ -1890,7 +2163,7 @@ Table \refersec{tab:macinfotypeencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Macinfo Type Encodings} \label{tab:macinfotypeencodings}\\
-  \hline \\ \bfseries Macinfo Type Name&\bfseries Value \\ \hline
+  \hline \bfseries Macinfo Type Name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Macinfo Type Name&\bfseries Value\\ \hline
 \endhead
@@ -1915,8 +2188,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
@@ -1930,7 +2203,7 @@ Table \refersec{tab:callframeinstructionencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|c|l|l}
   \caption{Call frame instruction encodings} \label{tab:callframeinstructionencodings} \\
-  \hline \\ &\bfseries High 2 &\bfseries Low 6 &  & \\
+  \hline &\bfseries High 2 &\bfseries Low 6 &  & \\
   \bfseries Instruction&\bfseries Bits &\bfseries Bits &\bfseries Operand 1 &\bfseries Operand 2\\ \hline
 \endfirsthead
    & \bfseries High 2 &\bfseries Low 6 &  &\\
@@ -1973,23 +2246,30 @@ Table \refersec{tab:callframeinstructionencodings}.
 \end{longtable}
 \end{centering}
 
-\section{Non-continguous Address Ranges}
+\section{Non-contiguous Address Ranges}
 \label{datarep:noncontiguousaddressranges}
 
-Each entry in a range list 
+Each entry in a \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges})
 is either a
-range list entry, a base address selection entry, or an end
+\addtoindexx{base address selection entry!in range list}
+range list entry, 
+\addtoindexx{range list}
+a base address selection entry, or an end
 of list entry.
 
-A range list entry consists of two relative addresses. The
+A \addtoindex{range list} entry consists of two relative addresses. The
 addresses are the same size as addresses on the target machine.
 
-A base address selection entry and an 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
+For a \addtoindex{range list} to be specified, the base address of the
+\addtoindexx{base address selection entry!in range list}
 corresponding compilation unit must be defined 
 (see Section \refersec{chap:normalandpartialcompilationunitentries}).
 
@@ -1998,7 +2278,9 @@ corresponding compilation unit must be defined
 \label{datarep:dependenciesandconstraints}
 
 The debugging information in this format is intended to
-exist in 
+exist 
+\addtoindexx{DWARF section names!list of}
+in 
 the \addtoindex{.debug\_abbrev}, 
 \addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_frame},
@@ -2021,21 +2303,27 @@ word\dash aligned. Consequently: •
 32\dash bit addresses, an assembler or compiler must provide a way
 to produce 2\dash byte and 4\dash byte quantities without alignment
 restrictions, and the linker must be able to relocate a
-4\dash byte address or section offset that occurs at an arbitrary
+4\dash byte address or 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an arbitrary
 alignment.
 
 \item For the 32\dash bit DWARF format and a target architecture with
 64\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to relocate
-an 8\dash byte address or 4\dash byte section offset that occurs at an
+an 8\dash byte address or 4\dash byte 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an
 arbitrary alignment.
 
 \item For the 64\dash bit DWARF format and a target architecture with
 32\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to relocate
-a 4\dash byte address or 8\dash byte section offset that occurs at an
+a 4\dash byte address or 8\dash byte 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an
 arbitrary alignment.
 
 \textit{It is expected that this will be required only for very large
@@ -2047,7 +2335,9 @@ executable object.}
 64\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to
-relocate an 8\dash byte address or section offset that occurs at
+relocate an 8\dash byte address or 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at
 an arbitrary alignment.
 \end{itemize}
 
@@ -2063,7 +2353,7 @@ Table 41 \refersec{tab:integerrepresentationnames}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{c|l}
   \caption{Integer Representation Names} \label{tab:integerrepresentationnames}\\
-  \hline \\ \bfseries Representation Name&\bfseries Representation \\ \hline
+  \hline \bfseries Representation Name&\bfseries Representation \\ \hline
 \endfirsthead
   \bfseries Representation Name&\bfseries Representation\\ \hline
 \endhead
@@ -2072,10 +2362,10 @@ Table 41 \refersec{tab:integerrepresentationnames}.
   \hline
 \endlastfoot
 
-sbyte&  signed, 1\dash byte integer \\
-ubyte&unsigned, 1\dash byte integer \\
-uhalf&unsigned, 2\dash byte integer \\
-uword&unsigned, 4\dash byte integer \\
+\addtoindex{sbyte}&  signed, 1\dash byte integer \\
+\addtoindex{ubyte}&unsigned, 1\dash byte integer \\
+\addtoindex{uhalf}&unsigned, 2\dash byte integer \\
+\addtoindex{uword}&unsigned, 4\dash byte integer \\
 
 \end{longtable}
 \end{centering}
@@ -2084,11 +2374,15 @@ uword&unsigned, 4\dash byte integer \\
 \label{datarep:typesignaturecomputation}
 
 A type signature is computed only by the DWARF producer;
+\addtoindexx{type signature computation}
 it is used by a DWARF consumer to resolve type references to
-the type definitions that are contained in type units.
+the type definitions that are contained in 
+\addtoindexx{type unit}
+type units.
 
-The type signature for a type T0 is formed from the MD5
-hash of a flattened description of the type. The flattened
+The type signature for a type T0 is formed from the 
+\addtoindex{MD5 hash}
+of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
 
@@ -2104,7 +2398,10 @@ 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 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
+the name (taken from 
+\addtoindexx{name attribute}
+the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
+\addtoindexx{name attribute}
 or namespace (including its trailing null byte).
 
 \item  Append to S the letter 'D', followed by the DWARF tag of
@@ -2166,7 +2463,9 @@ code, and the attribute value.
 \item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
 \end{itemize}
 
-Note that except for the initial \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
+Note that except for the initial 
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
+\addtoindexx{name attribute}
 attributes are appended in order according to the alphabetical
 spelling of their identifier.
 
@@ -2224,7 +2523,9 @@ 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 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
+function entry, and has 
+a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
+\addtoindexx{name attribute}
 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
@@ -2259,16 +2560,18 @@ be recursively processed or replaced with the name of the
 referent (in Step 4, 5 or 6). If neither treatment applies to
 an attribute that references another type entry, the entry
 that contains that attribute should not be considered for a
-separate type unit.}
+separate \addtoindex{type unit}.}
 
 \textit{If a debugging information entry contains an attribute from
 the list above that would require an unsupported form, that
-entry should not be considered for a separate type unit.}
+entry should not be considered for a separate 
+\addtoindex{type unit}.}
 
-\textit{A type should be considered for a separate type unit only
+\textit{A type should be considered for a separate 
+\addtoindex{type unit} only
 if all of the type entries that it contains or refers to in
 Steps 6 and 7 can themselves each be considered for a separate
-type unit.}
+\addtoindex{type unit}.}
 
 Where the DWARF producer may reasonably choose two or more
 different forms for a given attribute, it should choose
@@ -2277,7 +2580,7 @@ example, a constant value should be preferred to a location
 expression when possible.)
 
 Once the string S has been formed from the DWARF encoding,
-an MD5 hash is computed for the string and the lower 64 bits
+an \addtoindex{MD5 hash} is computed for the string and the lower 64 bits
 are taken as the type signature.
 
 \textit{The string S is intended to be a flattened representation of
@@ -2285,7 +2588,8 @@ the type that uniquely identifies that type (i.e., a different
 type is highly unlikely to produce the same string).}
 
 \textit{A debugging information entry should not be placed in a
-separate type unit if any of the following apply:}
+separate \addtoindex{type unit}
+if any of the following apply:}
 
 \begin{itemize}
 
@@ -2296,7 +2600,7 @@ operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
 \item \textit{The entry has an attribute whose value refers
-to a code location or a location list.}
+to a code location or a \addtoindex{location list}.}
 
 \item \textit{The entry has an attribute whose value refers
 to another debugging information entry that does not represent
@@ -2310,16 +2614,43 @@ a type.}
 \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.}
+not be placed in 
+\addtoindexx{type unit}
+separate type units.}
 
 \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 \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}, and
+\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
+\addtoindexx{MD5 hash}
 same hash.}
 
+\item \textit{The \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer} attribute is not included 
+because the information it provides is not necessary for the 
+computation of a unique type signature.}
+
 \end{itemize}
+
+\textit{Nested types and some types referred to by a debugging 
+information entry are encoded by name rather than by recursively 
+encoding the type to allow for cases where a complete definition 
+of the type might not be available in all compilation units.}
+
+\textit{If a type definition contains the definition of a member function, 
+it cannot be moved as is into a type unit, because the member function 
+contains attributes that are unique to that compilation unit. 
+Such a type definition can be moved to a type unit by rewriting the DIE tree, 
+moving the member function declaration into a separate declaration tree, 
+and replacing the function definition in the type with a non-defining 
+declaration of the function (as if the function had been defined out of 
+line).}
+
+An example that illustrates the computation of an MD5 hash may be found in 
+Appendix \refersec{app:usingtypeunits}.
+
+