Bring up to date with approved issues as of April 2014.
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index 10c4733..9306573 100644 (file)
@@ -23,19 +23,18 @@ The labels denoting the beginning and end of the reserved
 \hypertarget{chap:DWXXXlohiuser}{}
 value range for vendor specific extensions consist of the
 appropriate prefix 
-(\DWTAGlouserMARK\DWTAGhiuserMARK{}    DW\_TAG, 
-\DWATlouserMARK\DWAThiuserMARK{}       DW\_AT,
-\DWENDlouserMARK\DWENDhiuserMARK{}     DW\_END, 
-\DWATElouserMARK\DWATEhiuserMARK{}     DW\_ATE, 
-\DWOPlouserMARK\DWOPhiuserMARK{}       DW\_OP, 
-\DWLANGlouserMARK\DWLANGhiuserMARK{}DW\_LANG, 
-\DWLNElouserMARK\DWLNEhiuserMARK{}     DW\_LNE, 
-\DWCClouserMARK\DWCChiuserMARK{}       DW\_CC or 
-\DWCFAlouserMARK\DWCFAhiuserMARK{}     DW\_CFA 
+(\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. 
-\textit{For example, for entry tags, the special
-labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
 Values in the  range between \textit{prefix}\_lo\_user 
 and \textit{prefix}\_hi\_user inclusive,
 are reserved for vendor specific extensions. Vendors may
@@ -43,6 +42,9 @@ 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
@@ -108,7 +110,6 @@ of those DWARF sections that
 have a header
 (\dotdebugaranges{}, 
 \dotdebuginfo{}, 
-\dotdebugtypes{}, 
 \dotdebugline{},
 \dotdebugpubnames{}, and 
 \dotdebugpubtypes{}) or the length field
@@ -126,29 +127,11 @@ the other values is reserved for possible future extensions.
 
 
 
-\section{Relocatable, Executable, Shared and Split Objects} 
+\section{Relocatable, Split, Executable and Shared Objects} 
 \label{datarep:executableobjectsandsharedobjects}
 
 \subsection{Relocatable Objects}
 
-\subsection{Executable Objects}
-\label{chap:executableobjects}
-The relocated addresses in the debugging information for an
-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.
-
-\textit{This requirement makes the debugging information for
-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\textquoteright s data structures.}
-
 \subsection{Split DWARF Objects}
 \label{datarep:splitdwarfobjects}
 A DWARF producer may partition the debugging
@@ -195,7 +178,7 @@ 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
-(i.e., not combined and copied to the executable object), or
+(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}
@@ -208,7 +191,7 @@ and location expressions may do so using the \DWOPaddrx{} and
 entries with an offset relative to a base offset in the
 range table for the compilation unit.
 
-\item Separate type units, in the \dotdebugtypesdwo{} section.
+\item Separate type units, in the \dotdebuginfodwo{} section.
 
 \item
 Abbreviations table(s) for the compilation unit and type
@@ -221,7 +204,7 @@ A skeleton line table (for the type units), in the
 \dotdebuglinedwo{} section (see 
 Section \refersec{chap:skeletoncompilationunitentries}).
 
-\item Macro information, in the \dotdebugmacinfodwo{} section.
+\item Macro information, in the \dotdebugmacrodwo{} section.
 
 \item A string table, in the \dotdebugstrdwo{} section.
 
@@ -234,7 +217,26 @@ 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
+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.
+
+\textit{This requirement makes the debugging information for
+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\textquoteright s data structures.}
+
 
+\needlines{6}
 \section{32-Bit and 64-Bit DWARF Formats}
 \label{datarep:32bitand64bitdwarfformats}
 \hypertarget{datarep:xxbitdwffmt}{}
@@ -309,9 +311,6 @@ Section &Name & Role  \\ \hline
 \dotdebugpubtypes{} & \addtoindex{debug\_info\_offset} & offset in \dotdebuginfo{} \\
                 & \addtoindex{debug\_info\_length} & length of \dotdebuginfo{} \\
                 &                   & contribution \\
-\dotdebugtypes{} & \addtoindex{debug\_abbrev\_offset} & offset in \dotdebugabbrev{} \\
-                & \addtoindex{type\_offset} & offset in \dotdebugtypes{} \\
-
 \end{tabular}
 \end{center}
 
@@ -321,7 +320,7 @@ union must be accessed to distinguish whether a CIE or FDE is
 present, consequently, these two fields must exactly overlay
 each other (both offset and size).
 
-\item Within the body of the \dotdebuginfo{} or \dotdebugtypes{}
+\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
@@ -346,6 +345,17 @@ 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}
 
 
@@ -391,8 +401,9 @@ single \DWTAGcompileunit{} or
 \DWTAGpartialunit{} debugging
 information entry, together with its children.
 
-For each type defined in a compilation unit, a contribution may
-be made to the \dotdebugtypes{} 
+For each type defined in a compilation unit, a separate
+contribution may also be made to the 
+\dotdebuginfo{} 
 section of the object file. Each
 such contribution consists of a 
 \addtoindex{type unit} header 
@@ -408,16 +419,40 @@ 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
-\dotdebuginfo{} or 
-\dotdebugtypes{} 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.
+
 \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}
@@ -437,13 +472,23 @@ 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}).
 
-\needlines{4}
 \item  \texttt{version} (\addtoindex{uhalf}) \\
 A 2\dash byte unsigned integer representing the version of the
 DWARF information for the compilation unit \addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
-The value in this field is 4.
+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.}
 
+\needlines{4}
 \item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
 A 
 \addtoindexx{section offset!in .debug\_info header}
@@ -472,7 +517,7 @@ offset portion of an address.
 The header for the series of debugging information entries
 contributing to the description of a type that has been
 placed in its own \addtoindex{type unit}, within the 
-\dotdebugtypes{} section,
+\dotdebuginfo{} section,
 consists of the following information:
 \begin{enumerate}[1. ]
 
@@ -481,7 +526,7 @@ consists of the following information:
 A 4\dash byte or 12\dash byte unsigned integer 
 \addtoindexx{initial length}
 representing the length
-of the \dotdebugtypes{} contribution for that type unit,
+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
@@ -495,8 +540,16 @@ A 2\dash byte unsigned integer representing the version of the
 DWARF information for the 
 type unit\addtoindexx{version number!type unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
-The value in this field is 4.
+The value in this field is \versiondotdebuginfo.
+
+\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}
@@ -508,6 +561,7 @@ 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}).
 
+\needlines{4}
 \item \texttt{address\_size} (ubyte) \\
 A 1\dash byte unsigned integer representing the size 
 \addtoindexx{size of an address}
@@ -553,7 +607,8 @@ this is an 8\dash byte unsigned length
 \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
@@ -579,14 +634,14 @@ 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
-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 
-\dotdebuginfo{} or
-\dotdebugtypes{}
+\dotdebuginfo{}
 section. As described above, the abbreviation
 code 0 is reserved for null debugging information entries. The
-abbreviation code is followed by another unsigned LEB128
+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}.
@@ -602,7 +657,7 @@ Table \refersec{tab:tagencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 \DWTAGarraytype{} &0x01 \\
 \DWTAGclasstype&0x02 \\
@@ -661,11 +716,15 @@ Table \refersec{tab:tagencodings}.
 \DWTAGimportedunit&0x3d      \\
 \DWTAGcondition&\xiiif      \\
 \DWTAGsharedtype&0x40      \\
-\DWTAGtypeunit{} &0x41      \\
-\DWTAGrvaluereferencetype{} &0x42      \\
-\DWTAGtemplatealias{} &0x43      \\
-\DWTAGcoarraytype &0x44 \\
-\DWTAGgenericsubrange &0x45 \\
+\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}
@@ -712,17 +771,19 @@ each chain of sibling entries is terminated by a null entry.)
 \needlines{4}
 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\textquoteright s name. The second part
-is an unsigned LEB128 number representing the attribute\textquoteright 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 
 \DWFORMindirectTARG{} is a special case. For
 attributes with this form, the attribute value itself in the
-\dotdebuginfo{} or 
-\dotdebugtypes{}
+\dotdebuginfo{}
 section begins with an unsigned
 LEB128 number that represents its form. This allows producers
 to choose forms for particular attributes 
@@ -791,6 +852,7 @@ The new
 \DWFORMsecoffset{} replaces
 their usage for the other classes.}
 
+\needlines{4}
 Each possible form belongs to one or more of the following classes:
 
 \begin{itemize}
@@ -806,14 +868,31 @@ The size is encoded in the compilation unit header
 This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object.
 
-\item As an indirect index into a table of addresses (as 
+\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}{}
@@ -835,7 +914,8 @@ information bytes (\DWFORMblockfourTARG).
 \end{myindentpara}
 
 \begin{myindentpara}{1cm}
-An unsigned LEB128 length followed by the number of bytes
+An unsigned LEB128\addtoindexx{LEB128!unsigned}
+length followed by the number of bytes
 specified by the length (\DWFORMblockTARG).
 \end{myindentpara}
 
@@ -859,6 +939,7 @@ signed (\DWFORMsdataTARG) and unsigned
 (\DWFORMudataTARG) variable
 length constants are available
 
+\needlines{4}
 The data in \DWFORMdataone, 
 \DWFORMdatatwo, 
 \DWFORMdatafour{} and
@@ -883,7 +964,7 @@ unsigned integers respectively, rather than
 \needlines{4}
 \item \livelinki{chap:classexprloc}{exprloc}{exprloc class} \\
 \livetarg{datarep:classexprloc}{}
-This is an unsigned LEB128 length followed by the
+This is an unsigned LEB128\addtoindexx{LEB128!unsigned} length followed by the
 number of information bytes specified by the length
 (\DWFORMexprlocTARG). 
 The information bytes contain a DWARF expression 
@@ -909,7 +990,7 @@ no value is encoded in the debugging information entry itself.
 This is an offset into 
 \addtoindexx{section offset!in class lineptr value}
 the 
-\dotdebugline{} section
+\dotdebugline{} or \dotdebuglinedwo{} section
 (\DWFORMsecoffset).
 It consists of an offset from the beginning of the 
 \dotdebugline{}
@@ -948,13 +1029,12 @@ in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 This is an 
 \addtoindexx{section offset!in class macptr value}
 offset into the 
-\dotdebugmacinfo{} section
+\dotdebugmacro{} or \dotdebugmacrodwo{} section
 (\DWFORMsecoffset). 
-It consists of an offset from the
-beginning of the \dotdebugmacinfo{} 
-section to the first byte of
-the data making up the macro information list for the compilation
-unit. 
+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
 relocated in an executable or shared object. In the 
 \thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
@@ -1012,7 +1092,8 @@ length forms for one, two, four and eight byte offsets
 \DWFORMreffourTARG,
 and \DWFORMrefeightTARG). 
 There is also an unsigned variable
-length offset encoded form that uses unsigned LEB128 numbers
+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
@@ -1103,7 +1184,7 @@ Any combination of these three forms may be used within a single compilation.
 
 If the \DWATuseUTFeight{}
 \addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
-compilation, partial or type unit entry, string values are encoded using 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.
@@ -1117,6 +1198,21 @@ information about the characters and their use.}
 of strings; for compatibility, this version also does
 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}
 
 In no case does an attribute use 
@@ -1151,213 +1247,297 @@ Table \refersec{tab:attributeformencodings}.
   \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 \DWATsibling&0x01&\livelink{chap:classreference}{reference} 
-        \addtoindexx{sibling attribute!encoding} \\
+            \addtoindexx{sibling attribute!encoding} \\
 \DWATlocation&0x02&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr}\addtoindexx{location attribute!encoding}   \\
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{location attribute!encoding}   \\
 \DWATname&0x03&\livelink{chap:classstring}{string} 
-        \addtoindexx{name attribute!encoding} \\
+            \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} \\
+            \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}  \\
+        \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} \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}   
+            \addtoindexx{bit size attribute!encoding} \\
 \DWATstmtlist&0x10&\livelink{chap:classlineptr}{lineptr} 
-        \addtoindexx{statement list attribute!encoding} \\
+            \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}  \\
+            \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}  \\
+            \addtoindexx{language attribute!encoding}  \\
 \DWATdiscr&0x15&\livelink{chap:classreference}{reference} 
-        \addtoindexx{discriminant attribute!encoding}  \\
+            \addtoindexx{discriminant attribute!encoding}  \\
 \DWATdiscrvalue&0x16&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{discriminant value attribute!encoding}  \\
+            \addtoindexx{discriminant value attribute!encoding}  \\
 \DWATvisibility&0x17&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{visibility attribute!encoding} \\
+            \addtoindexx{visibility attribute!encoding} \\
 \DWATimport&0x18&\livelink{chap:classreference}{reference} 
-        \addtoindexx{import attribute!encoding}  \\
+            \addtoindexx{import attribute!encoding}  \\
 \DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{string length attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{string length attribute!encoding}  \\
 \DWATcommonreference&0x1a&\livelink{chap:classreference}{reference} 
-        \addtoindexx{common reference attribute!encoding}  \\
+            \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} \\
+            \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:classreference}{reference}, \livelink{chap:classflag}{flag} 
-        \addtoindexx{default value attribute!encoding} \\
+            \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}  \\
+            \addtoindexx{inline attribute!encoding}  \\
 \DWATisoptional&0x21&\livelink{chap:classflag}{flag} 
-        \addtoindexx{is optional attribute!encoding} \\
+            \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}  \\
+        \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}  \\
-% FIXME: lower case , not Constant
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{return address attribute!encoding}  \\
 \DWATstartscope&0x2c&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classrangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding}  \\
+        \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}  \\
+        \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}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{upper bound attribute!encoding}  \\
 \DWATabstractorigin&0x31&\livelink{chap:classreference}{reference} 
-        \addtoindexx{abstract origin attribute!encoding}  \\
+            \addtoindexx{abstract origin attribute!encoding}  \\
 \DWATaccessibility&0x32&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{accessibility attribute!encoding}  \\
+            \addtoindexx{accessibility attribute!encoding}  \\
 \DWATaddressclass&0x33&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{address class attribute!encoding}  \\
+            \addtoindexx{address class attribute!encoding}  \\
 \DWATartificial&0x34&\livelink{chap:classflag}{flag} 
-        \addtoindexx{artificial attribute!encoding}  \\
+            \addtoindexx{artificial attribute!encoding}  \\
 \DWATbasetypes&0x35&\livelink{chap:classreference}{reference} 
-        \addtoindexx{base types attribute!encoding}  \\
+            \addtoindexx{base types attribute!encoding}  \\
 \DWATcallingconvention&0x36&\livelink{chap:classconstant}{constant} 
         \addtoindexx{calling convention attribute!encoding} \\
-\DWATcount&0x37&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} 
-        \addtoindexx{count attribute!encoding}  \\
+\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}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{data member attribute!encoding}  \\
 \DWATdeclcolumn&0x39&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration column attribute!encoding}  \\
+            \addtoindexx{declaration column attribute!encoding}  \\
 \DWATdeclfile&0x3a&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration file attribute!encoding}  \\
+            \addtoindexx{declaration file attribute!encoding}  \\
 \DWATdeclline&0x3b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration line attribute!encoding}  \\
+            \addtoindexx{declaration line attribute!encoding}  \\
 \DWATdeclaration&0x3c&\livelink{chap:classflag}{flag} 
-        \addtoindexx{declaration attribute!encoding}  \\
+            \addtoindexx{declaration attribute!encoding}  \\
 \DWATdiscrlist&0x3d&\livelink{chap:classblock}{block} 
-        \addtoindexx{discriminant list attribute!encoding}  \\
+            \addtoindexx{discriminant list attribute!encoding}  \\
 \DWATencoding&0x3e&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{encoding attribute!encoding}  \\
+            \addtoindexx{encoding attribute!encoding}  \\
 \DWATexternal&\xiiif&\livelink{chap:classflag}{flag} 
-        \addtoindexx{external attribute!encoding}  \\
+            \addtoindexx{external attribute!encoding}  \\
 \DWATframebase&0x40&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{frame base attribute!encoding}  \\
 \DWATfriend&0x41&\livelink{chap:classreference}{reference} 
-        \addtoindexx{friend attribute!encoding}  \\
+            \addtoindexx{friend attribute!encoding}  \\
 \DWATidentifiercase&0x42&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{identifier case attribute!encoding}  \\
-\DWATmacroinfo&0x43&\livelink{chap:classmacptr}{macptr} 
-        \addtoindexx{macro information attribute!encoding}  \\
+            \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}  \\
+            \addtoindexx{name list item attribute!encoding}  \\
 \DWATpriority&0x45&\livelink{chap:classreference}{reference} 
-        \addtoindexx{priority attribute!encoding}  \\
+            \addtoindexx{priority attribute!encoding}  \\
 \DWATsegment&0x46&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{segment attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{segment attribute!encoding}  \\
 \DWATspecification&0x47&\livelink{chap:classreference}{reference} 
         \addtoindexx{specification attribute!encoding}  \\
 \DWATstaticlink&0x48&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{static link attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{static link attribute!encoding}  \\
 \DWATtype&0x49&\livelink{chap:classreference}{reference} 
-        \addtoindexx{type attribute!encoding}  \\
+            \addtoindexx{type attribute!encoding}  \\
 \DWATuselocation&0x4a&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{location list attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{location list attribute!encoding}  \\
 \DWATvariableparameter&0x4b&\livelink{chap:classflag}{flag} 
-        \addtoindexx{variable parameter attribute!encoding}  \\
+            \addtoindexx{variable parameter attribute!encoding}  \\
 \DWATvirtuality&0x4c&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{virtuality attribute!encoding}  \\
+            \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}  \\
+        \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}  \\
-\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}  \\
+\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}  \\
+            \addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8}  \\
 \DWATextension&0x54&\livelink{chap:classreference}{reference} 
-        \addtoindexx{extension attribute!encoding}  \\
+            \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}  \\
+            \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}  \\
+            \addtoindexx{call column attribute!encoding}  \\
 \DWATcallfile&0x58&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{call file attribute!encoding}  \\
+            \addtoindexx{call file attribute!encoding}  \\
 \DWATcallline&0x59&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{call line attribute!encoding}  \\
+            \addtoindexx{call line attribute!encoding}  \\
 \DWATdescription&0x5a&\livelink{chap:classstring}{string} 
-        \addtoindexx{description attribute!encoding}  \\
+            \addtoindexx{description attribute!encoding}  \\
 \DWATbinaryscale&0x5b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{binary scale attribute!encoding}  \\
+            \addtoindexx{binary scale attribute!encoding}  \\
 \DWATdecimalscale&0x5c&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{decimal scale attribute!encoding}  \\
+            \addtoindexx{decimal scale attribute!encoding}  \\
 \DWATsmall{} &0x5d&\livelink{chap:classreference}{reference} 
-        \addtoindexx{small attribute!encoding}  \\
+            \addtoindexx{small attribute!encoding}  \\
 \DWATdecimalsign&0x5e&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{decimal scale attribute!encoding}  \\
+            \addtoindexx{decimal scale attribute!encoding}  \\
 \DWATdigitcount&0x5f&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{digit count attribute!encoding}  \\
+            \addtoindexx{digit count attribute!encoding}  \\
 \DWATpicturestring&0x60&\livelink{chap:classstring}{string} 
-        \addtoindexx{picture string attribute!encoding}  \\
+            \addtoindexx{picture string attribute!encoding}  \\
 \DWATmutable&0x61&\livelink{chap:classflag}{flag} 
-        \addtoindexx{mutable attribute!encoding}  \\
+            \addtoindexx{mutable attribute!encoding}  \\
 \DWATthreadsscaled&0x62&\livelink{chap:classflag}{flag} 
-        \addtoindexx{thread scaled attribute!encoding}  \\
+            \addtoindexx{thread scaled attribute!encoding}  \\
 \DWATexplicit&0x63&\livelink{chap:classflag}{flag} 
-        \addtoindexx{explicit attribute!encoding}  \\
+            \addtoindexx{explicit attribute!encoding}  \\
 \DWATobjectpointer&0x64&\livelink{chap:classreference}{reference} 
-        \addtoindexx{object pointer attribute!encoding}  \\
+            \addtoindexx{object pointer attribute!encoding}  \\
 \DWATendianity&0x65&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{endianity attribute!encoding}  \\
+            \addtoindexx{endianity attribute!encoding}  \\
 \DWATelemental&0x66&\livelink{chap:classflag}{flag} 
-        \addtoindexx{elemental attribute!encoding}  \\
+            \addtoindexx{elemental attribute!encoding}  \\
 \DWATpure&0x67&\livelink{chap:classflag}{flag} 
-        \addtoindexx{pure attribute!encoding}  \\
+            \addtoindexx{pure attribute!encoding}  \\
 \DWATrecursive&0x68&\livelink{chap:classflag}{flag} 
-        \addtoindexx{recursive attribute!encoding}  \\
+            \addtoindexx{recursive attribute!encoding}  \\
 \DWATsignature{} &0x69&\livelink{chap:classreference}{reference} 
-        \addtoindexx{signature attribute!encoding}  \\ 
+            \addtoindexx{signature attribute!encoding}  \\ 
 \DWATmainsubprogram{} &0x6a&\livelink{chap:classflag}{flag} 
-        \addtoindexx{main subprogram attribute!encoding}  \\
+            \addtoindexx{main subprogram attribute!encoding}  \\
 \DWATdatabitoffset{} &0x6b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{data bit offset attribute!encoding}  \\
+            \addtoindexx{data bit offset attribute!encoding}  \\
 \DWATconstexpr{} &0x6c&\livelink{chap:classflag}{flag} 
-        \addtoindexx{constant expression attribute!encoding}  \\
+            \addtoindexx{constant expression attribute!encoding}  \\
 \DWATenumclass{} &0x6d&\livelink{chap:classflag}{flag} 
-        \addtoindexx{enumeration class attribute!encoding}  \\
+            \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}  \\
+            \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:DWATrank}{constant, exprloc}\addtoindexx{rank attribute!encoding}  \\
+        \livelink{chap:classconstant}{constant},
+        \livelink{chap:classexprloc}{exprloc}
+            \addtoindexx{rank attribute!encoding}  \\
 \DWATstroffsetsbase~\ddag&0x72&
-               \livelink{chap:classstring}{reference}\addtoindexx{string offsets base!encoding}        \\
+               \livelinki{chap:classstring}{stroffsetsptr}{stroffsetsptr class}
+            \addtoindexx{string offsets base!encoding} \\
 \DWATaddrbase~\ddag &0x73&
-               \livelink{chap:DWATaddrbase}{reference}\addtoindexx{address table base!encoding} \\
+               \livelinki{chap:DWATaddrbase}{addrptr}{addrptr class}
+            \addtoindexx{address table base!encoding} \\
 \DWATrangesbase~\ddag&0x74&
-               \livelink{chap:DWATrangesbase}{reference}\addtoindexx{ranges base!encoding} \\
+               \livelinki{chap:DWATrangesbase}{rangelistptr}{rangelistptr class}
+            \addtoindexx{ranges base!encoding} \\
 \DWATdwoid~\ddag &0x75&
-               \livelink{chap:DWATdwoid}{constant}\addtoindexx{split DWARF object id!encoding} \\
+               \livelink{chap:DWATdwoid}{constant}
+            \addtoindexx{split DWARF object id!encoding} \\
 \DWATdwoname~\ddag &0x76&
-               \livelink{chap:DWATdwname}{string}\addtoindexx{split DWARF object file name!encooding} \\
+               \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}
 
-
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
@@ -1368,9 +1548,9 @@ Table \refersec{tab:attributeformencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
-
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
+
 \DWFORMaddr &0x01&\livelink{chap:classaddress}{address}  \\
 \textit{Reserved} &0x02& \\
 \DWFORMblocktwo &0x03&\livelink{chap:classblock}{block} \\
@@ -1396,10 +1576,10 @@ Table \refersec{tab:attributeformencodings}.
 \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 &0x1a&\livelink{chap:classstring}{string} \\
-\DWFORMaddrx &0x1b&\livelink{chap:classaddess}{address} \\
+\DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\
+\DWFORMaddrx{} \ddag &0x1b&\livelink{chap:classaddress}{address} \\
 \DWFORMrefsigeight &0x20&\livelink{chap:classreference}{reference} \\
+
 \end{longtable}
 \end{centering}
 
@@ -1425,7 +1605,7 @@ avoids using space to represent the \doublequote{big} end of an
 unsigned integer, when the big end is all zeroes or sign
 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
@@ -1440,7 +1620,8 @@ The integer zero is a special case, consisting of a single
 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.
 
@@ -1458,9 +1639,9 @@ 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}
-gives some examples of unsigned LEB128 numbers and 
-Table \refersec{tab:examplesofsignedleb128encodings}
-gives some examples of signed LEB128 
+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} 
@@ -1473,7 +1654,7 @@ gives algorithms for encoding and decoding these forms.}
 \begin{longtable}{l|l|l}
   \caption{Examples of unsigned LEB128 encodings}
   \label{tab:examplesofunsignedleb128encodings} 
-  \addtoindexx{LEB128 encoding!examples} \\
+  \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
@@ -1496,7 +1677,9 @@ gives algorithms for encoding and decoding these forms.}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
-  \caption{Examples of signed LEB128 encodings} \label{tab:examplesofsignedleb128encodings} \\
+  \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
@@ -1545,7 +1728,7 @@ Table \refersec{tab:dwarfoperationencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 
 \DWOPaddr&0x03&1 & constant address  \\ 
@@ -1630,10 +1813,12 @@ Table \refersec{tab:dwarfoperationencodings}.
 \DWOPimplicitvalue{} &0x9e &2&ULEB128 size, \\*
                    &&&\nolink{block} of that size\\
 \DWOPstackvalue{} &0x9f &0& \\
-\DWOPimplicitpointer{} &0xa0& 2 &4- or 8-byte offset of DIE, \\*
+\DWOPimplicitpointer{}~\ddag &0xa0& 2 &4- or 8-byte offset of DIE, \\*
                               &&&SLEB128 constant offset \\
-\DWOPaddrx&0xa1&1&ULEB128 indirect address \\
-\DWOPconstx&0xa2&1&ULEB128 indirect constant   \\
+\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 && \\
 
@@ -1655,6 +1840,8 @@ a base address selection entry, or an
 \addtoindexx{end of list entry!in location list}
 end of list entry.
 
+\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
@@ -1673,6 +1860,32 @@ For a \addtoindex{location list} to be specified, the base address of
 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}
 
@@ -1813,7 +2026,7 @@ Table \refersec{tab:visibilityencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Visibility encodings} \label{tab:visibilityencodings}\\
-  \hline \bfseries Visiibility code name&\bfseries Value \\ \hline
+  \hline \bfseries Visibility code name&\bfseries Value \\ \hline
 \endfirsthead
   \bfseries Visibility code name&\bfseries Value\\ \hline
 \endhead
@@ -1900,34 +2113,37 @@ defined language.
   \hline
   \dag \ \textit{See text} \\ \ddag \ \textit{New in \addtoindex{DWARF Version 5}}
 \endlastfoot
-
-\DWLANGCeightynine &0x0001 &0       \\
-\DWLANGC{} &0x0002 &0  \\
-\DWLANGAdaeightythree{} \dag &0x0003 &1  \addtoindexx{Ada}     \\
-\DWLANGCplusplus{} &0x0004 &0       \\
-\DWLANGCobolseventyfour{} \dag &0x0005 &1       \\
-\DWLANGCoboleightyfive{} \dag &0x0006 &1       \\
-\DWLANGFortranseventyseven &0x0007 &1       \\
-\DWLANGFortranninety &0x0008 &1       \\
-\DWLANGPascaleightythree &0x0009 &1       \\
-\DWLANGModulatwo &0x000a &1       \\
-\DWLANGJava &0x000b &0       \\
-\DWLANGCninetynine &0x000c &0       \\
-\DWLANGAdaninetyfive{} \dag &0x000d &1 \addtoindexx{Ada}      \\
-\DWLANGFortranninetyfive &0x000e &1       \\
-\DWLANGPLI{} \dag &0x000f &1 \\
-\DWLANGObjC{} &0x0010 &0 \\
-\DWLANGObjCplusplus{} &0x0011 &0 \\
-\DWLANGUPC{} &0x0012 &0 \\
-\DWLANGD{} &0x0013 &0 \\
-\DWLANGPython{} \dag &0x0014 &0 \\
-\DWLANGOpenCL{} \dag \ddag &0x0015 &0 \\
-\DWLANGGo{} \dag \ddag &0x0016 &0 \\
-\DWLANGModulathree{} \dag \ddag &0x0017 &1 \\
-\DWLANGHaskell{} \dag \ddag &0x0018 &0 \\
-\DWLANGCpluspluszerothree{} \ddag &0x0019 &0 \\
-\DWLANGCpluspluseleven{} \ddag &0x001a &0 \\
-\DWLANGOCaml{} \ddag &0x001b &0        \\
+\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 & \\
 
@@ -2127,7 +2343,7 @@ A
 \addtoindexx{section offset!in name lookup table set of entries}
 4\dash byte or 8\dash byte 
 offset into the 
-\dotdebuginfo{}
+\dotdebuginfo{} or \dotdebuginfodwo{}
 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 offsets
@@ -2295,14 +2511,14 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag~\textit{New in DWARF Version 5}
 \endlastfoot
 
 \DWLNEendsequence      &0x01 \\
 \DWLNEsetaddress       &0x02 \\
 \DWLNEdefinefile       &0x03 \\
 \DWLNEsetdiscriminator &0x04 \\
-\DWLNEdefinefileMDfive &0c05 \\
+\DWLNEdefinefileMDfive~\ddag &0x05 \\
 \DWLNElouser           &0x80 \\
 \DWLNEhiuser           &\xff \\
 
@@ -2337,35 +2553,41 @@ Table \refersec{tab:linenumberfileentryformatencodings}.
 \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 
-\DWMACINFOvendorext{} entry.
+macro information section are represented as 
+unsigned LEB128\addtoindexx{LEB128!unsigned} numbers.
 
-The macinfo type is encoded as a single byte. 
+The macro information entry type is encoded as a single byte. 
 The encodings 
-\addtoindexx{macinfo types!encoding}
+\addtoindexx{macro information entry types!encoding}
 are given in 
-Table \refersec{tab:macinfotypeencodings}.
+Table \refersec{tab:macroinfoentrytypeencodings}.
 
 
 \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
-  \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
 
-\DWMACINFOdefine&0x01 \\
-\DWMACINFOundef&0x02 \\
-\DWMACINFOstartfile&0x03 \\
-\DWMACINFOendfile&0x04 \\
-\DWMACINFOvendorext&\xff \\
+\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}
@@ -2466,7 +2688,8 @@ corresponding compilation unit must be defined
 \section{String Offsets Table}
 \label{chap:stringoffsetstable}
 Each set of entries in the string offsets table contained in the
-\dotdebugstroffsets{} section begins with a header containing:
+\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
@@ -2486,7 +2709,8 @@ A 2-byte version identifier containing the value
 \item \texttt{padding} (\addtoindex{uhalf}) \\
 \end{enumerate}
 
-This header is followed by a series of string table offsets.
+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.
 
@@ -2590,7 +2814,7 @@ 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:
+\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
@@ -2648,14 +2872,13 @@ in the
 \dotdebuginfo{}, 
 \dotdebugline{}, 
 \dotdebugloc{}, 
-\dotdebugmacinfo{},
+\dotdebugmacro{},
 \dotdebugpubnames{}, 
 \dotdebugpubtypes{}, 
 \dotdebugranges{}, 
 \dotdebugstr{},
+and
 \dotdebugstroffsets{}
-and 
-\dotdebugtypes{}
 sections of an object file, or equivalent
 separate file or database. The information is not 
 word\dash aligned. Consequently:
@@ -2738,15 +2961,16 @@ Table \ref{tab:integerrepresentationnames}.
 \label{datarep:typesignaturecomputation}
 
 A type signature is computed only by the DWARF producer;
-\addtoindexx{type signature computation}
+\addtoindexx{type signature!computation}
 it is used by a DWARF consumer to resolve type references to
 the type definitions that are contained in 
 \addtoindexx{type unit}
 type units.
 
 The type signature for a type T0 is formed from the 
-\addtoindex{MD5 hash}
-of a flattened description of the type. The flattened
+\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:
 \begin{enumerate}[1. ]
@@ -2820,6 +3044,9 @@ code, and the attribute value.
 \DWATordering,
 \DWATpicturestring,
 \DWATprototyped,
+\DWATrank,
+\DWATreference,
+\DWATrvaluereference,
 \DWATsmall,
 \DWATsegment,
 \DWATstringlength,
@@ -2851,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
-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.
 
@@ -2861,9 +3088,11 @@ 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
-to the following: \DWFORMsdata, 
+to the following: 
+\DWFORMsdata, 
 \DWFORMflag, 
 \DWFORMstring,
+\DWFORMexprloc,
 and \DWFORMblock.
 
 \item If the tag in Step 3 is one of \DWTAGpointertype,
@@ -2880,7 +3109,7 @@ the type (according to the method in Step 2), the letter 'E',
 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
-(e.g., the mangled linker name).
+(for example, the mangled linker name).
 
 
 \item If the tag in Step 3 is not one of \DWTAGpointertype,
@@ -2923,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
-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}.
@@ -2956,11 +3185,11 @@ example, a constant value should be preferred to a location
 expression when possible.)
 
 Once the string S has been formed from the DWARF encoding,
-an \addtoindex{MD5 hash} is computed for the string and the 
+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
-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
@@ -2971,7 +3200,7 @@ if any of the following apply:}
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
-another debugging information entry (e.g., a \DWOPcallref{}
+another debugging information entry (for example, a \DWOPcallref{}
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
@@ -3004,8 +3233,7 @@ declaration of the type.}
 \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
-\addtoindexx{MD5 hash}
-same hash.}
+same \MDfive{} hash.}
 
 \item \textit{The \DWATobjectpointer{} attribute is not included 
 because the information it provides is not necessary for the 
@@ -3027,6 +3255,6 @@ and replacing the function definition in the type with a non-defining
 declaration of the function (as if the function had been defined out of 
 line).}
 
-An example that illustrates the computation of an MD5 hash may be found in 
+An example that illustrates the computation of an \MDfive{} hash may be found in 
 Appendix \refersec{app:usingtypeunits}.