Complete figure to table conversion; other cleanups
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 48abbd6..a951f62 100644 (file)
@@ -153,10 +153,7 @@ can coexist and be distinguished within a single linked object.
 The differences between the 32\dash\   and 64\dash bit 
 DWARF formats are
 detailed in the following:
-
-
 \begin{enumerate}[1.]
-
 \item  In the 32\dash bit DWARF format, an 
 \addtoindex{initial length field}
 (see 
@@ -227,10 +224,11 @@ of DWARF format as follows. For the 32\dash bit DWARF format,
 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
 format, the value is a 64\dash bit unsigned integer.
 \begin{center}
-\begin{tabular}{lll}
+\begin{tabular}{ll}
 Form & Role  \\ \hline
 \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in \addtoindex{.debug\_info} \\
-\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than \addtoindex{.debug\_info} or \addtoindex{.debug\_str} \\
+\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& 
+        \parbox{5.5cm}{offset in a section other than \addtoindex{.debug\_info} or \addtoindex{.debug\_str}} \\
 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in \addtoindex{.debug\_str} \\
 \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&offset in \addtoindex{.debug\_info} \\
 \end{tabular}
@@ -286,7 +284,8 @@ the object file. Each such contribution consists of a
 compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}) 
 followed by a
-single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
+single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or 
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
 information entry, together with its children.
 
 For each type defined in a compilation unit, a contribution may
@@ -322,6 +321,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
@@ -334,7 +334,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 for the compilation unit\addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
@@ -351,7 +351,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
@@ -376,6 +376,7 @@ 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
@@ -387,7 +388,7 @@ 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} 
@@ -487,6 +488,85 @@ number that encodes the entry’s tag. The encodings for the
 tag names are given in 
 Table \refersec{tab:tagencodings}.
 
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|l}
+  \hline
+  \caption{Tag encodings} \label{tab:tagencodings} \\
+  \hline \bfseries Tag name&\bfseries Value\\ \hline
+\endfirsthead
+  \bfseries Tag name&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
+\endlastfoot
+\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
+\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
+\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
+\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
+\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
+\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
+\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
+\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
+\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
+\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
+\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
+\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
+\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
+\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
+\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
+\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
+\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
+\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
+\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
+\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
+\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
+\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
+\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
+\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
+\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
+\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
+\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
+\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
+\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
+\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
+\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
+\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
+\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
+\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
+\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
+\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
+\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
+\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
+\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
+\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
+\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
+\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
+\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
+\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
+\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
+\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
+\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
+\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
+\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
+\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
+\end{longtable}
+\end{centering}
+
 Following the tag encoding is a 1\dash byte value that determines
 whether a debugging information entry using this abbreviation
 has child entries or not. If the value is 
@@ -503,8 +583,26 @@ 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.)
+
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\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{longtable}
+\end{centering}
 
 Finally, the child encoding is followed by a series of
 attribute specifications. Each attribute specification
@@ -529,10 +627,11 @@ 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}
@@ -563,7 +662,8 @@ 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
+\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and 
+\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
 \addtoindexx{lineptr class}
 members 
 \addtoindexx{rangelistptr class}
@@ -653,14 +753,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} \\
@@ -729,7 +830,8 @@ 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
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
+It consists of an offset from the
 beginning of the \addtoindex{.debug\_macinfo} 
 section to the first byte of
 the data making up the macro information list for the compilation
@@ -758,7 +860,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}
 
@@ -795,7 +900,8 @@ information entry within a
 it may refer to an entry in a different compilation unit
 from the unit containing the reference, and may refer to an
 entry in a different shared object.  This type of reference
-(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
+(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) 
+is an offset from the beginning of the
 \addtoindex{.debug\_info} 
 section of the target executable or shared object;
 it is relocatable in a relocatable object file and frequently
@@ -808,17 +914,18 @@ 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
-another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
-global symbolic name.
+\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.}
 
-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
@@ -830,15 +937,15 @@ reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
 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
@@ -858,20 +965,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}
 
@@ -884,115 +992,28 @@ of
 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
+\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or 
+\livelink{chap:rangelistptr}{rangelistptr} to point into either the
 \addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
 
 The form encodings are listed in 
 Table \refersec{tab:attributeformencodings}.
 
-\begin{centering}
-\setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l}
-  \caption{Tag encodings} \label{tab:tagencodings} \\
-  \hline \\ \bfseries Tag name&\bfseries Value\\ \hline
-\endfirsthead
-  \bfseries Tag name&\bfseries Value \\ \hline
-\endhead
-  \hline \emph{Continued on next page}
-\endfoot
-  \hline
-\endlastfoot
-\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
-\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
-\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
-\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
-\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
-\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
-\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
-\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
-\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
-\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
-\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
-\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
-\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
-\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
-\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
-\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
-\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
-\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
-\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
-\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
-\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
-\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
-\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
-\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
-\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
-\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
-\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
-\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
-\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
-\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
-\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
-\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
-\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
-\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
-\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
-\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
-\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
-\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
-\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
-\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
-\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
-\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
-\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
-\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
-\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
-\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
-\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
-\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
-\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
-\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
-\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
-\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
-\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
-\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
-\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
-\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
-\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
-\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
-\end{longtable}
-\ddag  TAG new in \addtoindex{DWARF Version 4}
-\end{centering}
-
-
-\begin{figure}[here]
-\centering
-\setlength{\extrarowheight}{0.1cm}
-\caption{Child determination encodings}
-\label{tab:childdeterminationencodings}
-\begin{tabular}{l|l} \hline
-Child determination name& Value\\ \hline
-\livelink{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}&0x00 \\ 
-\livelink{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes}&0x01 \\ \hline
-\end{tabular}
-\end{figure}
-
 
 \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 \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 \livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference 
         \addtoindexx{sibling attribute!encoding} \\
@@ -1059,7 +1080,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 
@@ -1125,7 +1146,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} 
@@ -1184,21 +1205,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 \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
 \livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&\livelink{chap:block}{block} \\
@@ -1227,7 +1248,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}
@@ -1243,12 +1263,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}
@@ -1288,16 +1308,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
@@ -1311,7 +1333,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}
 
@@ -1321,7 +1342,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
@@ -1359,9 +1380,9 @@ Table \refersec{tab:dwarfoperationencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l|l|l}
+\begin{longtable}{l|l|c|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 &\\ 
@@ -1370,6 +1391,7 @@ Table \refersec{tab:dwarfoperationencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
@@ -1427,17 +1449,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 \\
@@ -1459,9 +1481,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 && \\
 
@@ -1516,13 +1538,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 \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
@@ -1545,7 +1568,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}
 
 
@@ -1559,7 +1581,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
@@ -1585,7 +1607,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
@@ -1616,7 +1638,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
@@ -1643,7 +1665,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
@@ -1670,7 +1692,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
@@ -1721,13 +1743,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 \ \textit{See text}
 \endlastfoot
 
 \livelink{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&0x0001&0       \\
@@ -1754,7 +1777,6 @@ defined language.
 \livetarg{chap:DWLANGhiuser}{DW\-\_LANG\-\_hi\-\_user}&0xffff & \\
 
 \end{longtable}
-\dag See text
 \end{centering}
 
 \section{Address Class Encodings}
@@ -1777,7 +1799,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
@@ -1802,7 +1824,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
@@ -1833,9 +1855,9 @@ 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 Inline Code name&\bfseries Value \\ \hline
 \endfirsthead
-  \bfseries Iline Code name&\bfseries Value\\ \hline
+  \bfseries Inline Code name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
@@ -1864,7 +1886,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
@@ -1891,12 +1913,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
@@ -1922,6 +1944,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
@@ -1934,7 +1957,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}
@@ -1991,6 +2014,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
@@ -2001,7 +2025,7 @@ 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}). 
@@ -2067,12 +2091,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
@@ -2088,7 +2112,7 @@ Table \refersec{tab:linenumberstandardopcodeencodings}.
 \livelink{chap:DWLNSsetcolumn}{DW\-\_LNS\-\_set\-\_column}&0x05 \\
 \livelink{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt}&0x06 \\
 \livelink{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}&0x07 \\
-\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}*0x08 \\
+\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}&0x08 \\
 \livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}&0x09 \\
 \livelink{chap:DWLNSsetprologueend}{DW\-\_LNS\-\_set\-\_prologue\-\_end}&0x0a \\
 \livelink{chap:DWLNSsetepiloguebegin}{DW\-\_LNS\-\_set\-\_epilogue\-\_begin}&0x0b \\
@@ -2106,13 +2130,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 \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence}&0x01    \\
@@ -2123,7 +2148,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}
@@ -2140,12 +2164,13 @@ The encodings
 are given in 
 Table \refersec{tab:macinfotypeencodings}.
 
+\clearpage
 
 \begin{centering}
 \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
@@ -2185,7 +2210,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 &  &\\
@@ -2228,7 +2253,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}
@@ -2335,7 +2360,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
@@ -2393,57 +2418,58 @@ the debugging information entry.
 the debugging information entry, in the order listed below,
 append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
-
-\begin{itemize}
-\item \livelink{chap:DWATname}{DW\-\_AT\-\_name}
-\item \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
-\item \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
-\item \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}
-\item \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}
-\item \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
-\item \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
-\item \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
-\item \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
-\item \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
-\item \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
-\item \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
-\item \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
-\item \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
-\item \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
-\item \livelink{chap:DWATcount}{DW\-\_AT\-\_count}
-\item \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
-\item \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
-\item \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
-\item \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
-\item \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
-\item \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
-\item \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
-\item \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}
-\item \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
-\item \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
-\item \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
-\item \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
-\item \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}
-\item \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
-\item \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
-\item \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
-\item \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
-\item \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}
-\item \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}
-\item \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
-\item \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
-\item \livelink{chap:DWATsmall}{DW\-\_AT\-\_small}
-\item \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
-\item \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
-\item \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
-\item \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
-\item \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
-\item \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
-\item \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
-\item \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
-\item \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
-\item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
-\end{itemize}
+\begin{center}
+\autocols[0pt]{c}{2}{l}{
+\livelink{chap:DWATname}{DW\-\_AT\-\_name},
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility},
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class},
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated},
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial},
+\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated},
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale},
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size},
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride},
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride},
+\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr},
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value},
+\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type},
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count},
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset},
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location},
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location},
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale},
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign},
+\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value},
+\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count},
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr},
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list},
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value},
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding},
+\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class},
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity},
+\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit},
+\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional},
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location},
+\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound},
+\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable},
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering},
+\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string},
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped},
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small},
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment},
+\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length},
+\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled},
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound},
+\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location},
+\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8},
+\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter},
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality},
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility},
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
+}
+\end{center}
 
 Note that except for the initial 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
@@ -2604,11 +2630,35 @@ separate type units.}
 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}.
+
+