Backup of today's work. Still awaiting a couple more editorial inputs.
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
index ca3f856..a37a63a 100644 (file)
@@ -31,9 +31,12 @@ appropriate prefix
 \DWLANGlouserMARK{}\DWLANGhiuserMARK{}DW\_LANG, 
 \DWLNCTlouserMARK{}\DWLNCThiuserMARK{}DW\_LNCT, 
 \DWLNElouserMARK{}\DWLNEhiuserMARK{}DW\_LNE, 
-\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO, 
-\DWOPlouserMARK{}\DWOPhiuserMARK{}DW\_OP or 
-\DWTAGlouserMARK{}\DWTAGhiuserMARK{}DW\_TAG) 
+\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
+\bb 
+\DWOPlouserMARK{}\DWOPhiuserMARK{}DW\_OP,
+\DWTAGlouserMARK{}\DWTAGhiuserMARK{}DW\_TAG,
+\DWUTlouserMARK{}\DWUThiuserMARK{}DW\_UT)
+\eb 
 followed by \_lo\_user or \_hi\_user. 
 Values in the  range between \textit{prefix}\_lo\_user 
 and \textit{prefix}\_hi\_user inclusive,
@@ -258,7 +261,7 @@ 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
+the \DWFORMaddrxXNand{} forms
 by the \DWOPaddrx{} and \DWOPconstx{} operators, and
 by certain of the \texttt{DW\_LLE\_*} location list
 and \texttt{DW\_RLE\_*} range list entries.
@@ -274,13 +277,20 @@ used by the \dotdebuginfo{} 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.
+\bb
+uses one of the indirect string forms (\DWFORMstrp{}, 
+\DWFORMstrxXNor).
+\eb
+\needlines{4}
 \item
 A string offsets table, in the \dotdebugstroffsets{}
 section for strings in the \dotdebugstr{} section. 
 The string offsets table is necessary only if
-the skeleton compilation unit uses the \DWFORMstrx{} form.
+the skeleton compilation unit uses 
+\bb
+one of the indexed string forms 
+\eb
+(\DWFORMstrxXN).
 \end{itemize}
 The attributes contained in the skeleton compilation
 unit can be used by a DWARF consumer to find the 
@@ -298,8 +308,12 @@ file. This partition includes the following:
 The full compilation unit, in the \dotdebuginfodwo{} section.
 
 Attributes contained in the full compilation unit
-may refer to machine addresses indirectly using the \DWFORMaddrx{} 
-form, which accesses the table of addresses specified by the
+may refer to machine addresses indirectly using 
+\bb
+one of the 
+\eb
+\DWFORMaddrxXNor{} 
+forms, which access the table of addresses specified by the
 \DWATaddrbase{} attribute in the associated skeleton unit.
 Location descriptions may similarly do so using the \DWOPaddrx{} and
 \DWOPconstx{} operations. 
@@ -406,7 +420,7 @@ corresponding application binary. It consists only of a file
 header, a section table, a number of DWARF debug information
 sections, and two index sections.
 
-\needlines{10}
+%\needlines{8}
 Each DWARF package file contains no more than one of each of the
 following sections, copied from a set of object or DWARF object
 files, and combined, section by section:
@@ -422,8 +436,11 @@ files, and combined, section by section:
 \end{alltt}
 
 The string table section in \dotdebugstrdwo{} contains all the
-strings referenced from DWARF attributes using the form
-\DWFORMstrx. Any attribute in a compilation unit or a type
+strings referenced from DWARF attributes using 
+\bb
+any of the forms
+\eb
+\DWFORMstrxXNor. Any attribute in a compilation unit or a type
 unit using this form refers to an entry in that unit's
 contribution to the \dotdebugstroffsetsdwo{} section, which in turn
 provides the offset of a string in the \dotdebugstrdwo{}
@@ -686,12 +703,22 @@ entries referenced from within location descriptions or using loclistsptr
 form attributes must not be moved to a \addtoindex{supplementary object file}.
 
 Executable or shared object file compilation units can use
-\DWTAGimportedunit{} with \DWFORMrefsup{} form \DWATimport{} attribute
-to import entries from the \addtoindex{supplementary object file}, other \DWFORMrefsup{}
+\DWTAGimportedunit{} with 
+\bb
+an \DWATimport{} attribute that uses \DWFORMrefsupfour{} or \DWFORMrefsupeight{} 
+\eb
+to import entries from the \addtoindex{supplementary object file}, other 
+\bb
+\DWFORMrefsupfour{} or \DWFORMrefsupeight{}
+\eb
 attributes to refer to them and \DWFORMstrpsup{} form attributes to
 refer to strings that are used by debug information of multiple
 executables or shared object files.  Within the \addtoindex{supplementary object file}'s
-debugging sections, form \DWFORMrefsup{} or \DWFORMstrpsup{} are
+debugging sections, form 
+\bb
+\DWFORMrefsupfour{}, \DWFORMrefsupeight{} 
+\eb
+or \DWFORMstrpsup{} are
 not used, and all reference forms referring to some other sections
 refer to the local sections in the \addtoindex{supplementary object file}.
 
@@ -799,8 +826,7 @@ format, the value is an 8-byte unsigned integer.
 Form             & Role  \\ \hline
 \DWFORMlinestrp  & offset in \dotdebuglinestr \\
 \DWFORMrefaddr   & offset in \dotdebuginfo{} \\
-\DWFORMrefsup    & offset in \dotdebuginfo{} section of a \mbox{supplementary} object file \\
-                   \addtoindexx{supplementary object file}
+\bbeb
 \DWFORMsecoffset & offset in a section other than \\
                  & \dotdebuginfo{} or \dotdebugstr{} \\
 \DWFORMstrp      & offset in \dotdebugstr{} \\
@@ -923,7 +949,11 @@ units may share the same table.
 \subsection{Unit Headers}
 \label{datarep:unitheaders}
 Unit headers contain a field, \addttindex{unit\_type}, whose value indicates the kind of
-compilation unit that follows. The encodings for the unit type 
+compilation unit 
+\bb
+(see Section \ref{chap:unitentries})
+\eb
+that follows. The encodings for the unit type 
 enumeration are shown in Table \refersec{tab:unitheaderunitkindencodings}.
 
 \needlines{6}
@@ -953,11 +983,14 @@ enumeration are shown in Table \refersec{tab:unitheaderunitkindencodings}.
 \end{longtable}
 \end{centering}
 
-\textit{All unit headers in a compilation have the same size. 
-Some header types include padding bytes to achieve this.}
+\bb
+All unit headers have the same initial three fields: \HFNinitiallength, \HFNversion{} and \HFNunittype.
+\eb
 
 \needlines{5}
-\subsubsection{Compilation and Partial Unit Headers}
+\bb
+\subsubsection{Full and Partial Compilation Unit Headers}
+\eb
 \label{datarep:compilationunitheader}
 \begin{enumerate}[1. ]
 
@@ -990,10 +1023,19 @@ for a summary of all version numbers that apply to DWARF sections.}
 \addttindexx{unit\_type}
 A 1-byte unsigned integer identifying this unit as a compilation unit.
 The value of this field is 
-\DWUTcompile{} for a full compilation unit or
-\DWUTpartial{} for a partial compilation unit
+\DWUTcompile{} for a 
+\bb
+(non-split) full compilation unit or
+\DWUTpartial{} for a (non-split) partial compilation unit
+\eb
 (see Section \refersec{chap:fullandpartialcompilationunitentries}).
 
+\textit{See 
+\bb
+Section \ref{datarep:skeletonandfullcompilationunitheaders} 
+regarding a split full compilation unit.
+\eb}
+
 \textit{This field is new in \DWARFVersionV.}
 
 \needlines{4}
@@ -1016,14 +1058,7 @@ the \thirtytwobitdwarfformat, this is a 4-byte unsigned length;
 in the \sixtyfourbitdwarfformat, this is an 8-byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item \HFNunitpaddingONE{} (8 bytes) \\
-Reserved to DWARF (must be zero).
-
-\needlines{4}
-\item \HFNunitpaddingTWO{} (4 or 8 bytes) \\
-Reserved to DWARF (must be zero). In the \thirtytwobitdwarfformat,
-this is 4 bytes in length; in the \sixtyfourbitdwarfformat, this
-is 8 bytes in length.
+\bbpareb
 \end{enumerate}
 
 \needlines{8}
@@ -1062,9 +1097,18 @@ for a summary of all version numbers that apply to DWARF sections.}
 A 1-byte unsigned integer identifying this unit as a compilation unit.
 The value of this field is 
 \DWUTskeleton{} for a skeleton compilation unit or
-\DWUTsplitcompile{} for a split compilation unit
+\DWUTsplitcompile{} for a split 
+\bb
+(full)
+\eb
+compilation unit
 (see Section \refersec{chap:skeletoncompilationunitentries}).
 
+\textit{There
+\bb
+is no split analog to the partial compilation unit.
+\eb}
+
 \textit{This field is new in \DWARFVersionV.}
 
 \needlines{4}
@@ -1096,11 +1140,7 @@ unit and its associated split compilation unit in
 the object file named in the \DWATdwoname{} attribute
 of the skeleton compilation.
 
-\needlines{4}
-\item \HFNunitpaddingTWO{} (4 or 8 bytes) \\
-Reserved to DWARF (must be zero). In the \thirtytwobitdwarfformat,
-this is 4 bytes in length; in the \sixtyfourbitdwarfformat{}, this
-is 8 bytes in length.
+\bbpareb
 \end{enumerate}
 
 \needlines{8}
@@ -1179,7 +1219,7 @@ unit.
 the primary type contained in this 
 \addtoindex{type unit} uses this value.}
 
-%\needlines{8}
+\needlines{8}
 \item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
 \addttindexx{type\_offset}
 A 4-byte or 8-byte unsigned offset 
@@ -1217,7 +1257,6 @@ null entries.
 
 \subsection{Abbreviations Tables}
 \label{datarep:abbreviationstables}
-
 The abbreviations tables for all compilation units
 are contained in a separate object file section called
 \dotdebugabbrev{}.
@@ -1240,7 +1279,7 @@ number that encodes the entry\textquoteright s tag. The encodings for the
 tag names are given in 
 Table \refersec{tab:tagencodings}.
 
-\needlines{6}
+\needlines{10}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
@@ -1258,15 +1297,21 @@ Table \refersec{tab:tagencodings}.
 \DWTAGentrypoint&0x03 \\
 \DWTAGenumerationtype&0x04 \\
 \DWTAGformalparameter&0x05 \\
+\bbeb\textit{Reserved}&0x06 \\
+\bbeb\textit{Reserved}&0x07 \\
 \DWTAGimporteddeclaration&0x08 \\
+\bbeb\textit{Reserved}&0x09 \\
 \DWTAGlabel&0x0a \\
 \DWTAGlexicalblock&0x0b \\
+\bbeb\textit{Reserved}&0x0c \\
 \DWTAGmember&0x0d \\
+\bbeb\textit{Reserved}&0x0e \\
 \DWTAGpointertype&0x0f \\
 \DWTAGreferencetype&0x10 \\
 \DWTAGcompileunit&0x11 \\
 \DWTAGstringtype&0x12 \\
 \DWTAGstructuretype&0x13 \\
+\bbeb\textit{Reserved}&0x14 \\
 \DWTAGsubroutinetype&0x15 \\
 \DWTAGtypedef&0x16 \\
 \DWTAGuniontype&0x17 \\
@@ -1434,8 +1479,14 @@ Table \referfol{tab:attributeencodings}.
             \addtoindexx{location attribute}   \\
 \DWATname&0x03&\livelink{chap:classstring}{string} 
             \addtoindexx{name attribute} \\
+\bbeb\textit{Reserved}&0x04&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x05&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x06&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x07&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x08&\textit{not applicable} \\
 \DWATordering&0x09&\livelink{chap:classconstant}{constant} 
             \addtoindexx{ordering attribute}  \\
+\bbeb\textit{Reserved}&0x0a&\textit{not applicable} \\
 \DWATbytesize&0x0b&\livelink{chap:classconstant}{constant}, 
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
@@ -1452,6 +1503,8 @@ Table \referfol{tab:attributeencodings}.
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}   
             \addtoindexx{bit size attribute} \\
+\bbeb\textit{Reserved}&0x0e&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x0f&\textit{not applicable} \\
 \DWATstmtlist&0x10&\livelink{chap:classlineptr}{lineptr} 
             \addtoindexx{statement list attribute} \\
 \DWATlowpc&0x11&\livelink{chap:classaddress}{address} 
@@ -1461,6 +1514,7 @@ Table \referfol{tab:attributeencodings}.
             \addtoindexx{high PC attribute}  \\
 \DWATlanguage&0x13&\livelink{chap:classconstant}{constant} 
             \addtoindexx{language attribute}  \\
+\bbeb\textit{Reserved}&0x14&\textit{not applicable} \\
 \DWATdiscr&0x15&\livelink{chap:classreference}{reference} 
             \addtoindexx{discriminant attribute}  \\
 \DWATdiscrvalue&0x16&\livelink{chap:classconstant}{constant} 
@@ -1470,8 +1524,9 @@ Table \referfol{tab:attributeencodings}.
 \DWATimport&0x18&\livelink{chap:classreference}{reference} 
             \addtoindexx{import attribute}  \\
 \DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc},
-        \CLASSloclist
-            \addtoindexx{string length attribute}  \\
+        \CLASSloclist,
+\bbeb   \CLASSreference
+        \addtoindexx{string length attribute}  \\
 \DWATcommonreference&0x1a&\livelink{chap:classreference}{reference} 
             \addtoindexx{common reference attribute}  \\
 \DWATcompdir&0x1b&\livelink{chap:classstring}{string} 
@@ -1486,6 +1541,7 @@ Table \referfol{tab:attributeencodings}.
         \livelink{chap:classreference}{reference}, 
         \livelink{chap:classflag}{flag}
             \addtoindexx{default value attribute} \\
+\bbeb\textit{Reserved}&0x1f&\textit{not applicable} \\
 \DWATinline&0x20&\livelink{chap:classconstant}{constant} 
             \addtoindexx{inline attribute}  \\
 \DWATisoptional&0x21&\livelink{chap:classflag}{flag} 
@@ -1494,17 +1550,24 @@ Table \referfol{tab:attributeencodings}.
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
             \addtoindexx{lower bound attribute}  \\
+\bbeb\textit{Reserved}&0x23&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x24&\textit{not applicable} \\
 \DWATproducer&0x25&\livelink{chap:classstring}{string}
             \addtoindexx{producer attribute}  \\
+\bbeb\textit{Reserved}&0x26&\textit{not applicable} \\
 \DWATprototyped&0x27&\livelink{chap:classflag}{flag}
             \addtoindexx{prototyped attribute}  \\
+\bbeb\textit{Reserved}&0x28&\textit{not applicable} \\
+\bbeb\textit{Reserved}&0x29&\textit{not applicable} \\
 \DWATreturnaddr&0x2a&\livelink{chap:classexprloc}{exprloc},
         \CLASSloclist
             \addtoindexx{return address attribute} \\            
+\bbeb\textit{Reserved}&0x2b&\textit{not applicable} \\
 \DWATstartscope&0x2c&
         \livelink{chap:classconstant}{constant},
         \CLASSrnglist
             \addtoindexx{start scope attribute}  \\
+\bbeb\textit{Reserved}&0x2d&\textit{not applicable} \\
 \DWATbitstride&0x2e&\livelink{chap:classconstant}{constant},
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
@@ -1513,6 +1576,7 @@ Table \referfol{tab:attributeencodings}.
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
             \addtoindexx{upper bound attribute}  \\
+\bbeb\textit{Reserved}&0x30&\textit{not applicable} \\
 \DWATabstractorigin&0x31&\livelink{chap:classreference}{reference} 
             \addtoindexx{abstract origin attribute}  \\
 \DWATaccessibility&0x32&\livelink{chap:classconstant}{constant} 
@@ -1786,11 +1850,20 @@ This address is relocatable in a relocatable object file and
 is relocated in an executable file or shared object file.
 
 \item An indirect index into a table of addresses (as 
-described in the previous bullet) in the
-\dotdebugaddr{} section (\DWFORMaddrxTARG). 
+described in the previous bullet) in the \dotdebugaddr{} section 
+\bb
+(\DWFORMaddrxTARG, \DWFORMaddrxoneTARG, \DWFORMaddrxtwoTARG, 
+\DWFORMaddrxthreeTARG{} and \DWFORMaddrxfourTARG). 
+\eb 
 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.
+\bb
+The representation of a \DWFORMaddrxoneNAME, \DWFORMaddrxtwoNAME, 
+\DWFORMaddrxthreeNAME{} or \DWFORMaddrxfourNAME{} value is a 
+1-, 2-, 3- or 4-byte unsigned integer value, respectively,
+which is similarly interpretated.
+\eb
 The index is relative to the value of the \DWATaddrbase{} attribute 
 of the associated compilation unit.
 
@@ -1891,7 +1964,7 @@ The information bytes contain a DWARF expression
 or location description 
 (see Section \refersec{chap:locationdescriptions}).
 
-\needlines{4}
+\needlines{8}
 \item \CLASSflag \\
 \livetarg{datarep:classflag}{}
 A flag \addtoindexx{flag class}
@@ -2023,7 +2096,7 @@ format, it is an 8-byte unsigned value (see Section
 
 \textit{This class is new in \DWARFVersionV.}
 
-\needlines{4}
+\needlines{8}
 \item \CLASSreference \\
 \livetarg{datarep:classreference}{}
 There are four types of reference.\addtoindexx{reference class}
@@ -2101,8 +2174,11 @@ The fourth type of reference is a reference from within the
 \dotdebuginfo{} section of the executable or shared object file to
 a debugging information entry in the \dotdebuginfo{} section of 
 a \addtoindex{supplementary object file}.
-This type of reference (\DWFORMrefsupTARG) is an offset from the 
-beginning of the \dotdebuginfo{} section in the 
+This type of reference (\DWFORMrefsupfourTARG{}
+\bb
+or \DWFORMrefsupeightTARG{}) is a 4- or 8-byte offset (respectively) 
+\eb
+from the beginning of the \dotdebuginfo{} section in the 
 \addtoindex{supplementary object file}.
 
 \textit{The use of compilation unit relative references will reduce the
@@ -2126,10 +2202,10 @@ one null byte.
 A string may be represented: 
 \begin{itemize}
 \setlength{\itemsep}{0em}
-\item immediately in the debugging information entry itself 
+\item Immediately in the debugging information entry itself 
 (\DWFORMstringTARG), 
 
-\item as an 
+\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), 
@@ -2150,12 +2226,21 @@ it is an 8-byte unsigned offset
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \needlines{6}
-\item as an indirect offset into the string table using an 
+\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).
+\dotdebugstroffsets{} section of the object file 
+\bb
+(\DWFORMstrxTARG, \DWFORMstrxoneTARG, \DWFORMstrxtwoTARG, \DWFORMstrxthreeTARG{} and \DWFORMstrxfourTARG).
+\eb
 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. 
+index into an array of offsets in the \dotdebugstroffsets{} section.
+\bb
+The representation of a \DWFORMstrxoneNAME, \DWFORMstrxtwoNAME, 
+\DWFORMstrxthreeNAME{} or \DWFORMstrxfourNAME{} value is a 
+1-, 2-, 3- or 4-byte unsigned integer value, respectively,
+which is similarly interpretated.
+\eb 
 The offset entries in the \dotdebugstroffsets{} section have the 
 same representation as \DWFORMstrp{} values.
 \end{itemize}
@@ -2254,16 +2339,27 @@ Table \referfol{tab:attributeformencodings}.
                    &    & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr \\
 \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} \\
-\DWFORMrefsup{}~\ddag &0x1c &\livelink{chap:classreference}{reference} \\
-\DWFORMstrpsup{}~\ddag &0x1d &\livelink{chap:classstring}{string} \\
-\DWFORMdatasixteen~\ddag &0x1e &\CLASSconstant \\
-\DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\
-\DWFORMrefsigeight &0x20 &\livelink{chap:classreference}{reference} \\
+\DWFORMstrx{} \ddag        &0x1a &\CLASSstring \\
+\DWFORMaddrx{} \ddag       &0x1b &\CLASSaddress \\
+\DWFORMrefsupfour{}~\ddag  &0x1c &\CLASSreference \\
+\DWFORMstrpsup{}~\ddag     &0x1d &\CLASSstring \\
+\DWFORMdatasixteen~\ddag   &0x1e &\CLASSconstant \\
+\DWFORMlinestrp~\ddag      &0x1f &\CLASSstring \\
+\DWFORMrefsigeight         &0x20 &\CLASSreference \\
 \DWFORMimplicitconst~\ddag &0x21 &\CLASSconstant \\
-\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\
-\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\
+\DWFORMloclistx~\ddag      &0x22 &\CLASSloclist \\
+\DWFORMrnglistx~\ddag      &0x23 &\CLASSrnglist \\
+\DWFORMrefsupeight{}~\ddag &0x24 &\CLASSreference \\
+\bb
+\DWFORMstrxone{}~\ddag     &0x25 &\CLASSstring \\
+\DWFORMstrxtwo{}~\ddag     &0x26 &\CLASSstring \\
+\DWFORMstrxthree{}~\ddag   &0x27 &\CLASSstring \\
+\DWFORMstrxfour{}~\ddag    &0x28 &\CLASSstring \\
+\DWFORMaddrxone{}~\ddag    &0x29 &\CLASSaddress \\
+\DWFORMaddrxtwo{}~\ddag    &0x2a &\CLASSaddress \\
+\DWFORMaddrxthree{}~\ddag  &0x2b &\CLASSaddress \\
+\eb
+\DWFORMaddrxfour{}~\ddag   &0x2c &\CLASSaddress \\
 \end{longtable}
 \end{centering}
 
@@ -2416,11 +2512,14 @@ Table \refersec{tab:dwarfoperationencodings}.
   \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 
+\bbeb\textit{Reserved}&0x01&-& \\
+\bbeb\textit{Reserved}&0x02&-& \\
 \DWOPaddr&0x03&1 & constant address  \\ 
 & & &(size is target specific) \\
-
+\bbeb\textit{Reserved}&0x04&-& \\
+\bbeb\textit{Reserved}&0x05&-& \\
 \DWOPderef&0x06&0 & \\
-
+\bbeb\textit{Reserved}&0x07&-& \\
 \DWOPconstoneu&0x08&1&1-byte constant  \\
 \DWOPconstones&0x09&1&1-byte constant   \\
 \DWOPconsttwou&0x0a&1&2-byte constant   \\
@@ -2828,7 +2927,10 @@ defined language.
 \DWLANGCplusplusfourteen{}~\ddag &0x0021 &0 \addtoindexx{C++14 (ISO)} \\
 \DWLANGFortranzerothree{}~\ddag  &0x0022 &1 \addtoindexx{Fortran:2004 (ISO)} \\
 \DWLANGFortranzeroeight{}~\ddag  &0x0023 &1 \addtoindexx{Fortran:2010 (ISO)} \\
-\DWLANGRenderScript{}~\ddag       &0x0024 &0 \addtoindexx{RenderScript Kernel Language}
+\DWLANGRenderScript{}~\ddag       &0x0024 &0 \addtoindexx{RenderScript Kernel Language} \\
+\bb
+\DWLANGBLISS{} \ddag &0x0025 &0 \addtoindexx{BLISS} 
+\eb
 \\
 \DWLANGlouser{} &0x8000 & \\
 \DWLANGhiuser{} &\xffff & \\
@@ -2871,6 +2973,7 @@ Table \refersec{tab:identifiercaseencodings}.
 \end{longtable}
 \end{centering}
 
+\needlines{8}
 \section{Calling Convention Encodings}
 \label{datarep:callingconventionencodings}
 The encodings of the constants used in the 
@@ -2936,6 +3039,7 @@ Table \refersec{tab:inlineencodings}.
 % this clearpage is ugly, but the following table came
 % out oddly without it.
 
+\needlines{10}
 \section{Array Ordering}
 \label{datarep:arrayordering}
 
@@ -3001,8 +3105,9 @@ Table \refersec{tab:discriminantdescriptorencodings}.
 The \addtoindexi{version number}{version number!name index table}
 in the name index table header is \versiondotdebugnames{}.
 
-The name index attributes and their encodings are listed in Table \referfol{datarep:indexattributeencodings}.
+The name index attributes and their encodings are listed in Table \refersec{datarep:indexattributeencodings}.
 
+\needlines{14}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|l}
@@ -3513,12 +3618,18 @@ bytes of a segment selector on the target system.
 \item   \HFNoffsetentrycount{} (\HFTuword) \\
 A 4-byte count of the number of offsets
 that follow the header.
+\bb
+This count may be zero.
+\eb
 \end{enumerate}
 
 Immediately following the header is an array of offsets.
 This array is followed by a series of range lists. 
 
-There is one offset for each range list. 
+\bb
+If the \HFNoffsetentrycount{} is non-zero, there 
+\eb
+is one offset for each range list. 
 The contents
 of the $i$\textsuperscript{th} offset is the offset 
 \bb
@@ -3533,9 +3644,19 @@ in the 64-bit DWARF format, each offset is 8-bytes in size
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 \eb
 
+\textit{\bb
+If the \HFNoffsetentrycount{} is zero, then \DWFORMrnglistx{} cannot 
+be used to access a range list; \DWFORMsecoffset{} must be used 
+instead. If the \HFNoffsetentrycount{} is non-zero, then \DWFORMrnglistx{} 
+may be used to access a range list; this is necessary in split units and
+otherwise may be more compact than using \DWFORMsecoffset.
+\eb
+}
+
 Range lists are
 described in Section \refersec{chap:noncontiguousaddressranges}.
-    
+
+\needlines{4}
 The segment size is given by the
 \HFNsegmentselectorsize{} field of the header, and the address size is
 given by the \addttindex{address\_size} field of the header. If the
@@ -3587,12 +3708,18 @@ bytes of a segment selector on the target system.
 \item   \HFNoffsetentrycount{} (\HFTuword) \\
 A 4-byte count of the number of offsets
 that follow the header.
+\bb
+This count may be zero.
+\eb
 \end{enumerate}
 
 Immediately following the header is an array of offsets.
 This array is followed by a series of location lists. 
     
-There is one offset for each location list. The contents
+\bb
+If the \HFNoffsetentrycount{} is non-zero, there 
+\eb
+is one offset for each location list. The contents
 of the $i$\textsuperscript{th} offset is the offset 
 \bb
 (an unsigned integer)
@@ -3606,6 +3733,14 @@ in the 64-bit DWARF format, each offset is 8-bytes in size
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 \eb
 
+\textit{\bb
+If the \HFNoffsetentrycount{} is zero, then \DWFORMloclistx{} cannot 
+be used to access a location list; \DWFORMsecoffset{} must be used 
+instead. If the \HFNoffsetentrycount{} is non-zero, then \DWFORMloclistx{} 
+may be used to access a location list; this is necessary in split units and
+otherwise may be more compact than using \DWFORMsecoffset.
+\eb
+}
 
 Location lists are
 described in Section \refersec{chap:locationlists}.