Bring up to date with approved issues as of April 2014.
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 1a38295..9306573 100644 (file)
@@ -20,27 +20,38 @@ base type encodings, location operations, language names,
 calling conventions and call frame instructions.
 
 The labels denoting the beginning and end of the reserved
 calling conventions and call frame instructions.
 
 The labels denoting the beginning and end of the reserved
+\hypertarget{chap:DWXXXlohiuser}{}
 value range for vendor specific extensions consist of the
 value range for vendor specific extensions consist of the
-appropriate prefix (DW\-\_TAG, DW\-\_AT, DW\-\_END, DW\-\_ATE, DW\-\_OP,
-DW\-\_LANG, DW\-\_LNE, DW\-\_CC or DW\-\_CFA respectively) followed by
+appropriate prefix 
+(\DWATlouserMARK{}\DWAThiuserMARK{}        DW\_AT,
+\DWATElouserMARK{}\DWATEhiuserMARK{}   DW\_ATE, 
+\DWCClouserMARK{}\DWCChiuserMARK{}         DW\_CC,
+\DWCFAlouserMARK{}\DWCFAhiuserMARK{}   DW\_CFA 
+\DWENDlouserMARK{}\DWENDhiuserMARK{}   DW\_END, 
+\DWLANGlouserMARK{}\DWLANGhiuserMARK{}  DW\_LANG, 
+\DWLNElouserMARK{}\DWLNEhiuserMARK{}   DW\_LNE, 
+\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
+\DWOPlouserMARK{}\DWOPhiuserMARK{}         DW\_OP or
+\DWTAGlouserMARK{}\DWTAGhiuserMARK{}   DW\_TAG, 
+respectively) followed by
 \_lo\_user or \_hi\_user. 
 \_lo\_user or \_hi\_user. 
-\textit{For example, for entry tags, the special
-labels are \livetarg{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user} and 
-\livetarg{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}.}
-Values in the
-range between \textit{prefix}\_lo\_user and \textit{prefix}\_hi\_user inclusive,
+Values in the  range between \textit{prefix}\_lo\_user 
+and \textit{prefix}\_hi\_user inclusive,
 are reserved for vendor specific extensions. Vendors may
 use values in this range without conflicting with current or
 future system\dash defined values. All other values are reserved
 for use by the system.
 
 are reserved for vendor specific extensions. Vendors may
 use values in this range without conflicting with current or
 future system\dash defined values. All other values are reserved
 for use by the system.
 
+\textit{For example, for DIE tags, the special
+labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
+
 \textit{There may also be codes for vendor specific extensions
 between the number of standard line number opcodes and
 the first special line number opcode. However, since the
 number of standard opcodes varies with the DWARF version,
 the range for extensions is also version dependent. Thus,
 \textit{There may also be codes for vendor specific extensions
 between the number of standard line number opcodes and
 the first special line number opcode. However, since the
 number of standard opcodes varies with the DWARF version,
 the range for extensions is also version dependent. Thus,
-\livetarg{chap:DWLNSlouser}{DW\-\_LNS\-\_lo\-\_user} and 
-\livetarg{chap:DWLNShiuser}{DW\-\_LNS\-\_hi\-\_user} symbols are not defined.
+\DWLNSlouserTARG{} and 
+\DWLNShiuserTARG{} symbols are not defined.
 }
 
 Vendor defined tags, attributes, base type encodings, location
 }
 
 Vendor defined tags, attributes, base type encodings, location
@@ -54,8 +65,8 @@ other vendors.
 To ensure that extensions added by one vendor may be safely
 ignored by consumers that do not understand those extensions,
 the following rules should be followed:
 To ensure that extensions added by one vendor may be safely
 ignored by consumers that do not understand those extensions,
 the following rules should be followed:
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
 \item New attributes should be added in such a way that a
 debugger may recognize the format of a new attribute value
 without knowing the content of that attribute value.
 \item New attributes should be added in such a way that a
 debugger may recognize the format of a new attribute value
 without knowing the content of that attribute value.
@@ -93,33 +104,127 @@ not appear in DWARF debugging information.
 \label{datarep:initiallengthvalues}
 \addtoindexx{reserved values!initial length}
 
 \label{datarep:initiallengthvalues}
 \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
-(\addtoindex{.debug\_aranges}, 
-\addtoindex{.debug\_info}, 
-\addtoindex{.debug\_types}, 
-\addtoindex{.debug\_line},
-\addtoindex{.debug\_pubnames}, and 
-\addtoindex{.debug\_pubtypes}) or the length field
+An \livetarg{datarep:initiallengthvalues}{initial length field} is one of the length fields that occur
+at the beginning 
+of those DWARF sections that 
+have a header
+(\dotdebugaranges{}, 
+\dotdebuginfo{}, 
+\dotdebugline{},
+\dotdebugpubnames{}, and 
+\dotdebugpubtypes{}) or the length field
 that occurs at the beginning of the CIE and FDE structures
 that occurs at the beginning of the CIE and FDE structures
-in the \addtoindex{.debug\_frame} section.
+in the \dotdebugframe{} section.
 
 
-In an \addtoindex{initial length field}, the values 0xfffffff0 through
-0xffffffff are reserved by DWARF to indicate some form of
+In an \addtoindex{initial length field}, the values \wfffffffzero through
+\wffffffff are reserved by DWARF to indicate some form of
 extension relative to \addtoindex{DWARF Version 2}; such values must not
 be interpreted as a length field. The use of one such value,
 extension relative to \addtoindex{DWARF Version 2}; such values must not
 be interpreted as a length field. The use of one such value,
-0xffffffff, is defined below 
+\xffffffff, is defined below 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
 the use of
 the other values is reserved for possible future extensions.
 
 
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
 the use of
 the other values is reserved for possible future extensions.
 
 
 
-\section{Executable Objects and Shared Objects} 
+\section{Relocatable, Split, Executable and Shared Objects} 
 \label{datarep:executableobjectsandsharedobjects}
 
 \label{datarep:executableobjectsandsharedobjects}
 
+\subsection{Relocatable Objects}
+
+\subsection{Split DWARF Objects}
+\label{datarep:splitdwarfobjects}
+A DWARF producer may partition the debugging
+information such that the majority of the debugging
+information can remain in individual object files without
+being processed by the linker. The first partition contains
+debugging information that must still be processed by the linker,
+and includes the following:
+\begin{itemize}
+\item
+The line number tables, range tables, frame tables, and
+accelerated access tables, in the usual sections:
+\dotdebugline, \dotdebugranges, \dotdebugframe,
+\dotdebugpubnames, \dotdebugpubtypes{} and \dotdebugaranges,
+respectively.
+\item
+An address table, in the \dotdebugaddr{} section. This table
+contains all addresses and constants that require
+link-time relocation, and items in the table can be
+referenced indirectly from the debugging information via
+the \DWFORMaddrx{} form, and by the \DWOPaddrx{} and
+\DWOPconstx{} operators.
+\item
+A skeleton compilation unit, as described in Section
+\refersec{chap:skeletoncompilationunitentries}, 
+in the \dotdebuginfo{} section.
+\item
+An abbreviations table for the skeleton compilation unit,
+in the \dotdebugabbrev{} section.
+\item
+A string table, in the \dotdebugstr{} section. The string
+table is necessary only if the skeleton compilation unit
+uses either indirect string form, \DWFORMstrp{} or
+\DWFORMstrx.
+\item
+A string offsets table, in the \dotdebugstroffsets{}
+section. The string offsets table is necessary only if
+the skeleton compilation unit uses the \DWFORMstrx{} form.
+\end{itemize}
+The attributes contained in the skeleton compilation
+unit can be used by a DWARF consumer to find the object file
+or DWARF object file that contains the second partition.
+
+The second partition contains the debugging information that
+does not need to be processed by the linker. These sections
+may be left in the object files and ignored by the linker
+(that is, not combined and copied to the executable object), or
+they may be placed by the producer in a separate DWARF object
+file. This partition includes the following:
+\begin{itemize}
+\item
+The full compilation unit, in the \dotdebuginfodwo{} section.
+Attributes in debugging information entries may refer to
+machine addresses indirectly using the \DWFORMaddrx{} form,
+and location expressions may do so using the \DWOPaddrx{} and
+\DWOPconstx{} forms. Attributes may refer to range table
+entries with an offset relative to a base offset in the
+range table for the compilation unit.
+
+\item Separate type units, in the \dotdebuginfodwo{} section.
+
+\item
+Abbreviations table(s) for the compilation unit and type
+units, in the \dotdebugabbrevdwo{} section.
+
+\item Location lists, in the \dotdebuglocdwo{} section.
+
+\item
+A skeleton line table (for the type units), in the
+\dotdebuglinedwo{} section (see 
+Section \refersec{chap:skeletoncompilationunitentries}).
+
+\item Macro information, in the \dotdebugmacrodwo{} section.
+
+\item A string table, in the \dotdebugstrdwo{} section.
+
+\item A string offsets table, in the \dotdebugstroffsetsdwo{}
+section.
+\end{itemize}
+
+Except where noted otherwise, all references in this document
+to a debugging information section (for example, \dotdebuginfo),
+applies also to the corresponding split DWARF section (for example,
+\dotdebuginfodwo).
+
+\subsection{Executable Objects}
+\label{chap:executableobjects}
 The relocated addresses in the debugging information for an
 The relocated addresses in the debugging information for an
-executable object are virtual addresses and the relocated
+executable object are virtual addresses.
+
+\subsection{Shared Objects}
+\label{datarep:sharedobjects}
+The relocated
 addresses in the debugging information for a shared object
 are offsets relative to the start of the lowest region of
 memory loaded from that shared object.
 addresses in the debugging information for a shared object
 are offsets relative to the start of the lowest region of
 memory loaded from that shared object.
@@ -128,13 +233,13 @@ memory loaded from that shared object.
 shared objects position independent.  Virtual addresses in a
 shared object may be calculated by adding the offset to the
 base address at which the object was attached. This offset
 shared objects position independent.  Virtual addresses in a
 shared object may be calculated by adding the offset to the
 base address at which the object was attached. This offset
-is available in the run\dash time linker’s data structures.}
-
+is available in the run\dash time linker\textquoteright s data structures.}
 
 
 
 
+\needlines{6}
 \section{32-Bit and 64-Bit DWARF Formats}
 \label{datarep:32bitand64bitdwarfformats}
 \section{32-Bit and 64-Bit DWARF Formats}
 \label{datarep:32bitand64bitdwarfformats}
-
+\hypertarget{datarep:xxbitdwffmt}{}
 \addtoindexx{32-bit DWARF format}
 \addtoindexx{64-bit DWARF format}
 There are two closely related file formats. In the 32\dash bit DWARF
 \addtoindexx{32-bit DWARF format}
 \addtoindexx{64-bit DWARF format}
 There are two closely related file formats. In the 32\dash bit DWARF
@@ -151,21 +256,19 @@ 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:
 The differences between the 32\dash\   and 64\dash bit 
 DWARF formats are
 detailed in the following:
-
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item  In the 32\dash bit DWARF format, an 
 \addtoindex{initial length field}
 (see 
 
 \item  In the 32\dash bit DWARF format, an 
 \addtoindex{initial length field}
 (see 
-\addtoindex{initial length field!encoding}
+\addtoindexx{initial length field!encoding}
 Section \refersec{datarep:initiallengthvalues}) 
 is an unsigned 32\dash bit integer (which
 Section \refersec{datarep:initiallengthvalues}) 
 is an unsigned 32\dash bit integer (which
-must be less than 0xfffffff0); in the 64\dash bit DWARF format,
+must be less than \xfffffffzero); in the 64\dash bit DWARF format,
 an \addtoindex{initial length field} is 96 bits in size,
 and has two parts:
 \begin{itemize}
 an \addtoindex{initial length field} is 96 bits in size,
 and has two parts:
 \begin{itemize}
-\item The first 32\dash bits have the value 0xffffffff.
+\item The first 32\dash bits have the value \xffffffff.
 
 \item  The following 64\dash bits contain the actual length
 represented as an unsigned 64\dash bit integer.
 
 \item  The following 64\dash bits contain the actual length
 represented as an unsigned 64\dash bit integer.
@@ -175,69 +278,88 @@ 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.}
 
 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
+\hypertarget{datarep:sectionoffsetlength}{} 
+\addtoindexx{section length!use in headers}
+fields that occur
+\addtoindexx{section offset!use in headers}
 in the headers of DWARF sections (other 
 in the headers of DWARF sections (other 
-\addtoindex{initial length field}
+\addtoindexx{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,
 than 
 \addtoindex{initial length}
 fields) are listed following. In the 32\dash bit DWARF format these
 are 32\dash bit unsigned integer values; in the 64\dash bit DWARF format,
-they are 64\dash bit unsigned integer values.
+they 
+\addtoindexx{section length!in .debug\_aranges header}
+are 
+\addtoindexx{section length!in .debug\_pubnames header}
+64\dash bit 
+\addtoindexx{section length!in .debug\_pubtypes header}
+unsigned integer values.
 
 \begin{center}
 \begin{tabular}{lll}
 Section &Name & Role  \\ \hline
 
 \begin{center}
 \begin{tabular}{lll}
 Section &Name & Role  \\ \hline
-\addtoindex{.debug\_ranges} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
-\addtoindex{.debug\_frame}/CIE & \addtoindex{CIE\_id} & CIE distinguished value \\
-\addtoindex{.debug\_frame}/FDE & \addtoindex{CIE\_pointer} & offset in \addtoindex{.debug\_frame} \\
-\addtoindex{.debug\_info} & \addtoindex{debug\_abbrev\_offset} & offset in \addtoindex{.debug\_abbrev} \\
-\addtoindex{.debug\_line} & \addtoindex{header\_length} & length of header itself \\
-\addtoindex{.debug\_pubnames} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
-                & \addtoindex{debug\_info\_length} & length of \addtoindex{.debug\_info} \\
+\dotdebugaranges{} & \addtoindex{debug\_info\_offset} & offset in \dotdebuginfo{} \\
+\dotdebugframe{}/CIE & \addtoindex{CIE\_id} & CIE distinguished value \\
+\dotdebugframe{}/FDE & \addtoindex{CIE\_pointer} & offset in \dotdebugframe{} \\
+\dotdebuginfo{} & \addtoindex{debug\_abbrev\_offset} & offset in \dotdebugabbrev{} \\
+\dotdebugline{} & \addtoindex{header\_length} & length of header itself \\
+\dotdebugpubnames{} & \addtoindex{debug\_info\_offset} & offset in \dotdebuginfo{} \\
+                & \addtoindex{debug\_info\_length} & length of \dotdebuginfo{} \\
                 &                   & contribution \\
                 &                   & contribution \\
-\addtoindex{.debug\_pubtypes} & \addtoindex{debug\_info\_offset} & offset in \addtoindex{.debug\_info} \\
-                & \addtoindex{debug\_info\_length} & length of \addtoindex{.debug\_info} \\
+\dotdebugpubtypes{} & \addtoindex{debug\_info\_offset} & offset in \dotdebuginfo{} \\
+                & \addtoindex{debug\_info\_length} & length of \dotdebuginfo{} \\
                 &                   & contribution \\
                 &                   & contribution \\
-\addtoindex{.debug\_types} & \addtoindex{debug\_abbrev\_offset} & offset in \addtoindex{.debug\_info} \\
-                & \addtoindex{type\_offset} & offset in of \addtoindex{.debug\_types} \\
-
 \end{tabular}
 \end{center}
 
 \end{tabular}
 \end{center}
 
-\textit{The CIE\_id field in a CIE structure must be 64 bits because
-it overlays the CIE\_pointer in a FDE structure; this implicit
+The \texttt{CIE\_id} field in a CIE structure must be 64 bits because
+it overlays the \texttt{CIE\_pointer} in a FDE structure; this implicit
 union must be accessed to distinguish whether a CIE or FDE is
 present, consequently, these two fields must exactly overlay
 union must be accessed to distinguish whether a CIE or FDE is
 present, consequently, these two fields must exactly overlay
-each other (both offset and size).}
+each other (both offset and size).
 
 
-\item Within the body of the \addtoindex{.debug\_info} or \addtoindex{.debug\_types}
+\item Within the body of the \dotdebuginfo{}
 section, certain forms of attribute value depend on the choice
 of DWARF format as follows. For the 32\dash bit DWARF format,
 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
 format, the value is a 64\dash bit unsigned integer.
 \begin{center}
 section, certain forms of attribute value depend on the choice
 of DWARF format as follows. For the 32\dash bit DWARF format,
 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
 format, the value is a 64\dash bit unsigned integer.
 \begin{center}
-\begin{tabular}{lll}
+\begin{tabular}{ll}
 Form & Role  \\ \hline
 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} \\
-\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in \addtoindex{.debug\_str} \\
-\livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&offset in \addtoindex{.debug\_info} \\
+\DWFORMrefaddr& offset in \dotdebuginfo{} \\
+\DWFORMsecoffset& offset in a section other than \\
+                                                                                       &\dotdebuginfo{} or \dotdebugstr{} \\
+\DWFORMstrp&offset in \dotdebugstr{} \\
+\DWOPcallref&offset in \dotdebuginfo{} \\
 \end{tabular}
 \end{center}
 
 \end{tabular}
 \end{center}
 
-\item Within the body of the \addtoindex{.debug\_pubnames} and
-\addtoindex{.debug\_pubtypes
+\item Within the body of the \dotdebugpubnames{} and
+\dotdebugpubtypes{
 sections, the representation of the first field
 of each tuple (which represents an offset in the 
 sections, the representation of the first field
 of each tuple (which represents an offset in the 
-\addtoindex{.debug\_info}
+\dotdebuginfo{}
 section) depends on the DWARF format as follows: in the
 32\dash bit DWARF format, this field is a 32\dash bit unsigned integer;
 in the 64\dash bit DWARF format, it is a 64\dash bit unsigned integer.
 
 section) depends on the DWARF format as follows: in the
 32\dash bit DWARF format, this field is a 32\dash bit unsigned integer;
 in the 64\dash bit DWARF format, it is a 64\dash bit unsigned integer.
 
+\needlines{4}
+\item In the body of the \dotdebugstroffsets{} and \dotdebugstroffsetsdwo{}
+sections, the size of entries in the body depend on the DWARF
+format as follows: in the 32-bit DWARF format, entries are 32-bit
+unsigned integer values; in the 64-bit DWARF format, they are
+64-bit unsigned integers.
+
+\item In the body of the \dotdebugaddr{}, \dotdebugloc{} and \dotdebugranges{}
+sections, the contents of the address size fields depends on the
+DWARF format as follows: in the 32-bit DWARF format, these fields
+contain 4; in the 64-bit DWARF format these fields contain 8.
 \end{enumerate}
 
 
 \end{enumerate}
 
 
-The 32\dash bit and 64\dash bit DWARF format conventions must not be
+The 32\dash bit and 64\dash bit DWARF format conventions must \emph{not} be
 intermixed within a single compilation unit.
 
 \textit{Attribute values and section header fields that represent
 intermixed within a single compilation unit.
 
 \textit{Attribute values and section header fields that represent
@@ -252,8 +374,8 @@ are no link\dash time errors due to truncation or overflow). (An
 implementation is not required to guarantee detection and
 reporting of all such errors.)
 
 implementation is not required to guarantee detection and
 reporting of all such errors.)
 
-\textit{It is expected that DWARF producing compilers will not use
-the 64\dash bit format by default. In most cases, the division of
+\textit{It is expected that DWARF producing compilers will \emph{not} use
+the 64\dash bit format \emph{by default}. In most cases, the division of
 even very large applications into a number of executable and
 shared objects will suffice to assure that the DWARF sections
 within each individual linked object are less than 4 GBytes
 even very large applications into a number of executable and
 shared objects will suffice to assure that the DWARF sections
 within each individual linked object are less than 4 GBytes
@@ -270,20 +392,23 @@ executable libraries can still be used.}
 \label{datarep:formatofdebugginginformation}
 
 For each compilation unit compiled with a DWARF producer,
 \label{datarep:formatofdebugginginformation}
 
 For each compilation unit compiled with a DWARF producer,
-a contribution is made to the \addtoindex{.debug\_info} section of
+a contribution is made to the \dotdebuginfo{} section of
 the object file. Each such contribution consists of a
 compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}) 
 followed by a
 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 \DWTAGcompileunit{} or 
+\DWTAGpartialunit{} debugging
 information entry, together with its children.
 
 information entry, together with its children.
 
-For each type defined in a compilation unit, a contribution may
-be made to the \addtoindex{.debug\_types} 
+For each type defined in a compilation unit, a separate
+contribution may also be made to the 
+\dotdebuginfo{} 
 section of the object file. Each
 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}) 
 (see Section \refersec{datarep:typeunitheader}) 
-followed by a \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} entry, together with
+followed by a \DWTAGtypeunit{} entry, together with
 its children.
 
 Each debugging information entry begins with a code that
 its children.
 
 Each debugging information entry begins with a code that
@@ -294,60 +419,96 @@ code is followed directly by a series of attribute values.
 The appropriate entry in the 
 \addtoindex{abbreviations table} guides the
 interpretation of the information contained directly in the
 The appropriate entry in the 
 \addtoindex{abbreviations table} guides the
 interpretation of the information contained directly in the
-\addtoindex{.debug\_info} or 
-\addtoindex{.debug\_types} section.
+\dotdebuginfo{} section.
 
 
+\needlines{4}
 Multiple debugging information entries may share the same
 abbreviation table entry. Each compilation unit is associated
 with a particular abbreviation table, but multiple compilation
 units may share the same table.
 Multiple debugging information entries may share the same
 abbreviation table entry. Each compilation unit is associated
 with a particular abbreviation table, but multiple compilation
 units may share the same table.
+
 \subsection{Unit Headers}
 \label{datarep:unitheaders}
 \subsection{Unit Headers}
 \label{datarep:unitheaders}
+Unit headers contain a field, \texttt{unit\_type}, whose value indicates the kind of
+compilation unit that follows. The encodings for the unit type 
+enumeration are shown in Table \refersec{tab:unitheaderunitkindencodings}.
+
+\needlines{6}
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|l}
+  \caption{Unit header unit kind encodings}
+  \label{tab:unitheaderunitkindencodings}
+  \addtoindexx{Unit header unit kind encodings} \\
+  \hline \bfseries Unit header unit kind encodings&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries Unit header unit kind encodings&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+\endlastfoot
+\DWUTcompileTARG    &0x01 \\ 
+\DWUTtypeTARG       &0x02 \\ 
+\DWUTpartialTARG    &0x03 \\ \hline
+\end{longtable}
+\end{centering}
 
 \subsubsection{Compilation Unit Header}
 \label{datarep:compilationunitheader}
 
 \subsubsection{Compilation Unit Header}
 \label{datarep:compilationunitheader}
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
-
-\item unit\_length (initial length) \\
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte 
 \addtoindexx{initial length}
 unsigned integer representing the length
 A 4\dash byte or 12\dash byte 
 \addtoindexx{initial length}
 unsigned integer representing the length
-of the \addtoindex{.debug\_info}
+of the \dotdebuginfo{}
 contribution for that compilation unit,
 contribution for that compilation unit,
-not including the length field itself. In the 32\dash bit DWARF
-format, this is a 4\dash byte unsigned integer (which must be less
-than 0xfffffff0); in the 64\dash bit DWARF format, this consists
-of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
+not including the length field itself. In the \thirtytwobitdwarfformat,
+ this is a 4\dash byte unsigned integer (which must be less
+than \xfffffffzero); in the \sixtyfourbitdwarfformat, this consists
+of the 4\dash byte value \wffffffff followed by an 8\dash byte unsigned
 integer that gives the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 integer that gives the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  version (uhalf)
+\item  \texttt{version} (\addtoindex{uhalf}) \\
 A 2\dash byte unsigned integer representing the version of the
 A 2\dash byte unsigned integer representing the version of the
-DWARF information for the compilation unit\addtoindexx{version number!compilation unit} 
+DWARF information for the compilation unit \addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
-The value in this field is 4.
+The value in this field is \versiondotdebuginfo.
+
+\needlines{4}
+\item \texttt{unit\_type} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer identifying this unit as a compilation unit.
+The value of this field is 
+\DWUTcompile{} for a {normal compilation} unit or
+\DWUTpartial{} for a {partial compilation} unit
+(see Section \refersec{chap:normalandpartialcompilationunitentries}).
+
+\textit{This field is new in \DWARFVersionV.}
 
 
-\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
-\addtoindex{.debug\_abbrev}
+\needlines{4}
+\item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+A 
+\addtoindexx{section offset!in .debug\_info header}
+4\dash byte or 8\dash byte unsigned offset into the 
+\dotdebugabbrev{}
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
-the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
-in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
+the \thirtytwobitdwarfformat, this is a 4\dash byte unsigned length;
+in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item address\_size (ubyte) \\
+\item \texttt{address\_size} (\addtoindex{ubyte}) \\
 A 1\dash byte unsigned integer representing the size in bytes of
 A 1\dash byte unsigned integer representing the size in bytes of
-\addtoindexx{address\_size}
+\addttindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
 
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
 
-
-
 \end{enumerate}
 
 \subsubsection{Type Unit Header}
 \end{enumerate}
 
 \subsubsection{Type Unit Header}
@@ -355,65 +516,89 @@ offset portion of an address.
 
 The header for the series of debugging information entries
 contributing to the description of a type that has been
 
 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 
-\addtoindex{.debug\_types} section,
+placed in its own \addtoindex{type unit}, within the 
+\dotdebuginfo{} section,
 consists of the following information:
 consists of the following information:
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
-
-\item unit\_length (initial length) \\
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
-of the \addtoindex{.debug\_types} contribution for that compilation unit,
-not including the length field itself. In the 32\dash bit DWARF
-format, this is a 4\dash byte unsigned integer (which must be
-less than 0xfffffff0); in the 64\dash bit DWARF format, this
-consists of the 4\dash byte value 0xffffffff followed by an 
+of the \dotdebuginfo{} contribution for that type unit,
+not including the length field itself. In the \thirtytwobitdwarfformat, 
+this is a 4\dash byte unsigned integer (which must be
+less than \xfffffffzero); in the \sixtyfourbitdwarfformat, this
+consists of the 4\dash byte value \wffffffff followed by an 
 8\dash byte unsigned integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 8\dash byte unsigned integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  version (uhalf)
+\needlines{4}
+\item  \texttt{version} (\addtoindex{uhalf}) \\
 A 2\dash byte unsigned integer representing the version of the
 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 
+type unit\addtoindexx{version number!type unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
-The value in this field is 4.
+The value in this field is \versiondotdebuginfo.
 
 
-\item \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
-\addtoindex{.debug\_abbrev}
-section. This offset associates the compilation unit with a
+\item \texttt{unit\_type} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer identifying this unit as a type unit.
+The value of this field is \DWUTtype{} for a type unit
+(see Section \refersec{chap:separatetypeunitentries}).
+
+\textit{This field is new in \DWARFVersionV.}
+
+\needlines{4}
+\item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+A 
+\addtoindexx{section offset!in .debug\_types header}
+4\dash byte or 8\dash byte unsigned offset into the 
+\dotdebugabbrev{}
+section. This offset associates the type unit with a
 particular set of debugging information entry abbreviations. In
 particular set of debugging information entry abbreviations. In
-the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
-in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
+the \thirtytwobitdwarfformat, this is a 4\dash byte unsigned length;
+in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item address\_size (ubyte) \\
-A 1\dash byte unsigned integer representing the size in bytes of
-\addtoindexx{address\_size}
+\needlines{4}
+\item \texttt{address\_size} (ubyte) \\
+A 1\dash byte unsigned integer representing the size 
+\addtoindexx{size of an address}
+in bytes of
+\addttindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
-
-\item type\_signature (8\dash byte unsigned integer) \\
-A 64\dash bit unique signature of the type described in this type
+\item \texttt{type\_signature} (8\dash byte unsigned integer) \\
+\addtoindexx{type signature}
+A 
+\addttindexx{type\_signature}
+64\dash bit unique signature (see Section 
+\refersec{datarep:typesignaturecomputation})
+of the type described in this type
 unit.  
 
 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.}
-
-
-\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
+\textit{An attribute that refers (using 
+\DWFORMrefsigeight{}) to
+the primary type contained in this 
+\addtoindex{type unit} uses this value.}
+
+\item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+\addttindexx{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
 separate type units, it is not necessarily either the first or
 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
 separate type units, it is not necessarily either the first or
-the only entry in the type unit. In the 32\dash bit DWARF format,
-this is a 4\dash byte unsigned length; in the 64\dash bit DWARF format,
+the only entry in the type unit. In the \thirtytwobitdwarfformat,
+this is a 4\dash byte unsigned length; in the \sixtyfourbitdwarfformat,
 this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
@@ -422,7 +607,8 @@ this is an 8\dash byte unsigned length
 \subsection{Debugging Information Entry}
 \label{datarep:debugginginformationentry}
 
 \subsection{Debugging Information Entry}
 \label{datarep:debugginginformationentry}
 
-Each debugging information entry begins with an unsigned LEB128
+Each debugging information entry begins with an 
+unsigned LEB128\addtoindexx{LEB128!unsigned}
 number containing the abbreviation code for the entry. This
 code represents an entry within the abbreviations table
 associated with the compilation unit containing this entry. The
 number containing the abbreviation code for the entry. This
 code represents an entry within the abbreviations table
 associated with the compilation unit containing this entry. The
@@ -440,7 +626,7 @@ null entries.
 
 The abbreviations tables for all compilation units
 are contained in a separate object file section called
 
 The abbreviations tables for all compilation units
 are contained in a separate object file section called
-\addtoindex{.debug\_abbrev}.
+\dotdebugabbrev{}.
 As mentioned before, multiple compilation
 units may share the same abbreviations table.
 
 As mentioned before, multiple compilation
 units may share the same abbreviations table.
 
@@ -448,27 +634,111 @@ The abbreviations table for a single compilation unit consists
 of a series of abbreviation declarations. Each declaration
 specifies the tag and attributes for a particular form of
 debugging information entry. Each declaration begins with
 of a series of abbreviation declarations. Each declaration
 specifies the tag and attributes for a particular form of
 debugging information entry. Each declaration begins with
-an unsigned LEB128 number representing the abbreviation
+an unsigned LEB128\addtoindexx{LEB128!unsigned}
+number representing the abbreviation
 code itself. It is this code that appears at the beginning
 of a debugging information entry in the 
 code itself. It is this code that appears at the beginning
 of a debugging information entry in the 
-\addtoindex{.debug\_info} or
-\addtoindex{.debug\_types}
+\dotdebuginfo{}
 section. As described above, the abbreviation
 code 0 is reserved for null debugging information entries. The
 section. As described above, the abbreviation
 code 0 is reserved for null debugging information entries. The
-abbreviation code is followed by another unsigned LEB128
-number that encodes the entrys tag. The encodings for the
+abbreviation code is followed by another unsigned LEB128\addtoindexx{LEB128!unsigned}
+number that encodes the entry\textquoteright s tag. The encodings for the
 tag names are given in 
 Table \refersec{tab:tagencodings}.
 
 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 DWARF Version 5}
+\endlastfoot
+\DWTAGarraytype{} &0x01 \\
+\DWTAGclasstype&0x02 \\
+\DWTAGentrypoint&0x03 \\
+\DWTAGenumerationtype&0x04 \\
+\DWTAGformalparameter&0x05 \\
+\DWTAGimporteddeclaration&0x08 \\
+\DWTAGlabel&0x0a \\
+\DWTAGlexicalblock&0x0b \\
+\DWTAGmember&0x0d \\
+\DWTAGpointertype&0x0f \\
+\DWTAGreferencetype&0x10 \\
+\DWTAGcompileunit&0x11 \\
+\DWTAGstringtype&0x12 \\
+\DWTAGstructuretype&0x13 \\
+\DWTAGsubroutinetype&0x15 \\
+\DWTAGtypedef&0x16 \\
+\DWTAGuniontype&0x17 \\
+\DWTAGunspecifiedparameters&0x18  \\
+\DWTAGvariant&0x19  \\
+\DWTAGcommonblock&0x1a  \\
+\DWTAGcommoninclusion&0x1b  \\
+\DWTAGinheritance&0x1c  \\
+\DWTAGinlinedsubroutine&0x1d  \\
+\DWTAGmodule&0x1e  \\
+\DWTAGptrtomembertype&0x1f  \\
+\DWTAGsettype&0x20  \\
+\DWTAGsubrangetype&0x21  \\
+\DWTAGwithstmt&0x22  \\
+\DWTAGaccessdeclaration&0x23  \\
+\DWTAGbasetype&0x24  \\
+\DWTAGcatchblock&0x25  \\
+\DWTAGconsttype&0x26  \\
+\DWTAGconstant&0x27  \\
+\DWTAGenumerator&0x28  \\
+\DWTAGfiletype&0x29  \\
+\DWTAGfriend&0x2a  \\
+\DWTAGnamelist&0x2b    \\
+\DWTAGnamelistitem&0x2c    \\
+\DWTAGpackedtype&0x2d    \\
+\DWTAGsubprogram&0x2e    \\
+\DWTAGtemplatetypeparameter&0x2f    \\
+\DWTAGtemplatevalueparameter&0x30    \\
+\DWTAGthrowntype&0x31    \\
+\DWTAGtryblock&0x32    \\
+\DWTAGvariantpart&0x33    \\
+\DWTAGvariable&0x34    \\
+\DWTAGvolatiletype&0x35    \\
+\DWTAGdwarfprocedure&0x36     \\
+\DWTAGrestricttype&0x37      \\
+\DWTAGinterfacetype&0x38      \\
+\DWTAGnamespace&0x39      \\
+\DWTAGimportedmodule&0x3a      \\
+\DWTAGunspecifiedtype&0x3b      \\
+\DWTAGpartialunit&0x3c      \\
+\DWTAGimportedunit&0x3d      \\
+\DWTAGcondition&\xiiif      \\
+\DWTAGsharedtype&0x40      \\
+\DWTAGtypeunit & 0x41      \\
+\DWTAGrvaluereferencetype & 0x42      \\
+\DWTAGtemplatealias & 0x43      \\
+\DWTAGcoarraytype~\ddag & 0x44 \\
+\DWTAGgenericsubrange~\ddag & 0x45 \\
+\DWTAGdynamictype~\ddag & 0x46 \\
+\DWTAGatomictype~\ddag & 0x47 \\
+\DWTAGcallsite~\ddag & 0x48 \\
+\DWTAGcallsiteparameter~\ddag & 0x49 \\
+\DWTAGlouser&0x4080      \\
+\DWTAGhiuser&\xffff      \\
+\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 
 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 
-\livetarg{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes},
+\DWCHILDRENyesTARG,
 the next physically succeeding entry of any debugging
 information entry using this abbreviation is the first
 child of that entry. If the 1\dash byte value following the
 the next physically succeeding entry of any debugging
 information entry using this abbreviation is the first
 child of that entry. If the 1\dash byte value following the
-abbreviations tag encoding is 
-\livetarg{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}, the next
+abbreviation\textquoteright s tag encoding is 
+\DWCHILDRENnoTARG, the next
 physically succeeding entry of any debugging information entry
 using this abbreviation is a sibling of that entry. (Either
 the first child or sibling entries may be null entries). The
 physically succeeding entry of any debugging information entry
 using this abbreviation is a sibling of that entry. (Either
 the first child or sibling entries may be null entries). The
@@ -476,22 +746,44 @@ encodings for the child determination byte are given in
 Table \refersec{tab:childdeterminationencodings}
 (As mentioned in 
 Section \refersec{chap:relationshipofdebugginginformationentries}, 
 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.)
+
+\needlines{6}
+\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
+\DWCHILDRENno&0x00 \\ 
+\DWCHILDRENyes&0x01 \\ \hline
+\end{longtable}
+\end{centering}
 
 
+\needlines{4}
 Finally, the child encoding is followed by a series of
 attribute specifications. Each attribute specification
 Finally, the child encoding is followed by a series of
 attribute specifications. Each attribute specification
-consists of two parts. The first part is an unsigned LEB128
-number representing the attribute’s name. The second part
-is an unsigned LEB128 number representing the attribute’s
-form. The series of attribute specifications ends with an
+consists of two parts. The first part is an 
+unsigned LEB128\addtoindexx{LEB128!unsigned}
+number representing the attribute\textquoteright s name. 
+The second part is an 
+unsigned LEB128\addtoindexx{LEB128!unsigned} 
+number representing the attribute\textquoteright s form. 
+The series of attribute specifications ends with an
 entry containing 0 for the name and 0 for the form.
 
 The attribute form 
 entry containing 0 for the name and 0 for the form.
 
 The attribute form 
-\livetarg{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect} is a special case. For
+\DWFORMindirectTARG{} is a special case. For
 attributes with this form, the attribute value itself in the
 attributes with this form, the attribute value itself in the
-\addtoindex{.debug\_info} or 
-\addtoindex{.debug\_types}
+\dotdebuginfo{}
 section begins with an unsigned
 LEB128 number that represents its form. This allows producers
 to choose forms for particular attributes 
 section begins with an unsigned
 LEB128 number that represents its form. This allows producers
 to choose forms for particular attributes 
@@ -502,10 +794,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.
 
 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
 Appendix \refersec{app:compilationunitsandabbreviationstableexample} 
 for a depiction of the organization of the
-debugging information.
+debugging information.}
+
 
 \subsection{Attribute Encodings}
 \label{datarep:attributeencodings}
 
 \subsection{Attribute Encodings}
 \label{datarep:attributeencodings}
@@ -519,55 +812,111 @@ class is a set of forms which have related representations
 and which are given a common interpretation according to the
 attribute in which the form is used.
 
 and which are given a common interpretation according to the
 attribute in which the form is used.
 
-Form \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} is a member of more than one class,
-namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
+Form \DWFORMsecoffsetTARG{} 
+is a member of more 
+\addtoindexx{rangelistptr class}
+than 
+\addtoindexx{macptr class}
+one 
+\addtoindexx{loclistptr class}
+class,
+\addtoindexx{lineptr class}
+namely \livelink{chap:classlineptr}{lineptr}, 
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr}; the list
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
-\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
-members of either class constant or one of the classes \livelink{chap:lineptr}{lineptr},
-\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
-DWARF V4 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} are members of class
-constant in all cases. The new \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} replaces
+\textit{In DWARF V3 the forms \DWFORMdatafour{} and 
+\DWFORMdataeight{} were
+\addtoindexx{lineptr class}
+members 
+\addtoindexx{rangelistptr class}
+of 
+\addtoindexx{macptr class}
+either 
+\addtoindexx{loclistptr class}
+class constant \addtoindexx{constant class}
+or one of the classes 
+\livelink{chap:classlineptr}{lineptr},
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr}, depending on context. In
+DWARF V4 
+\DWFORMdatafour{} and 
+\DWFORMdataeight{} are members of class
+constant in all cases. 
+The new 
+\DWFORMsecoffset{} replaces
 their usage for the other classes.}
 
 their usage for the other classes.}
 
+\needlines{4}
 Each possible form belongs to one or more of the following classes:
 
 \begin{itemize}
 Each possible form belongs to one or more of the following classes:
 
 \begin{itemize}
-\item \livelinki{chap:DWATaddressclass}{address}{address class} \\
-Represented as an object of appropriate size to hold an
+\item \livelinki{chap:classaddress}{address}{address class} \\
+\livetarg{datarep:classaddress}{}
+Represented as either:
+\begin{itemize}
+\item An object of appropriate size to hold an
 address on the target machine 
 address on the target machine 
-(\livetarg{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}). 
-The size is
-encoded in the compilation unit header 
+(\DWFORMaddrTARG). 
+The size is encoded in the compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}).
 This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object.
 
 (see Section \refersec{datarep:compilationunitheader}).
 This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object.
 
-\item \livelink{chap:block}{block} \\
+\item An indirect index into a table of addresses (as 
+described in the previous bullet) in the
+\dotdebugaddr{} section (\DWFORMaddrxTARG). 
+The representation of a \DWFORMaddrxNAME{} value is an unsigned
+\addtoindex{LEB128} value, which is interpreted as a zero-based 
+index into an array of addresses in the \dotdebugaddr{} section.
+The index is relative to the value of the \DWATaddrbase{} attribute 
+of the associated compilation unit.
+\end{itemize}
+
+\needlines{5}
+\item \livelink{chap:classaddrptr}{addrptr} \\
+\livetarg{datarep:classaddrptr}{}
+This is an offset into the \dotdebugaddr{} section (\DWFORMsecoffset). It
+consists of an offset from the beginning of the \dotdebugaddr{} section to the
+beginning of the list of machine addresses information for the
+referencing entity. It is relocatable in
+a relocatable object file, and relocated in an executable or
+shared object. In the \thirtytwobitdwarfformat, this offset
+is a 4\dash byte unsigned value; in the 64\dash bit DWARF
+format, it is an 8\dash byte unsigned value (see Section
+\refersec{datarep:32bitand64bitdwarfformats}).
+
+\textit{This class is new in \DWARFVersionV.}
+
+\needlines{4}
+\item \livelink{chap:classblock}{block} \\
+\livetarg{datarep:classblock}{}
 Blocks come in four forms:
 
 \begin{myindentpara}{1cm}
 A 1\dash byte length followed by 0 to 255 contiguous information
 Blocks come in four forms:
 
 \begin{myindentpara}{1cm}
 A 1\dash byte length followed by 0 to 255 contiguous information
-bytes (\livetarg{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}).
+bytes (\DWFORMblockoneTARG).
 \end{myindentpara}
 
 \begin{myindentpara}{1cm}
 A 2\dash byte length followed by 0 to 65,535 contiguous information
 \end{myindentpara}
 
 \begin{myindentpara}{1cm}
 A 2\dash byte length followed by 0 to 65,535 contiguous information
-bytes (\livetarg{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}).
+bytes (\DWFORMblocktwoTARG).
 \end{myindentpara}
 
 \end{myindentpara}
 
-
 \begin{myindentpara}{1cm}
 A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
 \begin{myindentpara}{1cm}
 A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
-information bytes (\livetarg{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}).
+information bytes (\DWFORMblockfourTARG).
 \end{myindentpara}
 
 \end{myindentpara}
 
-
 \begin{myindentpara}{1cm}
 \begin{myindentpara}{1cm}
-An unsigned LEB128 length followed by the number of bytes
-specified by the length (\livetarg{chap:DWFORMblock}{DW\-\_FORM\-\_block}).
+An unsigned LEB128\addtoindexx{LEB128!unsigned}
+length followed by the number of bytes
+specified by the length (\DWFORMblockTARG).
 \end{myindentpara}
 
 In all forms, the length is the number of information bytes
 \end{myindentpara}
 
 In all forms, the length is the number of information bytes
@@ -575,24 +924,26 @@ that follow. The information bytes may contain any mixture
 of relocated (or relocatable) addresses, references to other
 debugging information entries or data bytes.
 
 of relocated (or relocatable) addresses, references to other
 debugging information entries or data bytes.
 
-\item constant \\
+\item \livelinki{chap:classconstant}{constant}{constant class} \\
+\livetarg{datarep:classconstant}{}
 There are six forms of constants. There are fixed length
 constant data forms for one, two, four and eight byte values
 (respectively, 
 There are six forms of constants. There are fixed length
 constant data forms for one, two, four and eight byte values
 (respectively, 
-\livetarg{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}
-\livetarg{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}
-\livetarg{chap:DWFORMdata4}{DW\-\_FORM\-\_data4},
-and \livetarg{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}). 
+\DWFORMdataoneTARG
+\DWFORMdatatwoTARG
+\DWFORMdatafourTARG,
+and \DWFORMdataeightTARG). 
 There are also variable length constant
 data forms encoded using LEB128 numbers (see below). Both
 There are also variable length constant
 data forms encoded using LEB128 numbers (see below). Both
-signed (\livetarg{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}) and unsigned 
-(\livetarg{chap:DWFORMudata}{DW\-\_FORM\-\_udata}) variable
+signed (\DWFORMsdataTARG) and unsigned 
+(\DWFORMudataTARG) variable
 length constants are available
 
 length constants are available
 
-The data in \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}, 
-\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}, 
-\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and
-\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} 
+\needlines{4}
+The data in \DWFORMdataone, 
+\DWFORMdatatwo, 
+\DWFORMdatafour{} and
+\DWFORMdataeight{} 
 can be anything. Depending on context, it may
 be a signed integer, an unsigned integer, a floating\dash point
 constant, or anything else. A consumer must use context to
 can be anything. Depending on context, it may
 be a signed integer, an unsigned integer, a floating\dash point
 constant, or anything else. A consumer must use context to
@@ -600,31 +951,33 @@ 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.
 
 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 \DWFORMdataTARG\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
 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
+encouraged to use \DWFORMsdata{} or 
+\DWFORMudata{} for signed and
 unsigned integers respectively, rather than 
 unsigned integers respectively, rather than 
-\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data} \textless n \textgreater.}
-
+\DWFORMdata\textless n\textgreater.}
 
 
-\item \livelink{chap:exprloc}{exprloc} \\
-This is an unsigned LEB128 length followed by the
+\needlines{4}
+\item \livelinki{chap:classexprloc}{exprloc}{exprloc class} \\
+\livetarg{datarep:classexprloc}{}
+This is an unsigned LEB128\addtoindexx{LEB128!unsigned} length followed by the
 number of information bytes specified by the length
 number of information bytes specified by the length
-(\livetarg{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc}). 
-The information bytes contain a DWARF
-expression 
+(\DWFORMexprlocTARG). 
+The information bytes contain a DWARF expression 
 (see Section \refersec{chap:dwarfexpressions}) 
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
 (see Section \refersec{chap:dwarfexpressions}) 
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
-\item \livelink{chap:flag}{flag} \\
+\item \livelinki{chap:classflag}{flag}{flag class} \\
+\livetarg{datarep:classflag}{}
 A flag \addtoindexx{flag class}
 is represented explicitly as a single byte of data
 A flag \addtoindexx{flag class}
 is represented explicitly as a single byte of data
-(\livetarg{chap:DWFORMflag}{DW\-\_FORM\-\_flag}) or 
-implicitly (\livetarg{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present}). 
+(\DWFORMflagTARG) or 
+implicitly (\DWFORMflagpresentTARG). 
 In the
 first case, if the \nolink{flag} has value zero, it indicates the
 absence of the attribute; if the \nolink{flag} has a non\dash zero value,
 In the
 first case, if the \nolink{flag} has value zero, it indicates the
 absence of the attribute; if the \nolink{flag} has a non\dash zero value,
@@ -632,540 +985,628 @@ it indicates the presence of the attribute. In the second
 case, the attribute is implicitly indicated as present, and
 no value is encoded in the debugging information entry itself.
 
 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 
-\addtoindex{.debug\_line} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
-beginning of the 
-\addtoindex{.debug\_line}
+\item \livelinki{chap:classlineptr}{lineptr}{lineptr class} \\
+\livetarg{datarep:classlineptr}{}
+This is an offset into 
+\addtoindexx{section offset!in class lineptr value}
+the 
+\dotdebugline{} or \dotdebuglinedwo{} section
+(\DWFORMsecoffset).
+It consists of an offset from the beginning of the 
+\dotdebugline{}
 section to the first byte of
 the data making up the line number list for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
 section to the first byte of
 the data making up the line number list for the compilation
 unit. 
 It is relocatable in a relocatable object file, and
-relocated in an executable or shared object. In the 32\dash bit
-DWARF format, this offset is a 4\dash byte unsigned value;
-in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
+relocated in an executable or shared object. In the 
+\thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
+in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item \livelink{chap:loclistptr}{loclistptr} \\
+\item \livelinki{chap:classloclistptr}{loclistptr}{loclistptr class} \\
+\livetarg{datarep:classloclistptr}{}
 This is an offset into the 
 This is an offset into the 
-\addtoindex{.debug\_loc}
+\dotdebugloc{}
 section
 section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\DWFORMsecoffset). 
+It consists of an offset from the
+\addtoindexx{section offset!in class loclistptr value}
 beginning of the 
 beginning of the 
-\addtoindex{.debug\_loc}
+\dotdebugloc{}
 section to the first byte of
 section to the first byte of
-the data making up the location list for the compilation
-unit. 
+the data making up the 
+\addtoindex{location list} for the compilation unit. 
 It is relocatable in a relocatable object file, and
 It is relocatable in a relocatable object file, and
-relocated in an executable or shared object. In the 32\dash bit
-DWARF format, this offset is a 4\dash byte unsigned value;
-in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
+relocated in an executable or shared object. In the 
+\thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
+in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item \livelink{chap:macptr}{macptr} \\
-This is an offset into the 
-\addtoindex{.debug\_macinfo} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
-beginning of the \addtoindex{.debug\_macinfo} 
-section to the first byte of
-the data making up the macro information list for the compilation
-unit. 
+\item \livelinki{chap:classmacptr}{macptr}{macptr class} \\
+\livetarg{datarep:classmacptr}{}
+This is an 
+\addtoindexx{section offset!in class macptr value}
+offset into the 
+\dotdebugmacro{} or \dotdebugmacrodwo{} section
+(\DWFORMsecoffset). 
+It consists of an offset from the beginning of the 
+\dotdebugmacro{} or \dotdebugmacrodwo{} 
+section to the the header making up the 
+macro information list for the compilation unit. 
 It is relocatable in a relocatable object file, and
 It is relocatable in a relocatable object file, and
-relocated in an executable or shared object. In the 32\dash bit
-DWARF format, this offset is a 4\dash byte unsigned value;
-in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
+relocated in an executable or shared object. In the 
+\thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
+in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item \livelink{chap:rangelistptr}{rangelistptr} \\
-This is an offset into the \addtoindex{.debug\_ranges} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
+\needlines{4}
+\item \livelinki{chap:classrangelistptr}{rangelistptr}{rangelistptr class} \\
+\livetarg{datarep:classrangelistptr}{}
+This is an 
+\addtoindexx{section offset!in class rangelistptr value}
+offset into the \dotdebugranges{} section
+(\DWFORMsecoffset). 
 It consists of an
 offset from the beginning of the 
 It consists of an
 offset from the beginning of the 
-\addtoindex{.debug\_ranges} section
+\dotdebugranges{} section
 to the beginning of the non\dash contiguous address ranges
 information for the referencing entity.  
 It is relocatable in
 a relocatable object file, and relocated in an executable or
 to the beginning of the non\dash contiguous address ranges
 information for the referencing entity.  
 It is relocatable in
 a relocatable object file, and relocated in an executable or
-shared object. In the 32\dash bit DWARF format, this offset
+shared object. In the \thirtytwobitdwarfformat, this offset
 is a 4\dash byte unsigned value; in the 64\dash bit DWARF
 format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \end{itemize}
 
 is a 4\dash byte unsigned value; in the 64\dash bit DWARF
 format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \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:classlineptr}{lineptr}, 
+\livelink{chap:classloclistptr}{loclistptr}, 
+\livelink{chap:classmacptr}{macptr} and 
+\livelink{chap:classrangelistptr}{rangelistptr}
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
 
 \begin{itemize}
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
 
 \begin{itemize}
-\item reference \\
+\item \livelinki{chap:classreference}{reference}{reference class} \\
+\livetarg{datarep:classreference}{}
 There are three types of reference.
 
 There are three types of reference.
 
-The first type of reference can identify any debugging
-information entry within the containing unit. This type of
-reference is an offset from the first byte of the compilation
+The 
+\addtoindexx{reference class}
+first type of reference can identify any debugging
+information entry within the containing unit. 
+This type of
+reference is an 
+\addtoindexx{section offset!in class reference value}
+offset from the first byte of the compilation
 header for the compilation unit containing the reference. There
 are five forms for this type of reference. There are fixed
 length forms for one, two, four and eight byte offsets
 header for the compilation unit containing the reference. There
 are five forms for this type of reference. There are fixed
 length forms for one, two, four and eight byte offsets
-(respectively, \livetarg{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}, 
-\livetarg{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}, 
-\livetarg{chap:DWFORMref4}{DW\-\_FORM\-\_ref4},
-and \livetarg{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}). 
+(respectively,
+\DWFORMrefnMARK 
+\DWFORMrefoneTARG, 
+\DWFORMreftwoTARG, 
+\DWFORMreffourTARG,
+and \DWFORMrefeightTARG). 
 There is also an unsigned variable
 There is also an unsigned variable
-length offset encoded form that uses unsigned LEB128 numbers
-(\livetarg{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}). 
+length offset encoded form that uses 
+unsigned LEB128\addtoindexx{LEB128!unsigned} numbers
+(\DWFORMrefudataTARG). 
 Because this type of reference is within
 the containing compilation unit no relocation of the value
 is required.
 
 The second type of reference can identify any debugging
 information entry within a 
 Because this type of reference is within
 the containing compilation unit no relocation of the value
 is required.
 
 The second type of reference can identify any debugging
 information entry within a 
-\addtoindex{.debug\_info} section; in particular,
+\dotdebuginfo{} section; in particular,
 it may refer to an entry in a different compilation unit
 from the unit containing the reference, and may refer to an
 entry in a different shared object.  This type of reference
 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
-\addtoindex{.debug\_info} 
+(\DWFORMrefaddrTARG) 
+is an offset from the beginning of the
+\dotdebuginfo{} 
 section of the target executable or shared object;
 it is relocatable in a relocatable object file and frequently
 relocated in an executable file or shared object. For
 references from one shared object or static executable file
 to another, the relocation and identification of the target
 section of the target executable or shared object;
 it is relocatable in a relocatable object file and frequently
 relocated in an executable file or shared object. For
 references from one shared object or static executable file
 to another, the relocation and identification of the target
-object must be performed by the consumer. In the 32\dash bit DWARF
-format, this offset is a 4\dash byte unsigned value; 
-in the 64\dash bit DWARF format, it is an 8\dash byte
+object must be performed by the consumer. In the 
+\thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value; 
+in the \sixtyfourbitdwarfformat, it is an 8\dash byte
 unsigned value 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 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 
+\DWFORMrefaddr{} 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
 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}
+object\textquoteright s \dotdebuginfo{}
 section in the same fashion as the run
 time loader, either when the debug information is first read,
 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
 
 The third type of reference can identify any debugging
 information type entry that has been placed in its own
-type unit. This type of 
-reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
+\addtoindex{type unit}. This type of 
+reference (\DWFORMrefsigeightTARG) is the
+\addtoindexx{type signature}
 64\dash bit type signature 
 (see Section \refersec{datarep:typesignaturecomputation}) 
 that was computed
 for the type.
 
 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
 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
 debugging information entry for that unit, not the preceding
-header.
+header.}
 
 
-\item string \\
+\item \livelinki{chap:classstring}{string}{string class} \\
+\livetarg{datarep:classstring}{}
 A string is a sequence of contiguous non\dash null bytes followed by
 A string is a sequence of contiguous non\dash null bytes followed by
-one null byte. A string may be represented immediately in the
-debugging information entry itself 
-(\livetarg{chap:DWFORMstring}{DW\-\_FORM\-\_string}), or may
-be represented as an 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 
-\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}
-value is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
+one null byte. 
+\addtoindexx{string class}
+A string may be represented: 
+\begin{itemize}
+\item immediately in the debugging information entry itself 
+(\DWFORMstringTARG), 
+\item as an 
+\addtoindexx{section offset!in class string value}
+offset into a string table contained in
+the \dotdebugstr{} section of the object file 
+(\DWFORMstrpTARG).
+In the \thirtytwobitdwarfformat, the representation of a 
+\DWFORMstrpNAME{}
+value is a 4\dash byte unsigned offset; in the \sixtyfourbitdwarfformat,
 it is an 8\dash byte unsigned offset 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 it is an 8\dash byte unsigned offset 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
+\item as an indirect offset into the string table using an 
+index into a table of offsets contained in the 
+\dotdebugstroffsets{} section of the object file (\DWFORMstrxTARG).
+The representation of a \DWFORMstrxNAME{} value is an unsigned 
+\addtoindex{LEB128} value, which is interpreted as a zero-based 
+index into an array of offsets in the \dotdebugstroffsets{} section. 
+The offset entries in the \dotdebugstroffsets{} section have the 
+same representation as \DWFORMstrp{} values.
+\end{itemize}
+Any combination of these three forms may be used within a single compilation.
 
 
-If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
-compilation unit entry, string values are encoded using the
-UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
+If the \DWATuseUTFeight{}
+\addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
+compilation, partial, skeleton or type unit entry, string values are encoded using the
+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.
 
 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
 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
 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.}
+
+\item \livelinki{chap:classstroffsetsptr}{stroffsetsptr}{stroffsetsptr class} \\
+\livetarg{datarep:classstroffsetsptr}{}
+This is an offset into the \dotdebugstroffsets{} section 
+(\DWFORMsecoffset). It consists of an offset from the beginning of the 
+\dotdebugstroffsets{} section to the
+beginning of the string offsets information for the
+referencing entity. It is relocatable in
+a relocatable object file, and relocated in an executable or
+shared object. In the \thirtytwobitdwarfformat, this offset
+is a 4\dash byte unsigned value; in the 64\dash bit DWARF
+format, it is an 8\dash byte unsigned value (see Section
+\refersec{datarep:32bitand64bitdwarfformats}).
+
+\textit{This class is new in \DWARFVersionV.}
 
 \end{itemize}
 
 
 \end{itemize}
 
-In no case does an attribute use one of the classes \livelink{chap:lineptr}{lineptr},
-\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
-\addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
+In no case does an attribute use 
+\addtoindexx{rangelistptr class}
+one 
+\addtoindexx{loclistptr class}
+of 
+\addtoindexx{lineptr class}
+the 
+\addtoindexx{macptr class}
+classes \livelink{chap:classlineptr}{lineptr},
+\livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr} or 
+\livelink{chap:classrangelistptr}{rangelistptr} to point into either the
+\dotdebuginfo{} or \dotdebugstr{} section.
 
 The form encodings are listed in 
 Table \refersec{tab:attributeformencodings}.
 
 
 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}
 
 \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
 \endfirsthead
   \bfseries Attribute name&\bfseries Value &\bfseries Classes\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 \endlastfoot
-\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference 
-        \addtoindexx{sibling attribute!encoding} \\
-\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr}\addtoindex{location attribute!encoding}   \\
-\livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string 
-        \addtoindexx{name attribute!encoding} \\
-\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant 
-        \addtoindexx{ordering attribute!encoding}  \\
-\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{byte size attribute!encoding} \\
-\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant, 
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit offset attribute!encoding}  \\
-\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant, 
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit size attribute!encoding} \\
-\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr} 
-        \addtoindex{statement list attribute!encoding} \\
-\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address 
-        \addtoindexx{low PC attribute!encoding}  \\
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant 
-        \addtoindexx{high PC attribute!encoding}  \\
-\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant 
-        \addtoindexx{language attribute!encoding}  \\
-\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference 
-        \addtoindexx{discriminant attribute!encoding}  \\
-\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant 
-        \addtoindexx{discriminant value attribute!encoding}  \\
-\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant 
-        \addtoindexx{visibility attribute!encoding} \\
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference 
-        \addtoindexx{import attribute!encoding}  \\
-\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{string length attribute!encoding}  \\
-\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference 
-        \addtoindexx{common reference attribute!encoding}  \\
-\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string 
-        \addtoindexx{compilation directory attribute!encoding}  \\
-\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&\livelink{chap:block}{block}, constant, string 
-        \addtoindexx{constant value attribute!encoding} \\
-\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference 
-        \addtoindexx{containing type attribute!encoding} \\
-\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference 
-        \addtoindexx{default value attribute!encoding} \\
-\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant 
-        \addtoindexx{inline attribute!encoding}  \\
-\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&\livelink{chap:flag}{flag} 
-        \addtoindexx{is optional attribute!encoding} \\
-\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant, 
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{lower bound attribute!encoding}  \\
-\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string \addtoindexx{producer attribute!encoding}  \\
-\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&\livelink{chap:flag}{flag} 
-        \addtoindexx{prototyped attribute!encoding}  \\
-\livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc},
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{return address attribute!encoding}  \\
-% FIXME: lower case , not Constant
-\livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant, 
-        \livelink{chap:rangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding}  \\
-\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant,
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{bit stride attribute!encoding}  \\
-\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant,
-        \livelink{chap:exprloc}{exprloc}, reference \addtoindexx{upper bound attribute!encoding}  \\
-\livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference 
-        \addtoindexx{abstract origin attribute!encoding}  \\
-\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant 
-        \addtoindexx{accessibility attribute!encoding}  \\
-\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant 
-        \addtoindexx{address class atribute!encoding}  \\
-\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&\livelink{chap:flag}{flag} 
-        \addtoindexx{artificial attribute!encoding}  \\
-\livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference 
-        \addtoindexx{base types attribute!encoding}  \\
-\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant 
+\DWATsibling&0x01&\livelink{chap:classreference}{reference} 
+            \addtoindexx{sibling attribute!encoding} \\
+\DWATlocation&0x02&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{location attribute!encoding}   \\
+\DWATname&0x03&\livelink{chap:classstring}{string} 
+            \addtoindexx{name attribute!encoding} \\
+\DWATordering&0x09&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{ordering attribute!encoding}  \\
+\DWATbytesize&0x0b&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{byte size attribute!encoding} \\
+\DWATbitoffset&0x0c&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{bit offset attribute!encoding}  \\
+\DWATbitsize&0x0d&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}   
+            \addtoindexx{bit size attribute!encoding} \\
+\DWATstmtlist&0x10&\livelink{chap:classlineptr}{lineptr} 
+            \addtoindexx{statement list attribute!encoding} \\
+\DWATlowpc&0x11&\livelink{chap:classaddress}{address} 
+            \addtoindexx{low PC attribute!encoding}  \\
+\DWAThighpc&0x12&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classconstant}{constant}
+            \addtoindexx{high PC attribute!encoding}  \\
+\DWATlanguage&0x13&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{language attribute!encoding}  \\
+\DWATdiscr&0x15&\livelink{chap:classreference}{reference} 
+            \addtoindexx{discriminant attribute!encoding}  \\
+\DWATdiscrvalue&0x16&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{discriminant value attribute!encoding}  \\
+\DWATvisibility&0x17&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{visibility attribute!encoding} \\
+\DWATimport&0x18&\livelink{chap:classreference}{reference} 
+            \addtoindexx{import attribute!encoding}  \\
+\DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{string length attribute!encoding}  \\
+\DWATcommonreference&0x1a&\livelink{chap:classreference}{reference} 
+            \addtoindexx{common reference attribute!encoding}  \\
+\DWATcompdir&0x1b&\livelink{chap:classstring}{string} 
+            \addtoindexx{compilation directory attribute!encoding}  \\
+\DWATconstvalue&0x1c&\livelink{chap:classblock}{block}, 
+        \livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classstring}{string}
+            \addtoindexx{constant value attribute!encoding} \\
+\DWATcontainingtype&0x1d&\livelink{chap:classreference}{reference} 
+            \addtoindexx{containing type attribute!encoding} \\
+\DWATdefaultvalue&0x1e&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classreference}{reference}, 
+        \livelink{chap:classflag}{flag}
+            \addtoindexx{default value attribute!encoding} \\
+\DWATinline&0x20&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{inline attribute!encoding}  \\
+\DWATisoptional&0x21&\livelink{chap:classflag}{flag} 
+            \addtoindexx{is optional attribute!encoding} \\
+\DWATlowerbound&0x22&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{lower bound attribute!encoding}  \\
+\DWATproducer&0x25&\livelink{chap:classstring}{string}
+            \addtoindexx{producer attribute!encoding}  \\
+\DWATprototyped&0x27&\livelink{chap:classflag}{flag}
+            \addtoindexx{prototyped attribute!encoding}  \\
+\DWATreturnaddr&0x2a&\livelink{chap:classexprloc}{exprloc},
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{return address attribute!encoding}  \\
+\DWATstartscope&0x2c&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classrangelistptr}{rangelistptr}
+            \addtoindexx{start scope attribute!encoding}  \\
+\DWATbitstride&0x2e&\livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{bit stride attribute!encoding}  \\
+\DWATupperbound&0x2f&\livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{upper bound attribute!encoding}  \\
+\DWATabstractorigin&0x31&\livelink{chap:classreference}{reference} 
+            \addtoindexx{abstract origin attribute!encoding}  \\
+\DWATaccessibility&0x32&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{accessibility attribute!encoding}  \\
+\DWATaddressclass&0x33&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{address class attribute!encoding}  \\
+\DWATartificial&0x34&\livelink{chap:classflag}{flag} 
+            \addtoindexx{artificial attribute!encoding}  \\
+\DWATbasetypes&0x35&\livelink{chap:classreference}{reference} 
+            \addtoindexx{base types attribute!encoding}  \\
+\DWATcallingconvention&0x36&\livelink{chap:classconstant}{constant} 
         \addtoindexx{calling convention attribute!encoding} \\
         \addtoindexx{calling convention attribute!encoding} \\
-\livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference 
-        \addtoindexx{count attribute!encoding}  \\
-\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, 
-        \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} 
-        \addtoindexx{data member attribute!encoding}  \\
-\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant 
-        \addtoindexx{declaration column attribute!encoding}  \\
-\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant 
-        \addtoindexx{declaration file attribute!encoding}  \\
-\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant 
-        \addtoindexx{declaration line attribute!encoding}  \\
-\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&\livelink{chap:flag}{flag} 
-        \addtoindexx{declaration attribute!encoding}  \\
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block} 
-        \addtoindexx{discriminant list attribute!encoding}  \\
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant 
-        \addtoindexx{encoding attribute!encoding}  \\
-\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{flag} 
-        \addtoindexx{external attribute!encoding}  \\
-\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding}  \\
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference 
-        \addtoindexx{friend attribute!encoding}  \\
-\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant 
-        \addtoindexx{identifier case attribute!encoding}  \\
-\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr} 
-        \addtoindexx{macro information attribute!encoding}  \\
-\livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference 
-        \addtoindexx{name list item attribute!encoding}  \\
-\livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference 
-        \addtoindexx{priority attribute!encoding}  \\
-\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{segment attribute!encoding}  \\
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference 
+\DWATcount&0x37&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{count attribute!encoding}  \\
+\DWATdatamemberlocation&0x38&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{data member attribute!encoding}  \\
+\DWATdeclcolumn&0x39&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{declaration column attribute!encoding}  \\
+\DWATdeclfile&0x3a&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{declaration file attribute!encoding}  \\
+\DWATdeclline&0x3b&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{declaration line attribute!encoding}  \\
+\DWATdeclaration&0x3c&\livelink{chap:classflag}{flag} 
+            \addtoindexx{declaration attribute!encoding}  \\
+\DWATdiscrlist&0x3d&\livelink{chap:classblock}{block} 
+            \addtoindexx{discriminant list attribute!encoding}  \\
+\DWATencoding&0x3e&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{encoding attribute!encoding}  \\
+\DWATexternal&\xiiif&\livelink{chap:classflag}{flag} 
+            \addtoindexx{external attribute!encoding}  \\
+\DWATframebase&0x40&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{frame base attribute!encoding}  \\
+\DWATfriend&0x41&\livelink{chap:classreference}{reference} 
+            \addtoindexx{friend attribute!encoding}  \\
+\DWATidentifiercase&0x42&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{identifier case attribute!encoding}  \\
+\DWATmacroinfo\footnote{\raggedright Not used in \DWARFVersionV. 
+                        Reserved for compatibility and coexistence
+                        with prior DWARF versions.}
+            &0x43&\livelink{chap:classmacptr}{macptr} 
+            \addtoindexx{macro information attribute (legacy)!encoding}  \\
+\DWATnamelistitem&0x44&\livelink{chap:classreference}{reference} 
+            \addtoindexx{name list item attribute!encoding}  \\
+\DWATpriority&0x45&\livelink{chap:classreference}{reference} 
+            \addtoindexx{priority attribute!encoding}  \\
+\DWATsegment&0x46&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{segment attribute!encoding}  \\
+\DWATspecification&0x47&\livelink{chap:classreference}{reference} 
         \addtoindexx{specification attribute!encoding}  \\
         \addtoindexx{specification attribute!encoding}  \\
-\livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{static link attribute!encoding}  \\
-\livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference 
-        \addtoindexx{type attribute!encoding}  \\
-\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{location list attribute!encoding}  \\
-\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&\livelink{chap:flag}{flag} 
-        \addtoindexx{variable parameter attribute!encoding}  \\
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant 
-        \addtoindexx{virtuality attribute!encoding}  \\
-\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, 
-        \livelink{chap:loclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding}  \\
-
-\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{allocated attribute!encoding}  \\
-\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{associated attribute!encoding}  \\
-\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc} 
+\DWATstaticlink&0x48&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{static link attribute!encoding}  \\
+\DWATtype&0x49&\livelink{chap:classreference}{reference} 
+            \addtoindexx{type attribute!encoding}  \\
+\DWATuselocation&0x4a&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{location list attribute!encoding}  \\
+\DWATvariableparameter&0x4b&\livelink{chap:classflag}{flag} 
+            \addtoindexx{variable parameter attribute!encoding}  \\
+\DWATvirtuality&0x4c&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{virtuality attribute!encoding}  \\
+\DWATvtableelemlocation&0x4d&\livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{vtable element location attribute!encoding}  \\
+\DWATallocated&0x4e&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{allocated attribute!encoding}  \\
+\DWATassociated&0x4f&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{associated attribute!encoding}  \\
+\DWATdatalocation&0x50&\livelink{chap:classexprloc}{exprloc} 
         \addtoindexx{data location attribute!encoding}  \\
         \addtoindexx{data location attribute!encoding}  \\
-\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, 
-        reference \addtoindexx{byte stride attribute!encoding}  \\
-\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address 
-        \addtoindexx{entry pc attribute!encoding}  \\
-\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&\livelink{chap:flag}{flag} 
-        \addtoindexx{use UTF8 attribute!encoding}  \\
-\livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference 
-        \addtoindexx{extension attribute!encoding}  \\
-\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr} 
-        \addtoindexx{ranges attribute!encoding}  \\
-\livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, \livelink{chap:flag}{flag}, 
-        reference, string \addtoindexx{trampoline attribute!encoding}  \\
-\livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant 
-        \addtoindexx{call column attribute!encoding}  \\
-\livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant 
-        \addtoindexx{call file attribute!encoding}  \\
-\livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant 
-        \addtoindexx{call line attribute!encoding}  \\
-\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string 
-        \addtoindexx{description attribute!encoding}  \\
-\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant 
-        \addtoindexx{binary scale attribute!encoding}  \\
-\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant 
-        \addtoindexx{decimal scale attribute!encoding}  \\
-\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference 
-        \addtoindexx{small attribute!encoding}  \\
-\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant 
-        \addtoindexx{decimal scale attribute!encoding}  \\
-\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant 
-        \addtoindexx{digit count attribute!encoding}  \\
-\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string 
-        \addtoindexx{picture string attribute!encoding}  \\
-\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&\livelink{chap:flag}{flag} 
-        \addtoindexx{mutable attribute!encoding}  \\
-
-\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&\livelink{chap:flag}{flag} 
-        \addtoindexx{thread scaled attribute!encoding}  \\
-\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&\livelink{chap:flag}{flag} 
-        \addtoindexx{explicit attribute!encoding}  \\
-\livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference 
-        \addtoindexx{object pointer attribute!encoding}  \\
-\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant 
-        \addtoindexx{endianity attribute!encoding}  \\
-\livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&\livelink{chap:flag}{flag} 
-        \addtoindexx{elemental attribute!encoding}  \\
-\livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&\livelink{chap:flag}{flag} 
-        \addtoindexx{pure attribute!encoding}  \\
-\livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&\livelink{chap:flag}{flag} 
-        \addtoindexx{recursive attribute!encoding}  \\
-\livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference 
-        \addtoindexx{signature attribute!encoding}  \\ 
-\livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&\livelink{chap:flag}{flag} 
-        \addtoindexx{main subprogram attribute!encoding}  \\
-\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant 
-        \addtoindexx{data bit offset attribute!encoding}  \\
-\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&\livelink{chap:flag}{flag} 
-        \addtoindexx{constant expression attribute!encoding}  \\
-\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&\livelink{chap:flag}{flag} 
-        \addtoindexx{enumeration class attribute!encoding}  \\
-\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string 
-        \addtoindexx{linkage name attribute!encoding}  \\
-\livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
-\livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding}  \\
-
-\end{longtable}
-\ddag  Attribute new in \addtoindex{DWARF Version 4} 
+\DWATbytestride&0x51&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{byte stride attribute!encoding}  \\
+\DWATentrypc&0x52&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classconstant}{constant} 
+            \addtoindexx{entry pc attribute!encoding}  \\
+\DWATuseUTFeight&0x53&\livelink{chap:classflag}{flag} 
+            \addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8}  \\
+\DWATextension&0x54&\livelink{chap:classreference}{reference} 
+            \addtoindexx{extension attribute!encoding}  \\
+\DWATranges&0x55&\livelink{chap:classrangelistptr}{rangelistptr} 
+            \addtoindexx{ranges attribute!encoding}  \\
+\DWATtrampoline&0x56&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classflag}{flag}, 
+        \livelink{chap:classreference}{reference}, 
+        \livelink{chap:classstring}{string} 
+            \addtoindexx{trampoline attribute!encoding}  \\
+\DWATcallcolumn&0x57&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{call column attribute!encoding}  \\
+\DWATcallfile&0x58&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{call file attribute!encoding}  \\
+\DWATcallline&0x59&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{call line attribute!encoding}  \\
+\DWATdescription&0x5a&\livelink{chap:classstring}{string} 
+            \addtoindexx{description attribute!encoding}  \\
+\DWATbinaryscale&0x5b&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{binary scale attribute!encoding}  \\
+\DWATdecimalscale&0x5c&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{decimal scale attribute!encoding}  \\
+\DWATsmall{} &0x5d&\livelink{chap:classreference}{reference} 
+            \addtoindexx{small attribute!encoding}  \\
+\DWATdecimalsign&0x5e&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{decimal scale attribute!encoding}  \\
+\DWATdigitcount&0x5f&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{digit count attribute!encoding}  \\
+\DWATpicturestring&0x60&\livelink{chap:classstring}{string} 
+            \addtoindexx{picture string attribute!encoding}  \\
+\DWATmutable&0x61&\livelink{chap:classflag}{flag} 
+            \addtoindexx{mutable attribute!encoding}  \\
+\DWATthreadsscaled&0x62&\livelink{chap:classflag}{flag} 
+            \addtoindexx{thread scaled attribute!encoding}  \\
+\DWATexplicit&0x63&\livelink{chap:classflag}{flag} 
+            \addtoindexx{explicit attribute!encoding}  \\
+\DWATobjectpointer&0x64&\livelink{chap:classreference}{reference} 
+            \addtoindexx{object pointer attribute!encoding}  \\
+\DWATendianity&0x65&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{endianity attribute!encoding}  \\
+\DWATelemental&0x66&\livelink{chap:classflag}{flag} 
+            \addtoindexx{elemental attribute!encoding}  \\
+\DWATpure&0x67&\livelink{chap:classflag}{flag} 
+            \addtoindexx{pure attribute!encoding}  \\
+\DWATrecursive&0x68&\livelink{chap:classflag}{flag} 
+            \addtoindexx{recursive attribute!encoding}  \\
+\DWATsignature{} &0x69&\livelink{chap:classreference}{reference} 
+            \addtoindexx{signature attribute!encoding}  \\ 
+\DWATmainsubprogram{} &0x6a&\livelink{chap:classflag}{flag} 
+            \addtoindexx{main subprogram attribute!encoding}  \\
+\DWATdatabitoffset{} &0x6b&\livelink{chap:classconstant}{constant} 
+            \addtoindexx{data bit offset attribute!encoding}  \\
+\DWATconstexpr{} &0x6c&\livelink{chap:classflag}{flag} 
+            \addtoindexx{constant expression attribute!encoding}  \\
+\DWATenumclass{} &0x6d&\livelink{chap:classflag}{flag} 
+            \addtoindexx{enumeration class attribute!encoding}  \\
+\DWATlinkagename{} &0x6e&\livelink{chap:classstring}{string} 
+            \addtoindexx{linkage name attribute!encoding}  \\
+\DWATstringlengthbitsize{}~\ddag&0x6f&
+               \livelink{chap:classconstant}{constant}
+            \addtoindexx{string length attribute!size of length}  \\
+\DWATstringlengthbytesize{}~\ddag&0x70&
+               \livelink{chap:classconstant}{constant}
+            \addtoindexx{string length attribute!size of length}  \\
+\DWATrank~\ddag&0x71&
+        \livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}
+            \addtoindexx{rank attribute!encoding}  \\
+\DWATstroffsetsbase~\ddag&0x72&
+               \livelinki{chap:classstring}{stroffsetsptr}{stroffsetsptr class}
+            \addtoindexx{string offsets base!encoding} \\
+\DWATaddrbase~\ddag &0x73&
+               \livelinki{chap:DWATaddrbase}{addrptr}{addrptr class}
+            \addtoindexx{address table base!encoding} \\
+\DWATrangesbase~\ddag&0x74&
+               \livelinki{chap:DWATrangesbase}{rangelistptr}{rangelistptr class}
+            \addtoindexx{ranges base!encoding} \\
+\DWATdwoid~\ddag &0x75&
+               \livelink{chap:DWATdwoid}{constant}
+            \addtoindexx{split DWARF object id!encoding} \\
+\DWATdwoname~\ddag &0x76&
+               \livelink{chap:DWATdwoname}{string}
+            \addtoindexx{split DWARF object file name!encoding} \\
+\DWATreference~\ddag &0x77&
+        \livelink{chap:DWATreference}{flag} \\
+\DWATrvaluereference~\ddag &0x78&
+        \livelink{chap:DWATrvaluereference}{flag} \\
+\DWATmacros~\ddag &0x79&\livelink{chap:classmacptr}{macptr} 
+        \addtoindexx{macro information attribute!encoding}  \\
+\DWATcallallcalls~\ddag &0x7a&\CLASSflag
+        \addtoindexx{all calls summary attribute!encoding}\\
+\DWATcallallsourcecalls~\ddag &0x7b &\CLASSflag
+        \addtoindexx{all source calls summary attribute!encoding} \\
+\DWATcallalltailcalls~\ddag &0x7c&\CLASSflag
+        \addtoindexx{all tail calls summary attribute!encoding} \\
+\DWATcalldatalocation~\ddag &0x7d&\CLASSexprloc
+        \addtoindexx{call data location attribute!encoding} \\
+\DWATcalldatavalue~\ddag &0x7e&\CLASSexprloc
+        \addtoindexx{call data value attribute!encoding} \\
+\DWATcallorigin~\ddag &0x7f &\CLASSexprloc
+        \addtoindexx{call origin attribute!encoding} \\
+\DWATcallparameter~\ddag &0x80 &\CLASSreference
+        \addtoindexx{call parameter attribute!encoding} \\
+\DWATcallpc~\ddag &0x81 &\CLASSaddress
+        \addtoindexx{call pc attribute!encoding} \\
+\DWATcallreturnpc~\ddag &0x82 &\CLASSaddress
+        \addtoindexx{call return pc attribute!encoding} \\
+\DWATcalltailcall~\ddag &0x83 &\CLASSflag
+        \addtoindexx{call tail call attribute!encoding} \\
+\DWATcalltarget~\ddag &0x84 &\CLASSexprloc
+        \addtoindexx{call target attribute!encoding} \\
+\DWATcalltargetclobbered!\ddag &0x85 &\CLASSexprloc
+        \addtoindexx{call target clobbered attribute!encoding} \\
+\DWATcallvalue~\ddag &0x86 &\CLASSexprloc
+        \addtoindexx{call value attribute!encoding} \\
+
+\DWATlouser&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
+\DWAThiuser&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
+
+\end{longtable} 
 \end{centering}
 
 \end{centering}
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
   \caption{Attribute form encodings} \label{tab:attributeformencodings} \\
 \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
 \endfirsthead
   \bfseries Form name&\bfseries Value &\bfseries Classes\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 \endlastfoot
-\livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
-\livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&\livelink{chap:block}{block}  \\
-\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}&0x05&constant \\
-\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4}&0x06&constant \\
-\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}&0x07&constant \\
-\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}&0x08&string \\
-\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}&0x09&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&\livelink{chap:block}{block} \\
-\livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}&0x0b&constant \\
-\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}&0x0c&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}&0x0d&constant    \\
-\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&0x0e&string         \\
-\livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata}&0x0f&constant         \\
-\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}&0x10&reference         \\
-\livelink{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}&0x11&reference          \\
-\livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}&0x12&reference         \\
-\livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}&0x13&reference         \\
-\livelink{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}&0x14&reference \\
-\livelink{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}&0x15&reference  \\
-\livelink{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect}&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
-\livelink{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc} \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
-\livelink{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present} \ddag &0x19&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
+
+\DWFORMaddr &0x01&\livelink{chap:classaddress}{address}  \\
+\textit{Reserved} &0x02& \\
+\DWFORMblocktwo &0x03&\livelink{chap:classblock}{block} \\
+\DWFORMblockfour &0x04&\livelink{chap:classblock}{block}  \\
+\DWFORMdatatwo &0x05&\livelink{chap:classconstant}{constant} \\
+\DWFORMdatafour &0x06&\livelink{chap:classconstant}{constant} \\
+\DWFORMdataeight &0x07&\livelink{chap:classconstant}{constant} \\
+\DWFORMstring&0x08&\livelink{chap:classstring}{string} \\
+\DWFORMblock&0x09&\livelink{chap:classblock}{block} \\
+\DWFORMblockone &0x0a&\livelink{chap:classblock}{block} \\
+\DWFORMdataone &0x0b&\livelink{chap:classconstant}{constant} \\
+\DWFORMflag&0x0c&\livelink{chap:classflag}{flag} \\
+\DWFORMsdata&0x0d&\livelink{chap:classconstant}{constant}    \\
+\DWFORMstrp&0x0e&\livelink{chap:classstring}{string}         \\
+\DWFORMudata&0x0f&\livelink{chap:classconstant}{constant}         \\
+\DWFORMrefaddr&0x10&\livelink{chap:classreference}{reference}         \\
+\DWFORMrefone&0x11&\livelink{chap:classreference}{reference}          \\
+\DWFORMreftwo&0x12&\livelink{chap:classreference}{reference}         \\
+\DWFORMreffour&0x13&\livelink{chap:classreference}{reference}         \\
+\DWFORMrefeight&0x14&\livelink{chap:classreference}{reference} \\
+\DWFORMrefudata&0x15&\livelink{chap:classreference}{reference}  \\
+\DWFORMindirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
+\DWFORMsecoffset{} &0x17&\livelink{chap:classlineptr}{lineptr}, \livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr}, \livelink{chap:classrangelistptr}{rangelistptr} \\
+\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
+\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
+\DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\
+\DWFORMaddrx{} \ddag &0x1b&\livelink{chap:classaddress}{address} \\
+\DWFORMrefsigeight &0x20&\livelink{chap:classreference}{reference} \\
+
 \end{longtable}
 \end{longtable}
-\ddag  FORM new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \end{centering}
 
+
+\needlines{6}
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
 \addtoindexx{variable length data|see {LEB128}}
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
 \addtoindexx{variable length data|see {LEB128}}
-\addtoindexx{LEB128 encoding}
-Integers may be encoded using ``Little Endian Base 128''
-(LEB128) numbers. LEB128 is a scheme for encoding integers
+Integers may be 
+\addtoindexx{Little Endian Base 128|see{LEB128}}
+encoded using \doublequote{Little Endian Base 128}
+\addtoindexx{little-endian encoding|see{endian attribute}}
+(LEB128) numbers. 
+\addtoindexx{LEB128}
+LEB128 is a scheme for encoding integers
 densely that exploits the assumption that most integers are
 small in magnitude.
 
 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
-order. It is ``little\dash endian'' only in the sense that it
-avoids using space to represent the ``big'' end of an
+\textit{This encoding is equally suitable whether the target machine
+architecture represents data in big\dash\ endian or little\dash endian
+order. It is \doublequote{little\dash endian} only in the sense that it
+avoids using space to represent the \doublequote{big} end of an
 unsigned integer, when the big end is all zeroes or sign
 unsigned integer, when the big end is all zeroes or sign
-extension bits.
+extension bits.}
 
 
-Unsigned LEB128 (ULEB128) numbers are encoded as follows:
+Unsigned LEB128\addtoindexx{LEB128!unsigned} (ULEB128) numbers are encoded as follows:
+\addtoindexx{LEB128!unsigned, encoding as}
 start at the low order end of an unsigned integer and chop
 it into 7\dash bit chunks. Place each chunk into the low order 7
 bits of a byte. Typically, several of the high order bytes
 start at the low order end of an unsigned integer and chop
 it into 7\dash bit chunks. Place each chunk into the low order 7
 bits of a byte. Typically, several of the high order bytes
@@ -1179,12 +1620,14 @@ The integer zero is a special case, consisting of a single
 zero byte.
 
 Table \refersec{tab:examplesofunsignedleb128encodings}
 zero byte.
 
 Table \refersec{tab:examplesofunsignedleb128encodings}
-gives some examples of unsigned LEB128 numbers. The
+gives some examples of unsigned LEB128\addtoindexx{LEB128!unsigned}
+numbers. The
 0x80 in each case is the high order bit of the byte, indicating
 that an additional byte follows.
 
 
 0x80 in each case is the high order bit of the byte, indicating
 that an additional byte follows.
 
 
-The encoding for signed, two’s complement LEB128 (SLEB128)
+The encoding for signed, two\textquoteright s complement LEB128 (SLEB128)
+\addtoindexx{LEB128!signed, encoding as}
 numbers is similar, except that the criterion for discarding
 high order bytes is not whether they are zero, but whether
 they consist entirely of sign extension bits. Consider the
 numbers is similar, except that the criterion for discarding
 high order bytes is not whether they are zero, but whether
 they consist entirely of sign extension bits. Consider the
@@ -1196,19 +1639,23 @@ that there is nothing within the LEB128 representation that
 indicates whether an encoded number is signed or unsigned. The
 decoder must know what type of number to expect. 
 Table \refersec{tab:examplesofunsignedleb128encodings}
 indicates whether an encoded number is signed or unsigned. The
 decoder must know what type of number to expect. 
 Table \refersec{tab:examplesofunsignedleb128encodings}
-gives some examples of unsigned LEB128 numbers and 
-Table \refersec{tab:examplesofsignedleb128encodings}
-gives some examples of signed LEB128 numbers.
-
-Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
-gives algorithms for encoding and decoding these forms.
+gives some examples of unsigned LEB128\addtoindexx{LEB128!unsigned}
+numbers and Table \refersec{tab:examplesofsignedleb128encodings}
+gives some examples of signed LEB128\addtoindexx{LEB128!signed} 
+numbers.
 
 
+\textit{Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
+\addtoindexx{LEB128!examples}
+gives algorithms for encoding and decoding these forms.}
 
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
 \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}\addtoindexx{LEB128!unsigned} \\
+  \hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
@@ -1222,7 +1669,6 @@ gives algorithms for encoding and decoding these forms.
 129& 1 + 0x80 & 1 \\
 130& 2 + 0x80 & 1 \\
 12857& 57 + 0x80 & 100 \\
 129& 1 + 0x80 & 1 \\
 130& 2 + 0x80 & 1 \\
 12857& 57 + 0x80 & 100 \\
-\addtoindex{LEB128 encoding!examples}
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
@@ -1231,8 +1677,10 @@ gives algorithms for encoding and decoding these forms.
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
 \begin{centering}
 \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
+  \caption{Examples of signed LEB128 encodings} 
+  \label{tab:examplesofsignedleb128encodings} 
+  \addtoindexx{LEB128!signed} \\
+  \hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
 \endfirsthead
   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
 \endhead
@@ -1247,7 +1695,7 @@ gives algorithms for encoding and decoding these forms.
 128& 0 + 0x80 & 1 \\
 -128& 0 + 0x80 & 0x7f \\
 129& 1 + 0x80 & 1 \\
 128& 0 + 0x80 & 1 \\
 -128& 0 + 0x80 & 0x7f \\
 129& 1 + 0x80 & 1 \\
--129& -x7f + 0x80 & 0xtc \\
+-129& 0x7f + 0x80 & 0x7e \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1270,9 +1718,9 @@ Table \refersec{tab:dwarfoperationencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l|l|l}
+\begin{longtable}{l|c|c|l}
   \caption{DWARF operation encodings} \label{tab:dwarfoperationencodings} \\
   \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 &\\ 
   \bfseries Operation&\bfseries Code &\bfseries Operands &\bfseries Notes\\ \hline
 \endfirsthead
    & &\bfseries No. of &\\ 
@@ -1280,101 +1728,99 @@ Table \refersec{tab:dwarfoperationencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 
 \endlastfoot
 
-\livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
-& & &(size target specific) \\
-
-\livelink{chap:DWOPderef}{DW\-\_OP\-\_deref}&0x06&0 & \\
-
-
-\livelink{chap:DWOPconst1u}{DW\-\_OP\-\_const1u}&0x08&1&1\dash byte constant  \\
-\livelink{chap:DWOPconst1s}{DW\-\_OP\-\_const1s}&0x09&1&1\dash byte constant   \\
-\livelink{chap:DWOPconst2u}{DW\-\_OP\-\_const2u}&0x0a&1&2\dash byte constant   \\
-\livelink{chap:DWOPconst2s}{DW\-\_OP\-\_const2s}&0x0b&1&2\dash byte constant   \\
-\livelink{chap:DWOPconst4u}{DW\-\_OP\-\_const4u}&0x0c&1&4\dash byte constant    \\
-\livelink{chap:DWOPconst4s}{DW\-\_OP\-\_const4s}&0x0d&1&4\dash byte constant   \\
-\livelink{chap:DWOPconst8u}{DW\-\_OP\-\_const8u}&0x0e&1&8\dash byte constant   \\
-\livelink{chap:DWOPconst8s}{DW\-\_OP\-\_const8s}&0x0f&1&8\dash byte constant   \\
-\livelink{chap:DWOPconstu}{DW\-\_OP\-\_constu}&0x10&1&ULEB128 constant   \\
-\livelink{chap:DWOPconsts}{DW\-\_OP\-\_consts}&0x11&1&SLEB128 constant   \\
-\livelink{chap:DWOPdup}{DW\-\_OP\-\_dup}&0x12&0 &   \\
-\livelink{chap:DWOPdrop}{DW\-\_OP\-\_drop}&0x13&0  &   \\
-\livelink{chap:DWOPover}{DW\-\_OP\-\_over}&0x14&0 &   \\
-\livelink{chap:DWOPpick}{DW\-\_OP\-\_pick}&0x15&1&1\dash byte stack index   \\
-\livelink{chap:DWOPswap}{DW\-\_OP\-\_swap}&0x16&0 &   \\
-\livelink{chap:DWOProt}{DW\-\_OP\-\_rot}&0x17&0 &   \\
-\livelink{chap:DWOPxderef}{DW\-\_OP\-\_xderef}&0x18&0 &   \\
-\livelink{chap:DWOPabs}{DW\-\_OP\-\_abs}&0x19&0 &   \\
-\livelink{chap:DWOPand}{DW\-\_OP\-\_and}&0x1a&0 &   \\
-\livelink{chap:DWOPdiv}{DW\-\_OP\-\_div}&0x1b&0 &   \\
-
-
-
-\livelink{chap:DWOPminus}{DW\-\_OP\-\_minus}&0x1c&0 & \\
-\livelink{chap:DWOPmod}{DW\-\_OP\-\_mod}&0x1d&0 & \\
-\livelink{chap:DWOPmul}{DW\-\_OP\-\_mul}&0x1e&0 & \\
-\livelink{chap:DWOPneg}{DW\-\_OP\-\_neg}&0x1f&0 & \\
-\livelink{chap:DWOPnot}{DW\-\_OP\-\_not}&0x20&0 & \\
-\livelink{chap:DWOPor}{DW\-\_OP\-\_or}&0x21&0 & \\
-\livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}&0x22&0 & \\
-\livelink{chap:DWOPplusuconst}{DW\-\_OP\-\_plus\-\_uconst}&0x23&1&ULEB128 addend \\
-\livelink{chap:DWOPshl}{DW\-\_OP\-\_shl}&0x24&0 & \\
-\livelink{chap:DWOPshr}{DW\-\_OP\-\_shr}&0x25&0 & \\
-\livelink{chap:DWOPshra}{DW\-\_OP\-\_shra}&0x26&0 & \\
-\livelink{chap:DWOPxor}{DW\-\_OP\-\_xor}&0x27&0 & \\
-\livelink{chap:DWOPskip}{DW\-\_OP\-\_skip}&0x2f&1&signed 2\dash byte constant \\
-\livelink{chap:DWOPbra}{DW\-\_OP\-\_bra}&0x28&1 & signed 2\dash byte constant \\
-\livelink{chap:DWOPeq}{DW\-\_OP\-\_eq}&0x29&0 & \\
-\livelink{chap:DWOPge}{DW\-\_OP\-\_ge}&0x2a&0 & \\
-\livelink{chap:DWOPgt}{DW\-\_OP\-\_gt}&0x2b&0 & \\
-\livelink{chap:DWOPle}{DW\-\_OP\-\_le}&0x2c&0 & \\
-\livelink{chap:DWOPlt}{DW\-\_OP\-\_lt}&0x2d&0  & \\
-\livelink{chap:DWOPne}{DW\-\_OP\-\_ne}&0x2e&0 & \\ \hline
-
-
-
-\livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0}&0x30 & 0 & \\
-
-\livelink{chap:DWOPlit1}{DW\-\_OP\-\_lit1}&0x31 & 0& literals 0 .. 31 = \\
-\ldots & & & (\livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0} + literal) \\
-\livelink{chap:DWOPlit31}{DW\-\_OP\-\_lit31}&0x4f & 0 & \\ \hline
-
-\livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} & 0x50 & 0 & \\
-\livelink{chap:DWOPreg1}{DW\-\_OP\-\_reg1} & 0x51 & 0&reg 0 .. 31 = \\
-\ldots & & & (\livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} + regnum) \\
-\livelink{chap:DWOPreg31}{DW\-\_OP\-\_reg31} & 0x6f & 0 & \\ \hline
-
-\livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} & 0x70 &1 & SLEB128 offset \\
-\livelink{chap:DWOPbreg1}{DW\-\_OP\-\_breg1} & 0x71 & 1 &base register 0 .. 31 = \\
-... & &              &(\livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} + regnum) \\
-\livelink{chap:DWOPbreg31}{DW\-\_OP\-\_breg31} & 0x8f & 1 & \\ \hline
-
-\livelink{chap:DWOPregx}{DW\-\_OP\-\_regx} & 0x90 &1&ULEB128 register \\
-\livelink{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} & 0x91&1&SLEB128 offset \\
-\livelink{chap:DWOPbregx}{DW\-\_OP\-\_bregx} & 0x92&2 &ULEB128 register followed \\
-& & & by SLEB128 offset \\
-\livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} & 0x93 &1& ULEB128 size of piece addressed \\
-\livelink{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} & 0x94 &1& 1-byte size of data retrieved \\
-\livelink{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size} & 0x95&1&1-byte size of data retrieved \\
-\livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} & 0x96 &0& \\
-
-
-\livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}&0x97&0 &  \\
-\livelink{chap:DWOPcall2}{DW\-\_OP\-\_call2}&0x98&1& 2\dash byte offset of DIE \\
-\livelink{chap:DWOPcall4}{DW\-\_OP\-\_call4}&0x99&1& 4\dash byte offset of DIE \\
-\livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&0x9a&1& 4\dash\  or 8\dash byte\\
-     &&& offset of DIE \\
-\livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address}&0x9b &0& \\
-\livelink{chap:DWOPcallframecfa}{DW\-\_OP\-\_call\-\_frame\-\_cfa} &0x9c &0& \\
-\livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece}&0x9d &2&ULEB128 size followed by \\
-&&&ULEB128 offset\\
-\livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value}&0x9e &2&ULEB128 size followed by \\
-&&&\nolink{block} of that size\\
-\livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} &0x9f &0& \\
-\livetarg{chap:DWOPlouser}{DW\-\_OP\-\_lo\-\_user} &0xe0 && \\
-\livetarg{chap:DWOPhiuser}{DW\-\_OP\-\_hi\-\_user} &0xff && \\
+\DWOPaddr&0x03&1 & constant address  \\ 
+& & &(size is target specific) \\
+
+\DWOPderef&0x06&0 & \\
+
+\DWOPconstoneu&0x08&1&1\dash byte constant  \\
+\DWOPconstones&0x09&1&1\dash byte constant   \\
+\DWOPconsttwou&0x0a&1&2\dash byte constant   \\
+\DWOPconsttwos&0x0b&1&2\dash byte constant   \\
+\DWOPconstfouru&0x0c&1&4\dash byte constant    \\
+\DWOPconstfours&0x0d&1&4\dash byte constant   \\
+\DWOPconsteightu&0x0e&1&8\dash byte constant   \\
+\DWOPconsteights&0x0f&1&8\dash byte constant   \\
+\DWOPconstu&0x10&1&ULEB128 constant   \\
+\DWOPconsts&0x11&1&SLEB128 constant   \\
+\DWOPdup&0x12&0 &   \\
+\DWOPdrop&0x13&0  &   \\
+\DWOPover&0x14&0 &   \\
+\DWOPpick&0x15&1&1\dash byte stack index   \\
+\DWOPswap&0x16&0 &   \\
+\DWOProt&0x17&0 &   \\
+\DWOPxderef&0x18&0 &   \\
+\DWOPabs&0x19&0 &   \\
+\DWOPand&0x1a&0 &   \\
+\DWOPdiv&0x1b&0 &   \\
+\DWOPminus&0x1c&0 & \\
+\DWOPmod&0x1d&0 & \\
+\DWOPmul&0x1e&0 & \\
+\DWOPneg&0x1f&0 & \\
+\DWOPnot&0x20&0 & \\
+\DWOPor&0x21&0 & \\
+\DWOPplus&0x22&0 & \\
+\DWOPplusuconst&0x23&1&ULEB128 addend \\
+\DWOPshl&0x24&0 & \\
+\DWOPshr&0x25&0 & \\
+\DWOPshra&0x26&0 & \\
+\DWOPxor&0x27&0 & \\
+
+\DWOPbra&0x28&1 & signed 2\dash byte constant \\
+\DWOPeq&0x29&0 & \\
+\DWOPge&0x2a&0 & \\
+\DWOPgt&0x2b&0 & \\
+\DWOPle&0x2c&0 & \\
+\DWOPlt&0x2d&0  & \\
+\DWOPne&0x2e&0 & \\
+\DWOPskip&0x2f&1&signed 2\dash byte constant \\ \hline
+
+\DWOPlitzero & 0x30 & 0 & \\
+\DWOPlitone  & 0x31 & 0& literals 0 .. 31 = \\
+\ldots & & &\hspace{0.3cm}(\DWOPlitzero{} + literal) \\
+\DWOPlitthirtyone & 0x4f & 0 & \\ \hline
+
+\DWOPregzero & 0x50 & 0 & \\*
+\DWOPregone  & 0x51 & 0&reg 0 .. 31 = \\*
+\ldots & & &\hspace{0.3cm}(\DWOPregzero{} + regnum) \\*
+\DWOPregthirtyone & 0x6f & 0 & \\ \hline
+
+\DWOPbregzero & 0x70 &1 & SLEB128 offset \\*
+\DWOPbregone  & 0x71 & 1 &base register 0 .. 31 = \\*
+... & &              &\hspace{0.3cm}(\DWOPbregzero{} + regnum) \\*
+\DWOPbregthirtyone & 0x8f & 1 & \\ \hline
+
+\DWOPregx{} & 0x90 &1&ULEB128 register \\
+\DWOPfbreg{} & 0x91&1&SLEB128 offset \\
+\DWOPbregx{} & 0x92&2 &ULEB128 register, \\*
+                  & & &SLEB128 offset \\
+\DWOPpiece{} & 0x93 &1& ULEB128 size of piece \\
+\DWOPderefsize{} & 0x94 &1& 1-byte size of data retrieved \\
+\DWOPxderefsize{} & 0x95&1&1-byte size of data retrieved \\
+\DWOPnop{} & 0x96 &0& \\
+
+\DWOPpushobjectaddress&0x97&0 &  \\
+\DWOPcalltwo&0x98&1& 2\dash byte offset of DIE \\
+\DWOPcallfour&0x99&1& 4\dash byte offset of DIE \\
+\DWOPcallref&0x9a&1& 4\dash\  or 8\dash byte offset of DIE \\
+\DWOPformtlsaddress&0x9b &0& \\
+\DWOPcallframecfa{} &0x9c &0& \\
+\DWOPbitpiece&0x9d &2&ULEB128 size, \\*
+                   &&&ULEB128 offset\\
+\DWOPimplicitvalue{} &0x9e &2&ULEB128 size, \\*
+                   &&&\nolink{block} of that size\\
+\DWOPstackvalue{} &0x9f &0& \\
+\DWOPimplicitpointer{}~\ddag &0xa0& 2 &4- or 8-byte offset of DIE, \\*
+                              &&&SLEB128 constant offset \\
+\DWOPaddrx~\ddag&0xa1&1&ULEB128 indirect address \\
+\DWOPconstx~\ddag&0xa2&1&ULEB128 indirect constant   \\
+\DWOPentryvalue~\ddag&0xa3&2&ULEV128 size, \\*
+                   &&&\nolink{block} of that size\\
+\DWOPlouser{} &0xe0 && \\
+\DWOPhiuser{} &\xff && \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1389,37 +1835,66 @@ location of a variable or other entity.
 \subsection{Location Lists}
 \label{datarep:locationlists}
 
 \subsection{Location Lists}
 \label{datarep:locationlists}
 
-Each entry in a location list is either a location list entry,
+Each entry in a \addtoindex{location list} is either a location list entry,
 a base address selection entry, or an 
 a base address selection entry, or an 
-\addtoindex{end of list entry!in location list}
+\addtoindexx{end of list entry!in location list}
 end of list entry.
 
 end of list entry.
 
-A location list entry consists of two address offsets followed
+\needlines{6}
+\subsubsection{Location List Entries in Non-Split Objects}
+A \addtoindex{location list} entry consists of two address offsets followed
 by a 2\dash byte length, followed by a block of contiguous bytes
 that contains a DWARF location description. The length
 specifies the number of bytes in that block. The two offsets
 are the same size as an address on the target machine.
 
 by a 2\dash byte length, followed by a block of contiguous bytes
 that contains a DWARF location description. The length
 specifies the number of bytes in that block. The two offsets
 are the same size as an address on the target machine.
 
+\needlines{5}
 A base address selection entry and an 
 A base address selection entry and an 
-\addtoindex{end of list entry!in location list}
+\addtoindexx{end of list entry!in location list}
 end of list entry each
 consist of two (constant or relocated) address offsets. The two
 offsets are the same size as an address on the target machine.
 
 end of list entry each
 consist of two (constant or relocated) address offsets. The two
 offsets are the same size as an address on the target machine.
 
-For a location list to be specified, the base address of
+For a \addtoindex{location list} to be specified, the base address of
 \addtoindexx{base address selection entry!in location list}
 the corresponding compilation unit must be defined 
 (see Section  \refersec{chap:normalandpartialcompilationunitentries}).
 
 \addtoindexx{base address selection entry!in location list}
 the corresponding compilation unit must be defined 
 (see Section  \refersec{chap:normalandpartialcompilationunitentries}).
 
+\subsubsection{Location List Entries in Split Objects}
+An alternate form for location list entries is used in split objects. 
+Each entry begins with a one-byte code that indicates the kind of entry
+that follows. The encodings for these constants are given in
+Table \refersec{tab:locationlistentryencodingvalues}.
+
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|c}
+  \caption{Location list entry encoding values} \label{tab:locationlistentryencodingvalues} \\
+  \hline \bfseries Location list entry encoding name&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries Location list entry encoding name&\bfseries Value\\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+\endlastfoot
+\DWLLEendoflistentry & 0x0 \\
+\DWLLEbaseaddressselectionentry & 0x01 \\
+\DWLLEstartendentry & 0x02 \\
+\DWLLEstartlengthentry & 0x03 \\
+\DWLLEoffsetpairentry & 0x04 \\
+\end{longtable}
+\end{centering}
+
 \section{Base Type Attribute Encodings}
 \label{datarep:basetypeattributeencodings}
 
 The encodings of the 
 \section{Base Type Attribute Encodings}
 \label{datarep:basetypeattributeencodings}
 
 The encodings of the 
-\hypertarget{chap:DWATencodingencodingofbasetype}
+\hypertarget{chap:DWATencodingencodingofbasetype}{}
 constants used in 
 \addtoindexx{encoding attribute!encoding}
 the 
 constants used in 
 \addtoindexx{encoding attribute!encoding}
 the 
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
+\DWATencoding{}
 attribute are given in 
 Table \refersec{tab:basetypeencodingvalues}
 
 attribute are given in 
 Table \refersec{tab:basetypeencodingvalues}
 
@@ -1427,50 +1902,46 @@ Table \refersec{tab:basetypeencodingvalues}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Base type encoding values} \label{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 name&\bfseries Value \\ \hline
 \endfirsthead
 \endfirsthead
-  \bfseries Base type encoding code name&\bfseries Value\\ \hline
+  \bfseries Base type encoding name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
-
-\livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
-\livelink{chap:DWATEboolean}{DW\-\_ATE\-\_boolean}&0x02 \\
-\livelink{chap:DWATEcomplexfloat}{DW\-\_ATE\-\_complex\-\_float}&0x03 \\
-\livelink{chap:DWATEfloat}{DW\-\_ATE\-\_float}&0x04 \\
-\livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}&0x05 \\
-\livelink{chap:DWATEsignedchar}{DW\-\_ATE\-\_signed\-\_char}&0x06 \\
-\livelink{chap:DWATEunsigned}{DW\-\_ATE\-\_unsigned}&0x07 \\
-\livelink{chap:DWATEunsignedchar}{DW\-\_ATE\-\_unsigned\-\_char}&0x08 \\
-\livelink{chap:DWATEimaginaryfloat}{DW\-\_ATE\-\_imaginary\-\_float}&0x09 \\
-\livelink{chap:DWATEpackeddecimal}{DW\-\_ATE\-\_packed\-\_decimal}&0x0a \\
-\livelink{chap:DWATEnumericstring}{DW\-\_ATE\-\_numeric\-\_string}&0x0b \\
-\livelink{chap:DWATEedited}{DW\-\_ATE\-\_edited}&0x0c \\
-\livelink{chap:DWATEsignedfixed}{DW\-\_ATE\-\_signed\-\_fixed}&0x0d \\
-\livelink{chap:DWATEunsignedfixed}{DW\-\_ATE\-\_unsigned\-\_fixed}&0x0e \\
-\livelink{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} & 0x0f \\
-\livelink{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} \ddag & 0x10 \\
-\livetarg{chap:DWATElouser}{DW\-\_ATE\-\_lo\-\_user} & 0x80 \\
-\livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
-
+\DWATEaddress&0x01 \\
+\DWATEboolean&0x02 \\
+\DWATEcomplexfloat&0x03 \\
+\DWATEfloat&0x04 \\
+\DWATEsigned&0x05 \\
+\DWATEsignedchar&0x06 \\
+\DWATEunsigned&0x07 \\
+\DWATEunsignedchar&0x08 \\
+\DWATEimaginaryfloat&0x09 \\
+\DWATEpackeddecimal&0x0a \\
+\DWATEnumericstring&0x0b \\
+\DWATEedited&0x0c \\
+\DWATEsignedfixed&0x0d \\
+\DWATEunsignedfixed&0x0e \\
+\DWATEdecimalfloat{} & 0x0f \\
+\DWATEUTF{} & 0x10 \\
+\DWATElouser{} & 0x80 \\
+\DWATEhiuser{} & \xff \\
 \end{longtable}
 \end{longtable}
-\ddag  Base type encoding new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 \end{centering}
 
-
+\needlines{4}
 The encodings of the constants used in the 
 The encodings of the constants used in the 
-\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute 
+\DWATdecimalsign{} attribute 
 are given in 
 Table \refersec{tab:decimalsignencodings}.
 
 are given in 
 Table \refersec{tab:decimalsignencodings}.
 
-
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Decimal sign encodings} \label{tab:decimalsignencodings} \\
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Decimal sign code name&\bfseries Value\\ \hline
 \endhead
@@ -1479,24 +1950,25 @@ Table \refersec{tab:decimalsignencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWDSunsigned}{DW\-\_DS\-\_unsigned} & 0x01  \\
-\livelink{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & 0x02  \\
-\livelink{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & 0x03  \\
-\livelink{chap:DWDSleadingseparate}{DW\-\_DS\-\_leading\-\_separate} & 0x04  \\
-\livelink{chap:DWDStrailingseparate}{DW\-\_DS\-\_trailing\-\_separate} & 0x05  \\
+\DWDSunsigned{} & 0x01  \\
+\DWDSleadingoverpunch{} & 0x02  \\
+\DWDStrailingoverpunch{} & 0x03  \\
+\DWDSleadingseparate{} & 0x04  \\
+\DWDStrailingseparate{} & 0x05  \\
 
 \end{longtable}
 \end{centering}
 
 
 \end{longtable}
 \end{centering}
 
+\needlines{9}
 The encodings of the constants used in the 
 The encodings of the constants used in the 
-\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute are given in 
+\DWATendianity{} attribute are given in 
 Table \refersec{tab:endianityencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Endianity encodings} \label{tab:endianityencodings}\\
 Table \refersec{tab:endianityencodings}.
 
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Endian code name&\bfseries Value\\ \hline
 \endhead
@@ -1505,11 +1977,11 @@ Table \refersec{tab:endianityencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWENDdefault}{DW\-\_END\-\_default}  & 0x00 \\
-\livelink{chap:DWENDbig}{DW\-\_END\-\_big} & 0x01 \\
-\livelink{chap:DWENDlittle}{DW\-\_END\-\_little} & 0x02 \\
-\livetarg{chap:DWENDlouser}{DW\-\_END\-\_lo\-\_user} & 0x40 \\
-\livetarg{chap:DWENDhiuser}{DW\-\_END\-\_hi\-\_user} & 0xff \\
+\DWENDdefault{}  & 0x00 \\
+\DWENDbig{} & 0x01 \\
+\DWENDlittle{} & 0x02 \\
+\DWENDlouser{} & 0x40 \\
+\DWENDhiuser{} & \xff \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1517,7 +1989,7 @@ Table \refersec{tab:endianityencodings}.
 \section{Accessibility Codes}
 \label{datarep:accessibilitycodes}
 The encodings of the constants used in the 
 \section{Accessibility Codes}
 \label{datarep:accessibilitycodes}
 The encodings of the constants used in the 
-\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+\DWATaccessibility{}
 attribute 
 \addtoindexx{accessibility attribute!encoding}
 are given in 
 attribute 
 \addtoindexx{accessibility attribute!encoding}
 are given in 
@@ -1527,7 +1999,7 @@ Table \refersec{tab:accessibilityencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Accessibility encodings} \label{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
 \endfirsthead
   \bfseries Accessibility code name&\bfseries Value\\ \hline
 \endhead
@@ -1536,9 +2008,9 @@ Table \refersec{tab:accessibilityencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWACCESSpublic}{DW\-\_ACCESS\-\_public}&0x01  \\
-\livelink{chap:DWACCESSprotected}{DW\-\_ACCESS\-\_protected}&0x02 \\
-\livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}&0x03 \\
+\DWACCESSpublic&0x01  \\
+\DWACCESSprotected&0x02 \\
+\DWACCESSprivate&0x03 \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1547,14 +2019,14 @@ Table \refersec{tab:accessibilityencodings}.
 \section{Visibility Codes}
 \label{datarep:visibilitycodes}
 The encodings of the constants used in the 
 \section{Visibility Codes}
 \label{datarep:visibilitycodes}
 The encodings of the constants used in the 
-\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute are given in 
+\DWATvisibility{} attribute are given in 
 Table \refersec{tab:visibilityencodings}. 
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Visibility encodings} \label{tab:visibilityencodings}\\
 Table \refersec{tab:visibilityencodings}. 
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Visibility encodings} \label{tab:visibilityencodings}\\
-  \hline \\ \bfseries Visiibility code name&\bfseries Value \\ \hline
+  \hline \bfseries Visibility code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Visibility code name&\bfseries Value\\ \hline
 \endhead
 \endfirsthead
   \bfseries Visibility code name&\bfseries Value\\ \hline
 \endhead
@@ -1563,9 +2035,9 @@ Table \refersec{tab:visibilityencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWVISlocal}{DW\-\_VIS\-\_local}&0x01 \\
-\livelink{chap:DWVISexported}{DW\-\_VIS\-\_exported}&0x02 \\
-\livelink{chap:DWVISqualified}{DW\-\_VIS\-\_qualified}&0x03 \\
+\DWVISlocal&0x01 \\
+\DWVISexported&0x02 \\
+\DWVISqualified&0x03 \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1574,14 +2046,14 @@ Table \refersec{tab:visibilityencodings}.
 \label{datarep:vitualitycodes}
 
 The encodings of the constants used in the 
 \label{datarep:vitualitycodes}
 
 The encodings of the constants used in the 
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute are given in 
+\DWATvirtuality{} attribute are given in 
 Table \refersec{tab:virtualityencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Virtuality encodings} \label{tab:virtualityencodings}\\
 Table \refersec{tab:virtualityencodings}.
 
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Virtuality code name&\bfseries Value\\ \hline
 \endhead
@@ -1590,9 +2062,9 @@ Table \refersec{tab:virtualityencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none}&0x00 \\
-\livelink{chap:DWVIRTUALITYvirtual}{DW\-\_VIRTUALITY\-\_virtual}&0x01 \\
-\livelink{chap:DWVIRTUALITYpurevirtual}{DW\-\_VIRTUALITY\-\_pure\-\_virtual}&0x02 \\
+\DWVIRTUALITYnone&0x00 \\
+\DWVIRTUALITYvirtual&0x01 \\
+\DWVIRTUALITYpurevirtual&0x02 \\
 
 
 
 
 
 
@@ -1600,14 +2072,19 @@ Table \refersec{tab:virtualityencodings}.
 \end{centering}
 
 The value 
 \end{centering}
 
 The value 
-\livelink{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none} is equivalent to the absence of the 
-\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
+\DWVIRTUALITYnone{} is equivalent to the absence of the 
+\DWATvirtuality{}
 attribute.
 
 \section{Source Languages}
 \label{datarep:sourcelanguages}
 
 attribute.
 
 \section{Source Languages}
 \label{datarep:sourcelanguages}
 
-The encodings of the constants used in the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
+The encodings of the constants used 
+\addtoindexx{language attribute, encoding}
+in 
+\addtoindexx{language name encoding}
+the 
+\DWATlanguage{}
 attribute are given in 
 Table \refersec{tab:languageencodings}.
 Names marked with
 attribute are given in 
 Table \refersec{tab:languageencodings}.
 Names marked with
@@ -1616,49 +2093,61 @@ Names marked with
 and their associated values are reserved, but the
 languages they represent are not well supported. 
 Table \refersec{tab:languageencodings}
 and their associated values are reserved, but the
 languages they represent are not well supported. 
 Table \refersec{tab:languageencodings}
-also shows the default lower bound, if any, assumed for
-an omitted \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound} attribute in the context of a
-\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} debugging information entry for each
+also shows the 
+\addtoindexx{lower bound attribute!default}
+default lower bound, if any, assumed for
+an omitted \DWATlowerbound{} attribute in the context of a
+\DWTAGsubrangetype{} debugging information entry for each
 defined language.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|c}
   \caption{Language encodings} \label{tab:languageencodings}\\
 defined language.
 
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
+  \dag \ \textit{See text} \\ \ddag \ \textit{New in \addtoindex{DWARF Version 5}}
 \endlastfoot
 \endlastfoot
-
-\livelink{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&0x0001&0       \\
-\livelink{chap:DWLANGC}{DW\-\_LANG\-\_C}&0x0002&0  \\
-\livelink{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag &0x0003&1  \addtoindexx{Ada}     \\
-\livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus} &0x0004&0       \\
-\livelink{chap:DWLANGCobol74}{DW\-\_LANG\-\_Cobol74} \dag &0x0005&1       \\
-\livelink{chap:DWLANGCobol85}{DW\-\_LANG\-\_Cobol85} \dag &0x0006&1       \\
-\livelink{chap:DWLANGFortran77}{DW\-\_LANG\-\_Fortran77}&0x0007&1       \\
-\livelink{chap:DWLANGFortran90}{DW\-\_LANG\-\_Fortran90}&0x0008&1       \\
-\livelink{chap:DWLANGPascal83}{DW\-\_LANG\-\_Pascal83}&0x0009&1       \\
-\livelink{chap:DWLANGModula2}{DW\-\_LANG\-\_Modula2}&0x000a&1       \\
-\livelink{chap:DWLANGJava}{DW\-\_LANG\-\_Java}&0x000b&0       \\
-\livelink{chap:DWLANGC99}{DW\-\_LANG\-\_C99}&0x000c&0       \\
-\livelink{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag &0x000d&1 \addtoindexx{Ada}      \\
-\livelink{chap:DWLANGFortran95}{DW\-\_LANG\-\_Fortran95} &0x000e&1       \\
-\livelink{chap:DWLANGPLI}{DW\-\_LANG\-\_PLI} \dag &0x000f&1 \\
-\livelink{chap:DWLANGObjC}{DW\-\_LANG\-\_ObjC}&0x0010&0 \\
-\livelink{chap:DWLANGObjCplusplus}{DW\-\_LANG\-\_ObjC\-\_plus\-\_plus}&0x0011&0 \\
-\livelink{chap:DWLANGUPC}{DW\-\_LANG\-\_UPC}&0x0012&0 \\
-\livelink{chap:DWLANGD}{DW\-\_LANG\-\_D}&0x0013&0 \\
-\livelink{chap:DWLANGPython}{DW\-\_LANG\-\_Python} \dag &0x0014&0 \\
-\livetarg{chap:DWLANGlouser}{DW\-\_LANG\-\_lo\-\_user}&0x8000 & \\
-\livetarg{chap:DWLANGhiuser}{DW\-\_LANG\-\_hi\-\_user}&0xffff & \\
+\addtoindexx{ISO-defined language names}
+
+\DWLANGCeightynine &0x0001 &0 \addtoindexx{C:1989 (ISO)}      \\
+\DWLANGC{} &0x0002 &0  \addtoindexx{C!non-standard} \\
+\DWLANGAdaeightythree{} \dag &0x0003 &1  \addtoindexx{Ada:1983 (ISO)}     \\
+\DWLANGCplusplus{} &0x0004 &0 \addtoindexx{C++:1998 (ISO)}      \\
+\DWLANGCobolseventyfour{} \dag &0x0005 &1 \addtoindexx{COBOL:1974 (ISO)}      \\
+\DWLANGCoboleightyfive{} \dag &0x0006 &1 \addtoindexx{COBOL:1985 (ISO)}      \\
+\DWLANGFortranseventyseven &0x0007 &1 \addtoindexx{FORTRAN:1977 (ISO)}      \\
+\DWLANGFortranninety &0x0008 &1 \addtoindexx{Fortran:1990 (ISO)}      \\
+\DWLANGPascaleightythree &0x0009 &1 \addtoindexx{Pascal:1983 (ISO)}      \\
+\DWLANGModulatwo &0x000a &1 \addtoindexx{Modula-2:1996 (ISO)}      \\
+\DWLANGJava &0x000b &0 \addtoindexx{Java}      \\
+\DWLANGCninetynine &0x000c &0 \addtoindexx{C:1999 (ISO)}      \\
+\DWLANGAdaninetyfive{} \dag &0x000d &1 \addtoindexx{Ada:1995 (ISO)}      \\
+\DWLANGFortranninetyfive &0x000e &1 \addtoindexx{Fortran:1995 (ISO)}      \\
+\DWLANGPLI{} \dag &0x000f &1 \addtoindexx{PL/I:1976 (ANSI)}\\
+\DWLANGObjC{} &0x0010 &0 \addtoindexx{Objective C}\\
+\DWLANGObjCplusplus{} &0x0011 &0 \addtoindexx{Objective C++}\\
+\DWLANGUPC{} &0x0012 &0 \addtoindexx{UPC}\\
+\DWLANGD{} &0x0013 &0 \addtoindexx{D language}\\
+\DWLANGPython{} \dag &0x0014 &0 \addtoindexx{Python}\\
+\DWLANGOpenCL{} \dag \ddag &0x0015 &0 \addtoindexx{OpenCL}\\
+\DWLANGGo{} \dag \ddag &0x0016 &0 \addtoindexx{Go}\\
+\DWLANGModulathree{} \dag \ddag &0x0017 &1 \addtoindexx{Modula-3}\\
+\DWLANGHaskell{} \dag \ddag &0x0018 &0 \addtoindexx{Haskell}\\
+\DWLANGCpluspluszerothree{} \ddag &0x0019 &0 \addtoindexx{C++:2003 (ISO)}\\
+\DWLANGCpluspluseleven{} \ddag &0x001a &0 \addtoindexx{C++:2011 (ISO)}\\
+\DWLANGOCaml{} \ddag &0x001b &0        \addtoindexx{OCaml}\\
+\DWLANGRust{} \ddag &0x001c &0 \addtoindexx{Rust}\\
+\DWLANGCeleven{} \ddag &0x001d &0 \addtoindexx{C:2011 (ISO)}\\
+\DWLANGlouser{} &0x8000 & \\
+\DWLANGhiuser{} &\xffff & \\
 
 \end{longtable}
 
 \end{longtable}
-\dag See text
 \end{centering}
 
 \section{Address Class Encodings}
 \end{centering}
 
 \section{Address Class Encodings}
@@ -1667,21 +2156,21 @@ defined language.
 The value of the common 
 \addtoindexi{address}{address class!attribute encoding}
 class encoding 
 The value of the common 
 \addtoindexi{address}{address class!attribute encoding}
 class encoding 
-\livelink{chap:DWADDRnone}{DW\-\_ADDR\-\_none} is 0.
-
+\DWADDRnone{} is 0.
 
 
+\needlines{7}
 \section{Identifier Case}
 \label{datarep:identifiercase}
 
 The encodings of the constants used in the 
 \section{Identifier Case}
 \label{datarep:identifiercase}
 
 The encodings of the constants used in the 
-\livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} attribute are given in 
+\DWATidentifiercase{} attribute are given in 
 Table \refersec{tab:identifiercaseencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Identifier case encodings} \label{tab:identifiercaseencodings}\\
 Table \refersec{tab:identifiercaseencodings}.
 
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Identifier case name&\bfseries Value\\ \hline
 \endhead
@@ -1689,37 +2178,37 @@ Table \refersec{tab:identifiercaseencodings}.
 \endfoot
   \hline
 \endlastfoot
 \endfoot
   \hline
 \endlastfoot
-\livelink{chap:DWIDcasesensitive}{DW\-\_ID\-\_case\-\_sensitive}&0x00     \\
-\livelink{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case}&0x01     \\
-\livelink{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case}&0x02     \\
-\livelink{chap:DWIDcaseinsensitive}{DW\-\_ID\-\_case\-\_insensitive}&0x03     \\
+\DWIDcasesensitive&0x00     \\
+\DWIDupcase&0x01     \\
+\DWIDdowncase&0x02     \\
+\DWIDcaseinsensitive&0x03     \\
 \end{longtable}
 \end{centering}
 
 \section{Calling Convention Encodings}
 \label{datarep:callingconventionencodings}
 The encodings of the constants used in the 
 \end{longtable}
 \end{centering}
 
 \section{Calling Convention Encodings}
 \label{datarep:callingconventionencodings}
 The encodings of the constants used in the 
-\livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention} attribute are given in
+\DWATcallingconvention{} attribute are given in
 Table \refersec{tab:callingconventionencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Calling convention encodings} \label{tab:callingconventionencodings}\\
 Table \refersec{tab:callingconventionencodings}.
 
 \begin{centering}
 \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
 \endfirsthead
-  \bfseries Calling Convention name&\bfseries Value\\ \hline
+  \bfseries Calling convention name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livelink{chap:DWCCnormal}{DW\-\_CC\-\_normal}&0x01     \\
-\livelink{chap:DWCCprogram}{DW\-\_CC\-\_program}&0x02     \\
-\livelink{chap:DWCCnocall}{DW\-\_CC\-\_nocall}&0x03     \\
-\livetarg{chap:DWCClouser}{DW\-\_CC\-\_lo\-\_user}&0x40     \\
-\livetarg{chap:DWCChiuser}{DW\-\_CC\-\_hi\-\_user}&0xff     \\
+\DWCCnormal&0x01     \\
+\DWCCprogram&0x02     \\
+\DWCCnocall&0x03     \\
+\DWCClouser&0x40     \\
+\DWCChiuser&\xff     \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1730,45 +2219,47 @@ Table \refersec{tab:callingconventionencodings}.
 The encodings of the constants used in 
 \addtoindexx{inline attribute!encoding}
 the 
 The encodings of the constants used in 
 \addtoindexx{inline attribute!encoding}
 the 
-\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
+\DWATinline{} attribute are given in 
 Table \refersec{tab:inlineencodings}.
 
 Table \refersec{tab:inlineencodings}.
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Inline encodings} \label{tab:inlineencodings}\\
 \begin{centering}
 \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
 \endfirsthead
-  \bfseries Iline Code name&\bfseries Value\\ \hline
+  \bfseries Inline Code name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livelink{chap:DWINLnotinlined}{DW\-\_INL\-\_not\-\_inlined}&0x00      \\
-\livelink{chap:DWINLinlined}{DW\-\_INL\-\_inlined}&0x01      \\
-\livelink{chap:DWINLdeclarednotinlined}{DW\-\_INL\-\_declared\-\_not\-\_inlined}&0x02      \\
-\livelink{chap:DWINLdeclaredinlined}{DW\-\_INL\-\_declared\-\_inlined}&0x03      \\
+\DWINLnotinlined&0x00      \\
+\DWINLinlined&0x01      \\
+\DWINLdeclarednotinlined&0x02      \\
+\DWINLdeclaredinlined&0x03      \\
 
 \end{longtable}
 \end{centering}
 
 % this clearpage is ugly, but the following table came
 % out oddly without it.
 
 \end{longtable}
 \end{centering}
 
 % this clearpage is ugly, but the following table came
 % out oddly without it.
-\clearpage
+
 \section{Array Ordering}
 \label{datarep:arrayordering}
 
 The encodings of the constants used in the 
 \section{Array Ordering}
 \label{datarep:arrayordering}
 
 The encodings of the constants used in the 
-\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute are given in 
+\DWATordering{} attribute are given in 
 Table \refersec{tab:orderingencodings}.
 
 Table \refersec{tab:orderingencodings}.
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Ordering encodings} \label{tab:orderingencodings}\\
 \begin{centering}
 \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
 \endfirsthead
   \bfseries Ordering name&\bfseries Value\\ \hline
 \endhead
@@ -1777,8 +2268,8 @@ Table \refersec{tab:orderingencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWORDrowmajor}{DW\-\_ORD\-\_row\-\_major}&0x00  \\
-\livelink{chap:DWORDcolmajor}{DW\-\_ORD\-\_col\-\_major}&0x01  \\
+\DWORDrowmajor&0x00  \\
+\DWORDcolmajor&0x01  \\
 
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
@@ -1790,77 +2281,83 @@ Table \refersec{tab:orderingencodings}.
 The descriptors used in 
 \addtoindexx{discriminant list attribute!encoding}
 the 
 The descriptors used in 
 \addtoindexx{discriminant list attribute!encoding}
 the 
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are 
+\DWATdiscrlist{} attribute are 
 encoded as 1\dash byte constants. The
 defined values are given in 
 Table \refersec{tab:discriminantdescriptorencodings}.
 
 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}\\
 \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
 \endfirsthead
-  \bfseries Descriptor Name&\bfseries Value\\ \hline
+  \bfseries Descriptor name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livetarg{chap:DWDSClabel}{DW\-\_DSC\-\_label}&0x00 \\
-\livetarg{chap:DWDSCrange}{DW\-\_DSC\-\_range}&0x01 \\
+\DWDSClabel&0x00 \\
+\DWDSCrange&0x01 \\
 
 \end{longtable}
 \end{centering}
 
 
 \end{longtable}
 \end{centering}
 
+\needlines{6}
 \section{Name Lookup Tables}
 \label{datarep:namelookuptables}
 
 Each set of entries in the table of global names contained
 \section{Name Lookup Tables}
 \label{datarep:namelookuptables}
 
 Each set of entries in the table of global names contained
-in the \addtoindex{.debug\_pubnames} and 
-\addtoindex{.debug\_pubtypes} sections begins
+in the \dotdebugpubnames{} and 
+\dotdebugpubtypes{} sections begins
 with a header consisting of:
 with a header consisting of:
+\begin{enumerate}[1. ]
 
 
-
-\begin{enumerate}[1.]
-\item unit\_length (initial length) \\
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
-of the \addtoindex{.debug\_info}
+of the \dotdebuginfo{}
 contribution for that compilation unit,
 contribution for that compilation unit,
-not including the length field itself. In the 32\dash bit DWARF
-format, this is a 4\dash byte unsigned integer (which must be less
-than 0xfffffff0); in the 64\dash bit DWARF format, this consists
-of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
+not including the length field itself. In the 
+\thirtytwobitdwarfformat, this is a 4\dash byte unsigned integer (which must be less
+than \xfffffffzero); in the \sixtyfourbitdwarfformat, this consists
+of the 4\dash byte value \wffffffff followed by an 8\dash byte unsigned
 integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 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
 A 2\dash byte unsigned integer representing the version of the
-DWARF information\addtoindexx{version number!compilation unit} for the compilation unit
+DWARF information for the name lookup table
 \addtoindexx{version number!name lookup table}
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
 \addtoindexx{version number!name lookup table}
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
-The value in this field is 4.
+The value in this field is 2.
 
 
-% 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 
-\addtoindex{.debug\_info}
+\needlines{4}
+\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 
+\dotdebuginfo{} or \dotdebuginfodwo{}
 section of the compilation unit header.
 section of the compilation unit header.
-In
-the 32\dash bit DWARF format, this is a 4\dash byte unsigned offset;
-in the 64\dash bit DWARF format, this is an 8\dash byte unsigned offsets
+In the \thirtytwobitdwarfformat, this is a 4\dash byte unsigned offset;
+in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned offsets
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 (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
-contents of the \addtoindex{.debug\_info}
+\item  \addtoindex{debug\_info\_length} (\livelink{datarep:sectionoffsetlength}{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 \dotdebuginfo{}
 section generated to represent
 section generated to represent
-this compilation unit. In the 32\dash bit DWARF format, this is
-a 4\dash byte unsigned length; in the 64\dash bit DWARF format, this
+this compilation unit. In the \thirtytwobitdwarfformat, this is
+a 4\dash byte unsigned length; in the \sixtyfourbitdwarfformat, this
 is an 8-byte unsigned length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 is an 8-byte unsigned length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
@@ -1877,50 +2374,59 @@ Each set is terminated by an
 offset containing the value 0.
 
 
 offset containing the value 0.
 
 
+\needlines{6}
 \section{Address Range Table}
 \label{datarep:addrssrangetable}
 
 Each set of entries in the table of address ranges contained
 \section{Address Range Table}
 \label{datarep:addrssrangetable}
 
 Each set of entries in the table of address ranges contained
-in the \addtoindex{.debug\_aranges}
+in the \dotdebugaranges{}
 section begins with a header containing:
 section begins with a header containing:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 % FIXME The unit length text is not fully consistent across
 % these tables.
 
 % FIXME The unit length text is not fully consistent across
 % these tables.
 
-\item unit\_length (initial length) \\
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{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
 A 4-byte or 12-byte length containing the length of the
 \addtoindexx{initial length}
 set of entries for this compilation unit, not including the
-length field itself. In the 32-bit DWARF format, this is a
-4-byte unsigned integer (which must be less than 0xfffffff0);
-in the 64-bit DWARF format, this consists of the 4-byte value
-0xffffffff followed by an 8-byte unsigned integer that gives
+length field itself. In the \thirtytwobitdwarfformat, this is a
+4-byte unsigned integer (which must be less than \xfffffffzero);
+in the \sixtyfourbitdwarfformat, this consists of the 4-byte value
+\wffffffff followed by an 8-byte unsigned integer that gives
 the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 the actual length 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item version (uhalf) \\
-A 2\dash byte version identifier
-\addtoindexx{version number!address range table} containing the value 2 
-(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
+\item version (\addtoindex{uhalf}) \\
+A 2\dash byte version identifier representing the version of the
+DWARF information for the address range table
+(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+This value in this field \addtoindexx{version number!address range table} is 2. 
 
 
-\item debug\_info\_offset (section offset) \\
-A 4\dash byte or 8\dash byte offset into the 
-\addtoindex{.debug\_info} section of
-the compilation unit header. In the 32\dash bit DWARF format,
-this is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
+\item debug\_info\_offset (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+A 
+\addtoindexx{section offset!in .debug\_aranges header}
+4\dash byte or 8\dash byte offset into the 
+\dotdebuginfo{} section of
+the compilation unit header. In the \thirtytwobitdwarfformat,
+this is a 4\dash byte unsigned offset; in the \sixtyfourbitdwarfformat,
 this is an 8\dash byte unsigned offset 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item address\_size (ubyte) \\
 A 1\dash byte unsigned integer containing the size in bytes of an
 \addtoindexx{address\_size}
 this is an 8\dash byte unsigned offset 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \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) \\
 \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}
 segment selector on the target system.
 
 \end{enumerate}
@@ -1928,17 +2434,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
 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
 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
 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.
 
 the segment selectors are omitted from all tuples, including
 the terminating tuple.
 
@@ -1947,123 +2453,159 @@ the terminating tuple.
 \label{datarep:linenumberinformation}
 
 The \addtoindexi{version number}{version number!line number information}
 \label{datarep:linenumberinformation}
 
 The \addtoindexi{version number}{version number!line number information}
-in the line number program header is 4
+in the line number program header is \versiondotdebugline{}
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
-The boolean values ``true'' and ``false'' 
+The boolean values \doublequote{true} and \doublequote{false} 
 used by the line number information program are encoded
 as a single byte containing the value 0 
 used by the line number information program are encoded
 as a single byte containing the value 0 
-for ``false,'' and a non-zero value for ``true.''
+for \doublequote{false,} and a non-zero value for \doublequote{true.}
 
 The encodings for the standard opcodes are given in 
 
 The encodings for the standard opcodes are given in 
+\addtoindexx{line number opcodes!standard opcode encoding}
 Table \refersec{tab:linenumberstandardopcodeencodings}.
 
 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}
 \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
+  \caption{Line number standard opcode encodings} \label{tab:linenumberstandardopcodeencodings}\\
+  \hline \bfseries Opcode name&\bfseries Value \\ \hline
 \endfirsthead
 \endfirsthead
-  \bfseries Opcode Name&\bfseries Value\\ \hline
+  \bfseries Opcode name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livelink{chap:DWLNScopy}{DW\-\_LNS\-\_copy}&0x01 \\
-\livelink{chap:DWLNSadvancepc}{DW\-\_LNS\-\_advance\-\_pc}&0x02 \\
-\livelink{chap:DWLNSadvanceline}{DW\-\_LNS\-\_advance\-\_line}&0x03 \\
-\livelink{chap:DWLNSsetfile}{DW\-\_LNS\-\_set\-\_file}&0x04 \\
-\livelink{chap:DWLNSsetcolumn}{DW\-\_LNS\-\_set\-\_column}&0x05 \\
-\livelink{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt}&0x06 \\
-\livelink{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}&0x07 \\
-\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}*0x08 \\
-\livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}&0x09 \\
-\livelink{chap:DWLNSsetprologueend}{DW\-\_LNS\-\_set\-\_prologue\-\_end}&0x0a \\
-\livelink{chap:DWLNSsetepiloguebegin}{DW\-\_LNS\-\_set\-\_epilogue\-\_begin}&0x0b \\
-\livelink{chap:DWLNSsetisa}{DW\-\_LNS\-\_set\-\_isa}&0x0c \\
+\DWLNScopy&0x01 \\
+\DWLNSadvancepc&0x02 \\
+\DWLNSadvanceline&0x03 \\
+\DWLNSsetfile&0x04 \\
+\DWLNSsetcolumn&0x05 \\
+\DWLNSnegatestmt&0x06 \\
+\DWLNSsetbasicblock&0x07 \\
+\DWLNSconstaddpc&0x08 \\
+\DWLNSfixedadvancepc&0x09 \\
+\DWLNSsetprologueend&0x0a \\*
+\DWLNSsetepiloguebegin&0x0b \\*
+\DWLNSsetisa&0x0c \\*
 
 \end{longtable}
 \end{centering}
 
 
 
 \end{longtable}
 \end{centering}
 
 
+\needspace{10cm}
 The encodings for the extended opcodes are given in 
 The encodings for the extended opcodes are given in 
+\addtoindexx{line number opcodes!extended opcode encoding}
 Table \refersec{tab:linenumberextendedopcodeencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
 Table \refersec{tab:linenumberextendedopcodeencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
-  \caption{Line Number Extended Opcode encodings} \label{tab:linenumberextendedopcodeencodings}\\
-  \hline \\ \bfseries Opcode Name&\bfseries Value \\ \hline
+  \caption{Line number extended opcode encodings} \label{tab:linenumberextendedopcodeencodings}\\
+  \hline \bfseries Opcode name&\bfseries Value \\ \hline
 \endfirsthead
 \endfirsthead
-  \bfseries Opcode Name&\bfseries Value\\ \hline
+  \bfseries Opcode name&\bfseries Value\\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline \ddag~\textit{New in DWARF Version 5}
+\endlastfoot
+
+\DWLNEendsequence      &0x01 \\
+\DWLNEsetaddress       &0x02 \\
+\DWLNEdefinefile       &0x03 \\
+\DWLNEsetdiscriminator &0x04 \\
+\DWLNEdefinefileMDfive~\ddag &0x05 \\
+\DWLNElouser           &0x80 \\
+\DWLNEhiuser           &\xff \\
+
+\end{longtable}
+\end{centering}
+
+\needspace{10cm}
+The encodings for the file entry format are given in 
+\addtoindexx{line number opcodes!file entry format encoding}
+Table \refersec{tab:linenumberfileentryformatencodings}.
+
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|c}
+  \caption{Line number file entry format \mbox{encodings}} \label{tab:linenumberfileentryformatencodings}\\
+  \hline \bfseries File entry format name&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries File entry format name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livelink{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence}&0x01    \\
-\livelink{chap:DWLNEsetaddress}{DW\-\_LNE\-\_set\-\_address}&0x02\\
-\livelink{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file}&0x03\\
-\livelink{chap:DWLNEsetdiscriminator}{DW\-\_LNE\-\_set\-\_discriminator} \ddag &0x04   \\
-\livetarg{chap:DWLNElouser}{DW\-\_LNE\-\_lo\-\_user}&0x80   \\
-\livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
+\DWLNFtimestampsize    & 0x01  \\
+\DWLNFMDfive           & 0x02  \\
 
 \end{longtable}
 
 \end{longtable}
-\ddag Extended opcode new in \addtoindex{DWARF Version 4}.
 \end{centering}
 
 \section{Macro Information}
 \label{datarep:macroinformation}
 
 The source line numbers and source file indices encoded in the
 \end{centering}
 
 \section{Macro Information}
 \label{datarep:macroinformation}
 
 The source line numbers and source file indices encoded in the
-macro information section are represented as unsigned LEB128
-numbers as are the constants in a 
-\livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext} entry.
+macro information section are represented as 
+unsigned LEB128\addtoindexx{LEB128!unsigned} numbers.
 
 
-The macinfo type is encoded as a single byte. 
-The encodings are given in 
-Table \refersec{tab:macinfotypeencodings}.
+The macro information entry type is encoded as a single byte. 
+The encodings 
+\addtoindexx{macro information entry types!encoding}
+are given in 
+Table \refersec{tab:macroinfoentrytypeencodings}.
 
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
 
 
 \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
+  \caption{Macro information entry type encodings} \label{tab:macroinfoentrytypeencodings}\\
+  \hline \bfseries Macro information entry type name&\bfseries Value \\ \hline
 \endfirsthead
 \endfirsthead
-  \bfseries Macinfo Type Name&\bfseries Value\\ \hline
+  \bfseries Macro information entry type name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
-\livelink{chap:DWMACINFOdefine}{DW\-\_MACINFO\-\_define}&0x01 \\
-\livelink{chap:DWMACINFOundef}{DW\-\_MACINFO\-\_undef}&0x02 \\
-\livelink{chap:DWMACINFOstartfile}{DW\-\_MACINFO\-\_start\-\_file}&0x03 \\
-\livelink{chap:DWMACINFOendfile}{DW\-\_MACINFO\-\_end\-\_file}&0x04 \\
-\livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext}&0xff \\
+\DWMACROdefine              &0x01 \\
+\DWMACROundef               &0x02 \\
+\DWMACROstartfile           &0x03 \\
+\DWMACROendfile             &0x04 \\
+\DWMACROdefineindirect      &0x05 \\
+\DWMACROundefindirect       &0x06 \\
+\DWMACROtransparentinclude  &0x07 \\
+% what about 0x08 thru 0x0a??
+\DWMACROdefineindirectx     &0x0b \\
+\DWMACROundefindirectx      &0x0c \\
+\DWMACROlouser              &0xe0 \\
+\DWMACROhiuser              &\xff \\
 
 \end{longtable}
 \end{centering}
 
 
 \end{longtable}
 \end{centering}
 
+\needlines{7}
 \section{Call Frame Information}
 \label{datarep:callframeinformation}
 
 \section{Call Frame Information}
 \label{datarep:callframeinformation}
 
-In the 32\dash bit DWARF format, the value of the CIE id in the
-CIE header is 0xffffffff; in the 64\dash bit DWARF format, the
-value is 0xffffffffffffffff.
+In the \thirtytwobitdwarfformat, the value of the CIE id in the
+CIE header is \xffffffff; in the \sixtyfourbitdwarfformat, the
+value is \xffffffffffffffff.
 
 The value of the CIE \addtoindexi{version number}{version number!call frame information}
 is 4 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 Call frame instructions are encoded in one or more bytes. The
 primary opcode is encoded in the high order two bits of
 
 The value of the CIE \addtoindexi{version number}{version number!call frame information}
 is 4 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 Call frame instructions are encoded in one or more bytes. The
 primary opcode is encoded in the high order two bits of
-the first byte (that is, opcode = byte >> 6). An operand
+the first byte (that is, opcode = byte $\gg$ 6). An operand
 or extended opcode may be encoded in the low order 6
 bits. Additional operands are encoded in subsequent bytes.
 The instructions and their encodings are presented in
 or extended opcode may be encoded in the low order 6
 bits. Additional operands are encoded in subsequent bytes.
 The instructions and their encodings are presented in
@@ -2073,7 +2615,7 @@ Table \refersec{tab:callframeinstructionencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|c|l|l}
   \caption{Call frame instruction encodings} \label{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 &  &\\
   \bfseries Instruction&\bfseries Bits &\bfseries Bits &\bfseries Operand 1 &\bfseries Operand 2\\ \hline
 \endfirsthead
    & \bfseries High 2 &\bfseries Low 6 &  &\\
@@ -2084,63 +2626,237 @@ Table \refersec{tab:callframeinstructionencodings}.
   \hline
 \endlastfoot
 
   \hline
 \endlastfoot
 
-\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}&0x1&delta & \\
-\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}&0x2&register&ULEB128 offset \\
-\livelink{chap:DWCFArestore}{DW\-\_CFA\-\_restore}&0x3&register & & \\
-\livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop}&0&0 & & \\
-\livelink{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc}&0&0x01&address & \\
-\livelink{chap:DWCFAadvanceloc1}{DW\-\_CFA\-\_advance\-\_loc1}&0&0x02&1\dash byte delta & \\
-\livelink{chap:DWCFAadvanceloc2}{DW\-\_CFA\-\_advance\-\_loc2}&0&0x03&2\dash byte delta & \\
-\livelink{chap:DWCFAadvanceloc4}{DW\-\_CFA\-\_advance\-\_loc4}&0&0x04&4\dash byte delta & \\
-\livelink{chap:DWCFAoffsetextended}{DW\-\_CFA\-\_offset\-\_extended}&0&0x05&ULEB128 register&ULEB128 offset \\
-\livelink{chap:DWCFArestoreextended}{DW\-\_CFA\-\_restore\-\_extended}&0&0x06&ULEB128 register & \\
-\livelink{chap:DWCFAundefined}{DW\-\_CFA\-\_undefined}&0&0x07&ULEB128 register & \\
-\livelink{chap:DWCFAsamevalue}{DW\-\_CFA\-\_same\-\_value}&0&0x08 &ULEB128 register & \\
-\livelink{chap:DWCFAregister}{DW\-\_CFA\-\_register}&0&0x09&ULEB128 register &ULEB128 offset \\
-\livelink{chap:DWCFArememberstate}{DW\-\_CFA\-\_remember\-\_state}&0&0x0a & & \\
-\livelink{chap:DWCFArestorestate}{DW\-\_CFA\-\_restore\-\_state}&0&0x0b & & \\
-\livelink{chap:DWCFAdefcfa}{DW\-\_CFA\-\_def\-\_cfa}&0&0x0c &ULEB128 register&ULEB128 offset \\
-\livelink{chap:DWCFAdefcfaregister}{DW\-\_CFA\-\_def\-\_cfa\-\_register}&0&0x0d&ULEB128 register & \\
-\livelink{chap:DWCFAdefcfaoffset}{DW\-\_CFA\-\_def\-\_cfa\-\_offset}&0&0x0e &ULEB128 offset & \\
-\livelink{chap:DWCFAdefcfaexpression}{DW\-\_CFA\-\_def\-\_cfa\-\_expression}&0&0x0f &BLOCK  \\
-\livelink{chap:DWCFAexpression}{DW\-\_CFA\-\_expression}&0&0x10&ULEB128 register & BLOCK \\
-
-\livelink{chap:DWCFAoffsetextendedsf}{DW\-\_CFA\-\_offset\-\_extended\-\_sf}&0&0x11&ULEB128 register&SLEB128 offset \\
-\livelink{chap:DWCFAdefcfasf}{DW\-\_CFA\-\_def\-\_cfa\-\_sf}&0&0x12&ULEB128 register&SLEB128 offset \\
-\livelink{chap:DWCFAdefcfaoffsetsf}{DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf}&0&0x13&SLEB128 offset & \\
-\livelink{chap:DWCFAvaloffset}{DW\-\_CFA\-\_val\-\_offset}&0&0x14&ULEB128&ULEB128 \\
-\livelink{chap:DWCFAvaloffsetsf}{DW\-\_CFA\-\_val\-\_offset\-\_sf}&0&0x15&ULEB128&SLEB128 \\
-\livelink{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression}&0&0x16&ULEB128&BLOCK  \\
-\livetarg{chap:DWCFAlouser}{DW\-\_CFA\-\_lo\-\_user}&0&0x1c   & & \\
-\livetarg{chap:DWCFAhiuser}{DW\-\_CFA\-\_hi\-\_user}&0&0x3f & & \\
+\DWCFAadvanceloc&0x1&delta & \\
+\DWCFAoffset&0x2&register&ULEB128 offset \\
+\DWCFArestore&0x3&register & & \\
+\DWCFAnop&0&0 & & \\
+\DWCFAsetloc&0&0x01&address & \\
+\DWCFAadvancelocone&0&0x02&1\dash byte delta & \\
+\DWCFAadvanceloctwo&0&0x03&2\dash byte delta & \\
+\DWCFAadvancelocfour&0&0x04&4\dash byte delta & \\
+\DWCFAoffsetextended&0&0x05&ULEB128 register&ULEB128 offset \\
+\DWCFArestoreextended&0&0x06&ULEB128 register & \\
+\DWCFAundefined&0&0x07&ULEB128 register & \\
+\DWCFAsamevalue&0&0x08 &ULEB128 register & \\
+\DWCFAregister&0&0x09&ULEB128 register &ULEB128 offset \\
+\DWCFArememberstate&0&0x0a & & \\
+\DWCFArestorestate&0&0x0b & & \\
+\DWCFAdefcfa&0&0x0c &ULEB128 register&ULEB128 offset \\
+\DWCFAdefcfaregister&0&0x0d&ULEB128 register & \\
+\DWCFAdefcfaoffset&0&0x0e &ULEB128 offset & \\
+\DWCFAdefcfaexpression&0&0x0f &BLOCK  \\
+\DWCFAexpression&0&0x10&ULEB128 register & BLOCK \\
+
+\DWCFAoffsetextendedsf&0&0x11&ULEB128 register&SLEB128 offset \\
+\DWCFAdefcfasf&0&0x12&ULEB128 register&SLEB128 offset \\
+\DWCFAdefcfaoffsetsf&0&0x13&SLEB128 offset & \\
+\DWCFAvaloffset&0&0x14&ULEB128&ULEB128 \\
+\DWCFAvaloffsetsf&0&0x15&ULEB128&SLEB128 \\
+\DWCFAvalexpression&0&0x16&ULEB128&BLOCK  \\
+\DWCFAlouser&0&0x1c   & & \\
+\DWCFAhiuser&0&\xiiif & & \\
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
-\section{Non-continguous Address Ranges}
+\section{Non-contiguous Address Ranges}
 \label{datarep:noncontiguousaddressranges}
 
 \label{datarep:noncontiguousaddressranges}
 
-Each entry in a range list 
+Each entry in a \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges})
 is either a
 \addtoindexx{base address selection entry!in range list}
 (see Section \refersec{chap:noncontiguousaddressranges})
 is either a
 \addtoindexx{base address selection entry!in range list}
-range list entry, a base address selection entry, or an end
+range list entry, 
+\addtoindexx{range list}
+a base address selection entry, or an end
 of list entry.
 
 of list entry.
 
-A range list entry consists of two relative addresses. The
+A \addtoindex{range list} entry consists of two relative addresses. The
 addresses are the same size as addresses on the target machine.
 
 A base address selection entry and an 
 addresses are the same size as addresses on the target machine.
 
 A base address selection entry and an 
-\addtoindex{end of list entry!in range list}
+\addtoindexx{end of list entry!in range list}
 end of list entry each
 \addtoindexx{base address selection entry!in range list}
 consist of two (constant or relocated) addresses. The two
 addresses are the same size as addresses on the target machine.
 
 end of list entry each
 \addtoindexx{base address selection entry!in range list}
 consist of two (constant or relocated) addresses. The two
 addresses are the same size as addresses on the target machine.
 
-For a range list to be specified, the base address of the
+For a \addtoindex{range list} to be specified, the base address of the
 \addtoindexx{base address selection entry!in range list}
 corresponding compilation unit must be defined 
 (see Section \refersec{chap:normalandpartialcompilationunitentries}).
 
 \addtoindexx{base address selection entry!in range list}
 corresponding compilation unit must be defined 
 (see Section \refersec{chap:normalandpartialcompilationunitentries}).
 
+\section{String Offsets Table}
+\label{chap:stringoffsetstable}
+Each set of entries in the string offsets table contained in the
+\dotdebugstroffsets{} or \dotdebugstroffsetsdwo{}
+section begins with a header containing:
+\begin{enumerate}[1. ]
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+A 4-byte or 12-byte length containing the length of
+the set of entries for this compilation unit, not
+including the length field itself. In the 32-bit
+DWARF format, this is a 4-byte unsigned integer
+(which must be less than \xfffffffzero); in the 64-bit
+DWARF format, this consists of the 4-byte value
+\wffffffff followed by an 8-byte unsigned integer
+that gives the actual length (see 
+Section \refersec{datarep:32bitand64bitdwarfformats}).
+
+\item  \texttt{version} (\addtoindex{uhalf}) \\
+A 2-byte version identifier containing the value
+\versiondotdebugstroffsets{} 
+(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+\item \texttt{padding} (\addtoindex{uhalf}) \\
+\end{enumerate}
+
+This header is followed by a series of string table offsets
+that have the same representation as \DWFORMstrp.
+For the 32-bit DWARF format, each offset is 4 bytes long; for
+the 64-bit DWARF format, each offset is 8 bytes long.
+
+The \DWATstroffsetsbase{} attribute points to the first
+entry following the header. The entries are indexed
+sequentially from this base entry, starting from 0.
+
+\section{Address Table}
+\label{chap:addresstable}
+Each set of entries in the address table contained in the
+\dotdebugaddr{} section begins with a header containing:
+\begin{enumerate}[1. ]
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+A 4-byte or 12-byte length containing the length of
+the set of entries for this compilation unit, not
+including the length field itself. In the 32-bit
+DWARF format, this is a 4-byte unsigned integer
+(which must be less than \xfffffffzero); in the 64-bit
+DWARF format, this consists of the 4-byte value
+\wffffffff followed by an 8-byte unsigned integer
+that gives the actual length (see 
+Section \refersec{datarep:32bitand64bitdwarfformats}).
+
+\needlines{4}
+\item  \texttt{version} (\addtoindex{uhalf}) \\
+A 2-byte version identifier containing the value
+\versiondotdebugaddr{} 
+(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+
+\needlines{4}
+\item  \texttt{address\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of an address (or the offset portion of an
+address for segmented addressing) on the target
+system.
+
+\needlines{4}
+\item  \texttt{segment\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of a segment selector on the target system.
+\end{enumerate}
+
+This header is followed by a series of segment/address pairs.
+The segment size is given by the \texttt{segment\_size} field of the
+header, and the address size is given by the \texttt{address\_size}
+field of the header. If the \texttt{segment\_size} field in the header
+is zero, the entries consist only of an addresses.
+
+The \DWATaddrbase{} attribute points to the first entry
+following the header. The entries are indexed sequentially
+from this base entry, starting from 0.
+
+\section{Range List Table}
+\label{app:rangelisttable}
+Each set of entries in the range list table contained in the
+\dotdebugranges{} section begins with a header containing:
+\begin{enumerate}[1. ]
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+A 4-byte or 12-byte length containing the length of
+the set of entries for this compilation unit, not
+including the length field itself. In the 32-bit
+DWARF format, this is a 4-byte unsigned integer
+(which must be less than \xfffffffzero); in the 64-bit
+DWARF format, this consists of the 4-byte value
+\wffffffff followed by an 8-byte unsigned integer
+that gives the actual length (see 
+Section \refersec{datarep:32bitand64bitdwarfformats}).
+
+\needlines{4}
+\item  \texttt{version} (\addtoindex{uhalf}) \\
+A 2-byte version identifier containing the value
+\versiondotdebugranges{} 
+(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+
+\needlines{4}
+\item  \texttt{address\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of an address (or the offset portion of an
+address for segmented addressing) on the target
+system.
+
+\needlines{4}
+\item  \texttt{segment\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of a segment selector on the target system.
+\end{enumerate}
+
+This header is followed by a series of range list entries as
+described in Section \refersec{chap:locationlists}.
+The segment size is given by the
+\texttt{segment\_size} field of the header, and the address size is
+given by the \texttt{address\_size} field of the header. If the
+\texttt{segment\_size} field in the header is zero, the segment
+selector is omitted from the range list entries.
+
+The \DWATrangesbase{} attribute points to the first entry
+following the header. The entries are referenced by a byte
+offset relative to this base address.
+
+
+\section{Location List Table}
+\label{datarep:locationlisttable}
+Each set of entries in the location list table contained in the
+\dotdebugloc{} or \dotdebuglocdwo{} sections begins with a header containing:
+\begin{enumerate}[1. ]
+\item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+A 4-byte or 12-byte length containing the length of
+the set of entries for this compilation unit, not
+including the length field itself. In the 32-bit
+DWARF format, this is a 4-byte unsigned integer
+(which must be less than \xfffffffzero); in the 64-bit
+DWARF format, this consists of the 4-byte value
+\wffffffff followed by an 8-byte unsigned integer
+that gives the actual length (see 
+Section \refersec{datarep:32bitand64bitdwarfformats}).
+
+\needlines{4}
+\item  \texttt{version} (\addtoindex{uhalf}) \\
+A 2-byte version identifier containing the value
+\versiondotdebugloc{} 
+(see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
+
+\needlines{4}
+\item  \texttt{address\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of an address (or the offset portion of an
+address for segmented addressing) on the target
+system.
+
+\needlines{4}
+\item  \texttt{segment\_size} (\addtoindex{ubyte}) \\
+A 1-byte unsigned integer containing the size in
+bytes of a segment selector on the target system.
+\end{enumerate}
+
+This header is followed by a series of location list entries as
+described in Section \refersec{chap:locationlists}.
+The segment size is given by the
+\texttt{segment\_size} field of the header, and the address size is
+given by the \texttt{address\_size} field of the header. If the
+\texttt{segment\_size} field in the header is zero, the segment
+selector is omitted from the range list entries.
+
+The entries are referenced by a byte offset relative to the first
+location list following this header.
+
 
 \section{Dependencies and Constraints}
 \label{datarep:dependenciesandconstraints}
 
 \section{Dependencies and Constraints}
 \label{datarep:dependenciesandconstraints}
@@ -2148,44 +2864,51 @@ corresponding compilation unit must be defined
 The debugging information in this format is intended to
 exist 
 \addtoindexx{DWARF section names!list of}
 The debugging information in this format is intended to
 exist 
 \addtoindexx{DWARF section names!list of}
-in 
-the \addtoindex{.debug\_abbrev}, 
-\addtoindex{.debug\_aranges}, 
-\addtoindex{.debug\_frame},
-\addtoindex{.debug\_info}, 
-\addtoindex{.debug\_line}, 
-\addtoindex{.debug\_loc}, 
-\addtoindex{.debug\_macinfo},
-\addtoindex{.debug\_pubnames}, 
-\addtoindex{.debug\_pubtypes}, 
-\addtoindex{.debug\_ranges}, 
-\addtoindex{.debug\_str}
-and 
-\addtoindex{.debug\_types}
+in the
+\dotdebugabbrev{},
+\dotdebugaddr{}, 
+\dotdebugaranges{}, 
+\dotdebugframe{},
+\dotdebuginfo{}, 
+\dotdebugline{}, 
+\dotdebugloc{}, 
+\dotdebugmacro{},
+\dotdebugpubnames{}, 
+\dotdebugpubtypes{}, 
+\dotdebugranges{}, 
+\dotdebugstr{},
+and
+\dotdebugstroffsets{}
 sections of an object file, or equivalent
 separate file or database. The information is not 
 sections of an object file, or equivalent
 separate file or database. The information is not 
-word\dash aligned. Consequently: •
+word\dash aligned. Consequently:
 
 \begin{itemize}
 
 \begin{itemize}
-\item For the 32\dash bit DWARF format and a target architecture with
+\item For the \thirtytwobitdwarfformat{} and a target architecture with
 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
 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.
 
 alignment.
 
-\item For the 32\dash bit DWARF format and a target architecture with
+\item For the \thirtytwobitdwarfformat{} 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
 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.
 
 arbitrary alignment.
 
-\item For the 64\dash bit DWARF format and a target architecture with
+\item For the \sixtyfourbitdwarfformat{} 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
 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
 arbitrary alignment.
 
 \textit{It is expected that this will be required only for very large
@@ -2193,11 +2916,13 @@ arbitrary alignment.
 a mix of 32\dash bit and 64\dash bit code and data within the same
 executable object.}
 
 a mix of 32\dash bit and 64\dash bit code and data within the same
 executable object.}
 
-\item For the 64\dash bit DWARF format and a target architecture with
+\item For the \sixtyfourbitdwarfformat{} 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
 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}
 
 an arbitrary alignment.
 \end{itemize}
 
@@ -2207,42 +2932,48 @@ an arbitrary alignment.
 The sizes of the integers used in the lookup by name, lookup
 by address, line number and call frame information sections
 are given in
 The sizes of the integers used in the lookup by name, lookup
 by address, line number and call frame information sections
 are given in
-Table 41 \refersec{tab:integerrepresentationnames}.
+Table \ref{tab:integerrepresentationnames}.
 
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{c|l}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{c|l}
-  \caption{Integer Representation Names} \label{tab:integerrepresentationnames}\\
-  \hline \\ \bfseries Representation Name&\bfseries Representation \\ \hline
+  \caption{Integer representation names} \label{tab:integerrepresentationnames}\\
+  \hline \bfseries Representation name&\bfseries Representation \\ \hline
 \endfirsthead
 \endfirsthead
-  \bfseries Representation Name&\bfseries Representation\\ \hline
+  \bfseries Representation name&\bfseries Representation\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \hline
 \endlastfoot
 
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
   \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}
 
 
 \end{longtable}
 \end{centering}
 
+\needlines{6}
 \section{Type Signature Computation}
 \label{datarep:typesignaturecomputation}
 
 A type signature is computed only by the DWARF producer;
 \section{Type Signature Computation}
 \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
 it is used by a DWARF consumer to resolve type references to
-the type definitions that are contained in type units.
+the type definitions that are contained in 
+\addtoindexx{type unit}
+type units.
 
 
-The type signature for a type T0 is formed from the MD5
+The type signature for a type T0 is formed from the 
+\MDfive{}\footnote{\livetarg{def:MDfive}{MD5} Message Digest Algorithm, 
+R.L. Rivest, RFC 1321, April 1992}
 hash of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
 hash of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item Start with an empty sequence S and a list V of visited
 types, where V is initialized to a list containing the type
 
 \item Start with an empty sequence S and a list V of visited
 types, where V is initialized to a list containing the type
@@ -2251,72 +2982,92 @@ so that V[1] is T0.
 
 \item If the debugging information entry represents a type that
 is nested inside another type or a namespace, append to S
 
 \item If the debugging information entry represents a type that
 is nested inside another type or a namespace, append to S
-the types context as follows: For each surrounding type
+the type\textquoteright s context as follows: For each surrounding type
 or namespace, beginning with the outermost such construct,
 append the letter 'C', the DWARF tag of the construct, and
 or namespace, beginning with the outermost such construct,
 append the letter 'C', the DWARF tag of the construct, and
-the name (taken from the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
+the name (taken from 
+\addtoindexx{name attribute}
+the \DWATname{} attribute) of the type
+\addtoindexx{name attribute}
 or namespace (including its trailing null byte).
 
 \item  Append to S the letter 'D', followed by the DWARF tag of
 the debugging information entry.
 
 or namespace (including its trailing null byte).
 
 \item  Append to S the letter 'D', followed by the DWARF tag of
 the debugging information entry.
 
-\item For each of the following attributes that are present in
-the debugging information entry, in the order listed below,
+\item For each of the attributes in
+Table \refersec{tab:attributesusedintypesignaturecomputation}
+that are present in
+the debugging information entry, in the order listed,
 append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
 
 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{table}[ht]
+\caption{Attributes used in type signature computation}
+\label{tab:attributesusedintypesignaturecomputation}
+\simplerule[\textwidth]
+\begin{center}
+\autocols[0pt]{c}{2}{l}{
+\DWATname,
+\DWATaccessibility,
+\DWATaddressclass,
+\DWATallocated,
+\DWATartificial,
+\DWATassociated,
+\DWATbinaryscale,
+\DWATbitoffset,
+\DWATbitsize,
+\DWATbitstride,
+\DWATbytesize,
+\DWATbytestride,
+\DWATconstexpr,
+\DWATconstvalue,
+\DWATcontainingtype,
+\DWATcount,
+\DWATdatabitoffset,
+\DWATdatalocation,
+\DWATdatamemberlocation,
+\DWATdecimalscale,
+\DWATdecimalsign,
+\DWATdefaultvalue,
+\DWATdigitcount,
+\DWATdiscr,
+\DWATdiscrlist,
+\DWATdiscrvalue,
+\DWATencoding,
+\DWATenumclass,
+\DWATendianity,
+\DWATexplicit,
+\DWATisoptional,
+\DWATlocation,
+\DWATlowerbound,
+\DWATmutable,
+\DWATordering,
+\DWATpicturestring,
+\DWATprototyped,
+\DWATrank,
+\DWATreference,
+\DWATrvaluereference,
+\DWATsmall,
+\DWATsegment,
+\DWATstringlength,
+\DWATstringlengthbitsize,
+\DWATstringlengthbytesize,
+\DWATthreadsscaled,
+\DWATupperbound,
+\DWATuselocation,
+\DWATuseUTFeight,
+\DWATvariableparameter,
+\DWATvirtuality,
+\DWATvisibility,
+\DWATvtableelemlocation
+}
+\end{center}
+\simplerule[\textwidth]
+\end{table}
 
 
-Note that except for the initial \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
+Note that except for the initial 
+\DWATname{} attribute,
+\addtoindexx{name attribute}
 attributes are appended in order according to the alphabetical
 spelling of their identifier.
 
 attributes are appended in order according to the alphabetical
 spelling of their identifier.
 
@@ -2327,8 +3078,8 @@ in their own alphabetical suborder.
 
 An attribute that refers to another type entry T is processed
 as follows: (a) If T is in the list V at some V[x], use the
 
 An attribute that refers to another type entry T is processed
 as follows: (a) If T is in the list V at some V[x], use the
-letter 'R' as the marker and use the unsigned LEB128 encoding
-of x as the attribute value; otherwise, (b) use the letter 'T'
+letter 'R' as the marker and use the unsigned LEB128\addtoindexx{LEB128!unsigned}
+encoding of x as the attribute value; otherwise, (b) use the letter 'T'
 as the marker, process the type T recursively by performing
 Steps 2 through 7, and use the result as the attribute value.
 
 as the marker, process the type T recursively by performing
 Steps 2 through 7, and use the result as the attribute value.
 
@@ -2337,44 +3088,48 @@ the value consists of the form code (encoded as an unsigned
 LEB128 value) followed by the encoding of the value according
 to the form code. To ensure reproducibility of the signature,
 the set of forms used in the signature computation is limited
 LEB128 value) followed by the encoding of the value according
 to the form code. To ensure reproducibility of the signature,
 the set of forms used in the signature computation is limited
-to the following: \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}, 
-\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}, 
-\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string},
-and \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}.
-
-\item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
-\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}, 
-\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
-\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, 
-or \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, and the referenced
-type (via the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) has a
-\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to S the letter 'N', the DWARF
-attribute code (\livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}), the context of
+to the following: 
+\DWFORMsdata, 
+\DWFORMflag, 
+\DWFORMstring,
+\DWFORMexprloc,
+and \DWFORMblock.
+
+\item If the tag in Step 3 is one of \DWTAGpointertype,
+\DWTAGreferencetype, 
+\DWTAGrvaluereferencetype,
+\DWTAGptrtomembertype, 
+or \DWTAGfriend, and the referenced
+type (via the \DWATtype{} or 
+\DWATfriend{} attribute) has a
+\DWATname{} attribute, append to S the letter 'N', the DWARF
+attribute code (\DWATtype{} or 
+\DWATfriend), the context of
 the type (according to the method in Step 2), the letter 'E',
 the type (according to the method in Step 2), the letter 'E',
-and the name of the type. For \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, if the referenced
-entry is a \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}, the context is omitted and the
+and the name of the type. For \DWTAGfriend, if the referenced
+entry is a \DWTAGsubprogram, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
 name to be used is the ABI-specific name of the subprogram
-(e.g., the mangled linker name).
-
-
-\item 6.If the tag in Step 3 is not one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
-\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
-\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
-\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, or 
-\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, but has
-a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, or if the referenced type (via
-the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
-\livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) does not have a
-\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, the attribute is processed according to
+(for example, the mangled linker name).
+
+
+\item If the tag in Step 3 is not one of \DWTAGpointertype,
+\DWTAGreferencetype
+\DWTAGrvaluereferencetype,
+\DWTAGptrtomembertype, or 
+\DWTAGfriend, but has
+a \DWATtype{} attribute, or if the referenced type (via
+the \DWATtype{} or 
+\DWATfriend{} attribute) does not have a
+\DWATname{} attribute, the attribute is processed according to
 the method in Step 4 for an attribute that refers to another
 type entry.
 
 
 \item Visit each child C of the debugging information
 entry as follows: If C is a nested type entry or a member
 the method in Step 4 for an attribute that refers to another
 type entry.
 
 
 \item Visit each child C of the debugging information
 entry as follows: If C is a nested type entry or a member
-function entry, and has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
+function entry, and has 
+a \DWATname{} attribute, append to
+\addtoindexx{name attribute}
 S the letter 'S', the tag of C, and its name; otherwise,
 process C recursively by performing Steps 3 through 7,
 appending the result to S. Following the last child (or if
 S the letter 'S', the tag of C, and its name; otherwise,
 process C recursively by performing Steps 3 through 7,
 appending the result to S. Following the last child (or if
@@ -2385,10 +3140,10 @@ there are no children), append a zero byte.
 
 For the purposes of this algorithm, if a debugging information
 entry S has a 
 
 For the purposes of this algorithm, if a debugging information
 entry S has a 
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification
+\DWATspecification{
 attribute that refers to
 another entry D (which has a 
 attribute that refers to
 another entry D (which has a 
-\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration
+\DWATdeclaration{
 attribute),
 then S inherits the attributes and children of D, and S is
 processed as if those attributes and children were present in
 attribute),
 then S inherits the attributes and children of D, and S is
 processed as if those attributes and children were present in
@@ -2397,8 +3152,8 @@ both S and D, the attribute in S is used and the corresponding
 one in D is ignored.
 
 DWARF tag and attribute codes are appended to the sequence
 one in D is ignored.
 
 DWARF tag and attribute codes are appended to the sequence
-as unsigned LEB128 values, using the values defined earlier
-in this chapter.
+as unsigned LEB128\addtoindexx{LEB128!unsigned} values, 
+using the values defined earlier in this chapter.
 
 \textit{A grammar describing this computation may be found in
 Appendix \refersec{app:typesignaturecomputationgrammar}.
 
 \textit{A grammar describing this computation may be found in
 Appendix \refersec{app:typesignaturecomputationgrammar}.
@@ -2409,17 +3164,20 @@ 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
 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
 
 \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
 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}.}
 
 
+\needlines{4}
 Where the DWARF producer may reasonably choose two or more
 different forms for a given attribute, it should choose
 the simplest possible form in computing the signature. (For
 Where the DWARF producer may reasonably choose two or more
 different forms for a given attribute, it should choose
 the simplest possible form in computing the signature. (For
@@ -2427,26 +3185,27 @@ example, a constant value should be preferred to a location
 expression when possible.)
 
 Once the string S has been formed from the DWARF encoding,
 expression when possible.)
 
 Once the string S has been formed from the DWARF encoding,
-an MD5 hash is computed for the string and the lower 64 bits
-are taken as the type signature.
+an \MDfive{} hash is computed for the string and the 
+least significant 64 bits are taken as the type signature.
 
 \textit{The string S is intended to be a flattened representation of
 
 \textit{The string S is intended to be a flattened representation of
-the type that uniquely identifies that type (i.e., a different
+the type that uniquely identifies that type (that is, a different
 type is highly unlikely to produce the same string).}
 
 \textit{A debugging information entry should not be placed in a
 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}
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
 
 \begin{itemize}
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
-another debugging information entry (e.g., a \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}
+another debugging information entry (for example, a \DWOPcallref{}
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
 \item \textit{The entry has an attribute whose value refers
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
 \item \textit{The entry has an attribute whose value refers
-to a code location or a location list.}
+to a code location or a \addtoindex{location list}.}
 
 \item \textit{The entry has an attribute whose value refers
 to another debugging information entry that does not represent
 
 \item \textit{The entry has an attribute whose value refers
 to another debugging information entry that does not represent
@@ -2454,22 +3213,48 @@ a type.}
 \end{itemize}
 
 
 \end{itemize}
 
 
+\needlines{4}
 \textit{Certain attributes are not included in the type signature:}
 
 \begin{itemize}
 \textit{Certain attributes are not included in the type signature:}
 
 \begin{itemize}
-\item \textit{The \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute is not included because it
+\item \textit{The \DWATdeclaration{} attribute is not included because it
 indicates that the debugging information entry represents an
 incomplete declaration, and incomplete declarations should
 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
+\item \textit{The \DWATdescription{} attribute is not included because
 it does not provide any information unique to the defining
 declaration of the type.}
 
 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
-\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attributes are not included because they
+\item \textit{The \DWATdeclfile, 
+\DWATdeclline, and
+\DWATdeclcolumn{} 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
 may vary from one source file to the next, and would prevent
 two otherwise identical type declarations from producing the
-same hash.}
+same \MDfive{} hash.}
+
+\item \textit{The \DWATobjectpointer{} attribute is not included 
+because the information it provides is not necessary for the 
+computation of a unique type signature.}
 
 \end{itemize}
 
 \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 \MDfive{} hash may be found in 
+Appendix \refersec{app:usingtypeunits}.
+