Misc corrections Chpt 6 thru App A
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 7be53cd..3070974 100644 (file)
@@ -94,7 +94,9 @@ not appear in DWARF debugging information.
 \addtoindexx{reserved values!initial length}
 
 An \addtoindex{initial length field} is one of the length fields that occur
-at the beginning of those DWARF sections that have a header
+at the beginning 
+of those DWARF sections that 
+have a header
 (\addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_info}, 
 \addtoindex{.debug\_types}, 
@@ -175,14 +177,23 @@ 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
+\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}
@@ -281,7 +292,8 @@ 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.
@@ -310,6 +322,7 @@ units may share the same table.
 \begin{enumerate}[1.]
 
 \item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
 A 4\dash byte or 12\dash byte 
 \addtoindexx{initial length}
 unsigned integer representing the length
@@ -322,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\addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 The value in this field is 4.
 
 \item \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
+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
@@ -337,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
@@ -355,13 +370,14 @@ 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) \\
+\addtoindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
@@ -373,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\addtoindexx{version number!type 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 \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
+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
@@ -389,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}
@@ -398,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
@@ -476,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
@@ -502,10 +530,10 @@ 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}
@@ -626,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} \\
@@ -659,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
@@ -678,7 +710,9 @@ 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
@@ -693,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} 
@@ -707,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 
@@ -722,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}
 
@@ -734,8 +775,11 @@ There are three types of reference.
 The 
 \addtoindexx{reference class}
 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
+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
@@ -769,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 
@@ -814,20 +863,21 @@ 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}
 
@@ -850,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 \\
@@ -921,34 +972,42 @@ 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 \addtoindex{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} \addtoindexx{attribute encodings} \\
-  \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 
         \addtoindexx{sibling attribute!encoding} \\
@@ -1015,7 +1074,7 @@ Child determination name& Value\\ \hline
 \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant 
         \addtoindexx{accessibility attribute!encoding}  \\
 \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant 
-        \addtoindexx{address class atribute!encoding}  \\
+        \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 
@@ -1081,7 +1140,7 @@ Child determination name& Value\\ \hline
 \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}  \\
+        \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} 
@@ -1140,21 +1199,21 @@ Child determination name& Value\\ \hline
 \livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding}  \\
 
-\end{longtable}
-\ddag  Attribute new in \addtoindex{DWARF Version 4} 
+\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} \\
@@ -1183,7 +1242,6 @@ Child determination name& Value\\ \hline
 \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
  
 \end{longtable}
-\ddag  FORM new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \section{Variable Length Data}
@@ -1199,12 +1257,12 @@ 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}
@@ -1244,16 +1302,18 @@ Table \refersec{tab:examplesofsignedleb128encodings}
 gives some examples of signed LEB128 
 numbers.
 
-Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
+\textit{Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
 \addtoindexx{LEB128!examples}
-gives algorithms for encoding and decoding these forms.
+gives algorithms for encoding and decoding these forms.}
 
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Examples of unsigned LEB128 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
@@ -1267,7 +1327,6 @@ gives algorithms for encoding and decoding these forms.
 129& 1 + 0x80 & 1 \\
 130& 2 + 0x80 & 1 \\
 12857& 57 + 0x80 & 100 \\
-\addtoindex{LEB128 encoding!examples}
 \end{longtable}
 \end{centering}
 
@@ -1277,7 +1336,7 @@ gives algorithms for encoding and decoding these forms.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
   \caption{Examples of signed LEB128 encodings} \label{tab:examplesofsignedleb128encodings} \\
-  \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
+  \hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
@@ -1317,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 &\\ 
@@ -1326,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  \\ 
@@ -1383,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 \\
@@ -1415,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 && \\
 
@@ -1472,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 \\
@@ -1501,7 +1562,6 @@ Table \refersec{tab:basetypeencodingvalues}
 \livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
-\ddag  Base type encoding new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 
@@ -1515,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
@@ -1541,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
@@ -1572,7 +1632,7 @@ Table \refersec{tab:accessibilityencodings}.
 \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
@@ -1599,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
@@ -1626,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
@@ -1677,13 +1737,14 @@ 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       \\
@@ -1710,7 +1771,6 @@ defined language.
 \livetarg{chap:DWLANGhiuser}{DW\-\_LANG\-\_hi\-\_user}&0xffff & \\
 
 \end{longtable}
-\dag See text
 \end{centering}
 
 \section{Address Class Encodings}
@@ -1733,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
@@ -1758,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
@@ -1789,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
@@ -1820,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
@@ -1847,12 +1907,12 @@ 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
@@ -1878,6 +1938,7 @@ with a header consisting of:
 
 \begin{enumerate}[1.]
 \item unit\_length (initial length) \\
+\addtoindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
@@ -1890,7 +1951,7 @@ 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\addtoindexx{version number!compilation unit} for the compilation unit
 \addtoindexx{version number!name lookup table}
@@ -1898,8 +1959,11 @@ DWARF information\addtoindexx{version number!compilation unit} for the compilati
 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
@@ -1907,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
@@ -1941,6 +2008,7 @@ 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
@@ -1951,13 +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) \\
+\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,
@@ -1967,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}
@@ -1980,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.
 
@@ -2011,12 +2085,12 @@ 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
@@ -2050,13 +2124,14 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \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    \\
@@ -2067,7 +2142,6 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
 
 \end{longtable}
-\ddag Extended opcode new in \addtoindex{DWARF Version 4}.
 \end{centering}
 
 \section{Macro Information}
@@ -2089,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
@@ -2129,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 &  &\\
@@ -2172,7 +2246,7 @@ 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 \addtoindex{range list}
@@ -2229,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
@@ -2255,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}
 
@@ -2271,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
@@ -2280,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}
@@ -2292,8 +2374,11 @@ 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 
 \addtoindex{MD5 hash}
@@ -2475,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
@@ -2501,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}
 
@@ -2526,17 +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}.
+
+