This is the Public Review Draft.
authorRon Brender <ron.brender@gmail.com>
Thu, 6 Oct 2016 21:56:20 +0000 (17:56 -0400)
committerRon Brender <ron.brender@gmail.com>
Thu, 6 Oct 2016 21:56:20 +0000 (17:56 -0400)
Signed-off-by: Ron Brender <ron.brender@gmail.com>
15 files changed:
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/dwarfnamecmds.tex
dwarf5/latexdoc/encodingdecoding.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/sectionversionnumbers.tex
dwarf5/latexdoc/splitobjects.tex
dwarf5/latexdoc/typeentries.tex

index f5941d5..18682d0 100644 (file)
@@ -211,9 +211,7 @@ For simplicity, this attribute is not explicitly shown.
 &\DWATname{} \\*
 &\DWATproducer{} \\*
 &\DWATranges{} \\*
-\bb
-&\DWATrnglistsbase{} 
-\eb \\*
+&\DWATrnglistsbase{} \\*
 &\DWATsegment{} \\*
 &\DWATstmtlist{} \\*
 &\DWATstroffsetsbase{} \\*
@@ -364,9 +362,9 @@ For simplicity, this attribute is not explicitly shown.
 
 \hline
 \DWTAGimmutabletype
-\bbeb&\livelink{chap:DECL}{DECL} \\*
-\bbeb&\DWATname \\*
-\bbeb&\DWATtype \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATname \\*
+&\DWATtype \\
 
 \hline
 \DWTAGimporteddeclaration
@@ -520,9 +518,7 @@ For simplicity, this attribute is not explicitly shown.
 &\DWATname{}  \\*
 &\DWATproducer{}  \\*
 &\DWATranges{}  \\*
-\bb
-&\DWATrnglistsbase{} 
-\eb \\*
+&\DWATrnglistsbase{} \\*
 &\DWATsegment{}  \\*
 &\DWATstmtlist{}  \\*
 &\DWATstroffsetsbase{} \\*
@@ -614,9 +610,7 @@ For simplicity, this attribute is not explicitly shown.
 &\DWAThighpc{} \\*
 &\DWATlowpc{} \\*
 &\DWATranges{} \\*
-\bb
-&\DWATrnglistsbase{} 
-\eb \\*
+&\DWATrnglistsbase{} \\*
 &\DWATstmtlist{} \\*
 &\DWATstroffsetsbase{} \\*
 &\DWATuseUTFeight{} 
index 0d97cf2..d632000 100644 (file)
@@ -15,6 +15,7 @@ This change summary is included only in draft versions of this document.
 \begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \endhead
+10/6/2016       & Prepare Public Review Draft, delete bullet 7 in 7.4, other tweaks. \\
 9/13/2016       & Final edits for committee vote \\
 9/4/2016        & Further Appendix F cleanups \\
 8/31-9/1/2016   & Appendix F editorial additions and corrections \\
index 64601f3..fc00fb2 100644 (file)
@@ -110,11 +110,9 @@ of those DWARF sections that have a header
 (\dotdebugaranges{}, 
 \dotdebuginfo{}, 
 \dotdebugline{},
-\bb
 \dotdebugloclists{},
 \dotdebugnames{} and
 \dotdebugrnglists) 
-\eb
 or the length field
 that occurs at the beginning of the CIE and FDE structures
 in the \dotdebugframe{} section.
@@ -179,8 +177,6 @@ These attributes refer to
 debugging information in other debugging information sections within
 the object file, and must be relocated during the linking process.
 
-\bbpareb
-
 \item Debugging information entries may have attributes with the form
 \DWFORMrefaddr{} (see Section \refersec{datarep:attributeencodings}). 
 These attributes refer to
@@ -193,18 +189,14 @@ relocation.
 These attributes refer to strings in
 the \dotdebugstr{} section. These values require relocation.
 
-\item Entries in the \dotdebugaddr{} 
-\bbeb
-and \dotdebugaranges{}
+\item Entries in the \dotdebugaddr{} and \dotdebugaranges{}
 sections may contain references to locations within the virtual address
 space of the program, and thus require relocation.
 
-\bb
 \item Entries in the \dotdebugloclists{} and \dotdebugrnglists{} sections may
 contain references to locations within the virtual address space of the 
 program depending on whether certain kinds of location or range
 list entries are used, and thus require relocation.
-\eb
 
 \item In the \dotdebugline{} section, the operand of the \DWLNEsetaddress{}
 opcode is a reference to a location within the virtual address space
@@ -255,9 +247,7 @@ debugging information that must still be processed by the linker,
 and includes the following:
 \begin{itemize}
 \item
-The line number tables, 
-\bbeb
-frame tables, and
+The line number tables, frame tables, and
 accelerated access tables, in the usual sections:
 \dotdebugline, \dotdebuglinestr, 
 \dotdebugframe, \dotdebugnames{} and \dotdebugaranges,
@@ -269,11 +259,9 @@ 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, 
-\bb
 by the \DWOPaddrx{} and \DWOPconstx{} operators, and
 by certain of the \texttt{DW\_LLE\_*} location list
 and \texttt{DW\_RLE\_*} range list entries.
-\eb
 \item
 A skeleton compilation unit, as described in Section
 \refersec{chap:skeletoncompilationunitentries}, 
@@ -281,9 +269,7 @@ in the \dotdebuginfo{} section.
 \item
 An abbreviations table for the skeleton compilation unit,
 in the \dotdebugabbrev{} section
-\bb
 used by the \dotdebuginfo{} section.
-\eb
 
 \item
 A string table, in the \dotdebugstr{} section. The string
@@ -292,10 +278,7 @@ uses either indirect string form, \DWFORMstrp{} or
 \DWFORMstrx.
 \item
 A string offsets table, in the \dotdebugstroffsets{}
-section
-\bb
-for strings in the \dotdebugstr{} section. 
-\eb
+section for strings in the \dotdebugstr{} section. 
 The string offsets table is necessary only if
 the skeleton compilation unit uses the \DWFORMstrx{} form.
 \end{itemize}
@@ -321,25 +304,17 @@ form, which accesses the table of addresses specified by the
 Location descriptions may similarly do so using the \DWOPaddrx{} and
 \DWOPconstx{} operations. 
 
-\bbpareb
-
 \item Separate type units, in the \dotdebuginfodwo{} section.
 
 \item
 Abbreviations table(s) for the compilation unit and type
 units, in the \dotdebugabbrevdwo{} section
-\bb
 used by the \dotdebuginfodwo{} section.
-\eb
 
 \item Location lists, in the 
-\bb
 \dotdebugloclistsdwo{} section.
-\eb
 
-\bb
 \item Range lists, in the \dotdebugrnglistsdwo{} section.
-\eb
 
 \item
 A \addtoindex{specialized line number table} (for the type units), 
@@ -356,9 +331,7 @@ information entries.
 
 \item A string offsets table, in the \dotdebugstroffsetsdwo{}
 section
-\bb
 for the strings in the \dotdebugstrdwo{} section.
-\eb
 \end{itemize}
 
 Except where noted otherwise, all references in this document
@@ -583,7 +556,6 @@ guaranteed to stop at an unused slot or find the match.
 \needlines{4}
 The table of offsets begins immediately following the parallel
 table (at offset \mbox{$16 + 12 * S$} from the beginning of the section).
-\bb
 This table consists of a single header row containing $N$ fields,
 each a 4-byte unsigned integer, followed by $U$ data rows, each
 also containing $N$ fields of 4-byte unsigned integers. The fields
@@ -595,7 +567,6 @@ or TU in the package file. In the data rows, each field provides
 an offset to the debug section whose identifier appears in the
 corresponding field of the header row. The data rows are indexed
 starting at 1.
-\eb
 
 \textit{Not all sections listed in the table need be included.}
 
@@ -618,14 +589,10 @@ starting at 1.
 \textit{Reserved}       & 2 & \\
 \DWSECTABBREVTARG       & 3 & \dotdebugabbrevdwo \\
 \DWSECTLINETARG         & 4 & \dotdebuglinedwo \\
-\bb
-\DWSECTLOCLISTSTARG     & 5 & \dotdebugloclistsdwo
-\eb \\
+\DWSECTLOCLISTSTARG     & 5 & \dotdebugloclistsdwo \\
 \DWSECTSTROFFSETSTARG   & 6 & \dotdebugstroffsetsdwo \\
 \DWSECTMACROTARG        & 7 & \dotdebugmacrodwo \\
-\bb
-\DWSECTRNGLISTSTARG         & 8 & \dotdebugrnglistsdwo
-\eb \\
+\DWSECTRNGLISTSTARG         & 8 & \dotdebugrnglistsdwo \\
 \end{longtable}
 \end{centering}
 
@@ -645,9 +612,7 @@ interpreted as relative to the corresponding base offset.
 The table of sizes begins immediately following the table of
 offsets, and provides the sizes of the contributions made by each
 CU or TU to the corresponding section in the package file. 
-\bb
-This
-table consists of U data rows, each with N fields of 4-byte
+This table consists of U data rows, each with N fields of 4-byte
 unsigned integers. Each data row corresponds to the same CU or TU
 as the corresponding data row in the table of offsets described
 above. Within each data row, the N fields also correspond
@@ -655,22 +620,16 @@ one-to-one with the fields in the corresponding data row of the
 table of offsets. Each field provides the size of the
 contribution made by a CU or TU to the corresponding section in
 the package file.
-\eb
 
 For an example, see Figure \refersec{fig:examplecuindexsection}.
 
 \subsection{DWARF Supplementary Object Files}
 \label{datarep:dwarfsupplemetaryobjectfiles}
-\bb
-\textit{In contrast to split DWARF object files, which allow the compiler to
-split the debugging information between to files in order to reduce
-link time and executable size, a supplementary object file permits a
-post-link utility to analyze many executable and shared object files,
-and collect any duplicate debugging information into a single file
-that can be referenced by each of the original files. This facility
-can be useful for building integrated operating system packages
-and distributions.}
-\eb
+\textit{A supplementary object file permits a post-link utility to analyze executable and
+shared object files and collect duplicate debugging information into a single file that
+can be referenced by each of the original files.  This is in contrast to split DWARF
+object files, which allow the compiler to split the debugging information between
+multiple files in order to reduce link time and executable size.}
 
 \needlines{4}
 A DWARF \addtoindex{supplementary object file} is itself an object file, 
@@ -874,21 +833,13 @@ format as follows: in the 32-bit DWARF format, entries are 4-byte
 unsigned integer values; in the 64-bit DWARF format, they are
 8-byte unsigned integers.
 
-\item In the body of the \dotdebugaddr{}
-\bb
-section, 
-\eb
-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.
+%\bbpareb-delete bullet 7
 
-\bb
 \item In the body of the \dotdebugloclists{} and \dotdebugrnglists{}
 sections, the offsets the follow the header depend on the
 DWARF format as follows: in the 32-bit DWARF format, offsets are 4-byte
 unsigned integer values; in the 64-bit DWARF format, they are
 8-byte unsigned integers.
-\eb
 
 \end{enumerate}
 
@@ -900,6 +851,7 @@ intermixed within a single compilation unit.
 addresses in the target program are not affected by these
 rules.}
 
+\needlines{6}
 A DWARF consumer that supports the 64-bit DWARF format must
 support executables in which some compilation units use the
 32-bit format and others use the 64-bit format provided that
@@ -954,12 +906,12 @@ The appropriate entry in the
 interpretation of the information contained directly in the
 \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.
 
+\needlines{6}
 \subsection{Unit Headers}
 \label{datarep:unitheaders}
 Unit headers contain a field, \addttindex{unit\_type}, whose value indicates the kind of
@@ -1363,10 +1315,7 @@ DW\_TAG\_mutable\_type DIE that was defined (only) in \DWARFVersionIII.}
 \DWTAGcallsite~\ddag & 0x48 \\
 \DWTAGcallsiteparameter~\ddag & 0x49 \\
 \DWTAGskeletonunit~\ddag & 0x4a \\
-\bb
-\DWTAGimmutabletype~\ddag & 0x4b
-\eb
-\\
+\DWTAGimmutabletype~\ddag & 0x4b \\
 \DWTAGlouser&0x4080      \\
 \DWTAGhiuser&\xffff      \\
 \end{longtable}
@@ -1473,9 +1422,7 @@ Table \referfol{tab:attributeencodings}.
 \DWATsibling&0x01&\livelink{chap:classreference}{reference} 
             \addtoindexx{sibling attribute} \\
 \DWATlocation&0x02&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist
-\eb
             \addtoindexx{location attribute}   \\
 \DWATname&0x03&\livelink{chap:classstring}{string} 
             \addtoindexx{name attribute} \\
@@ -1515,9 +1462,7 @@ Table \referfol{tab:attributeencodings}.
 \DWATimport&0x18&\livelink{chap:classreference}{reference} 
             \addtoindexx{import attribute}  \\
 \DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc},
-\bb 
         \CLASSloclist
-\eb
             \addtoindexx{string length attribute}  \\
 \DWATcommonreference&0x1a&\livelink{chap:classreference}{reference} 
             \addtoindexx{common reference attribute}  \\
@@ -1546,15 +1491,11 @@ Table \referfol{tab:attributeencodings}.
 \DWATprototyped&0x27&\livelink{chap:classflag}{flag}
             \addtoindexx{prototyped attribute}  \\
 \DWATreturnaddr&0x2a&\livelink{chap:classexprloc}{exprloc},
-\bb
         \CLASSloclist
-\eb
             \addtoindexx{return address attribute} \\            
 \DWATstartscope&0x2c&
         \livelink{chap:classconstant}{constant},
-\bb 
         \CLASSrnglist
-\eb
             \addtoindexx{start scope attribute}  \\
 \DWATbitstride&0x2e&\livelink{chap:classconstant}{constant},
         \livelink{chap:classexprloc}{exprloc}, 
@@ -1582,9 +1523,7 @@ Table \referfol{tab:attributeencodings}.
             \addtoindexx{count attribute}  \\
 \DWATdatamemberlocation&0x38&\livelink{chap:classconstant}{constant}, 
         \livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{data member attribute}  \\
 \DWATdeclcolumn&0x39&\livelink{chap:classconstant}{constant} 
             \addtoindexx{declaration column attribute}  \\
@@ -1601,9 +1540,7 @@ Table \referfol{tab:attributeencodings}.
 \DWATexternal&\xiiif&\livelink{chap:classflag}{flag} 
             \addtoindexx{external attribute}  \\
 \DWATframebase&0x40&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{frame base attribute}  \\
 \DWATfriend&0x41&\livelink{chap:classreference}{reference} 
             \addtoindexx{friend attribute}  \\
@@ -1619,32 +1556,24 @@ Table \referfol{tab:attributeencodings}.
 \DWATpriority&0x45&\livelink{chap:classreference}{reference} 
             \addtoindexx{priority attribute}  \\
 \DWATsegment&0x46&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{segment attribute}  \\
 \DWATspecification&0x47&\livelink{chap:classreference}{reference} 
         \addtoindexx{specification attribute}  \\
 \DWATstaticlink&0x48&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{static link attribute}  \\
 \DWATtype&0x49&\livelink{chap:classreference}{reference} 
             \addtoindexx{type attribute}  \\
 \DWATuselocation&0x4a&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{location list attribute}  \\
 \DWATvariableparameter&0x4b&\livelink{chap:classflag}{flag} 
             \addtoindexx{variable parameter attribute}  \\
 \DWATvirtuality&0x4c&\livelink{chap:classconstant}{constant} 
             \addtoindexx{virtuality attribute}  \\
 \DWATvtableelemlocation&0x4d&\livelink{chap:classexprloc}{exprloc}, 
-\bb
         \CLASSloclist 
-\eb
             \addtoindexx{vtable element location attribute}  \\
 \DWATallocated&0x4e&\livelink{chap:classconstant}{constant}, 
         \livelink{chap:classexprloc}{exprloc}, 
@@ -1668,9 +1597,7 @@ Table \referfol{tab:attributeencodings}.
 \DWATextension&0x54&\livelink{chap:classreference}{reference} 
             \addtoindexx{extension attribute}  \\
 \DWATranges&0x55&
-\bb
-        \CLASSrnglist
-\eb        
+        \CLASSrnglist      
             \addtoindexx{ranges attribute}  \\
 \DWATtrampoline&0x56&\livelink{chap:classaddress}{address}, 
         \livelink{chap:classflag}{flag}, 
@@ -1741,11 +1668,9 @@ Table \referfol{tab:attributeencodings}.
 \DWATaddrbase~\ddag &0x73&
                \livelinki{chap:classaddrptr}{addrptr}{addrptr class}
             \addtoindexx{address table base!encoding} \\
-\bb
 \DWATrnglistsbase~\ddag&0x74&
                \CLASSrnglistsptr
-            \addtoindexx{range list base!encoding} 
-\eb \\
+            \addtoindexx{range list base!encoding} \\
 \textit{Reserved} &0x75& \textit{Unused} \\
 \DWATdwoname~\ddag &0x76&
                \livelink{chap:classstring}{string}
@@ -1790,46 +1715,33 @@ Table \referfol{tab:attributeencodings}.
         \addtoindexx{export symbols attribute} \\
 \DWATdeleted~\ddag &0x8a &\CLASSflag \addtoindexx{deleted attribute} \\
 \DWATdefaulted~\ddag &0x8b &\CLASSconstant \addtoindexx{defaulted attribute} \\
-\bb
-\DWATloclistsbase~\ddag &0x8c &\CLASSloclistsptr \addtoindexx{location list base attribute}
-\eb
-\\
+\DWATloclistsbase~\ddag &0x8c &\CLASSloclistsptr \addtoindexx{location list base attribute} \\
 \DWATlouser&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \DWAThiuser&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
 
 \end{longtable} 
 \end{centering}
 
-\bb
 \subsection{Classes and Forms}
-\eb
 \label{datarep:classesandforms}
-\bb
 Each class is a set of forms which have related representations
 and which are given a common interpretation according to the
 attribute in which the form is used.
 The attribute form governs how the value of an attribute is
 encoded. 
 The classes and the forms they include are listed below. 
-\eb
 
 Form \DWFORMsecoffsetTARG{} 
 is a member of more than one class, namely 
 \CLASSaddrptr,
 \CLASSlineptr,
-\bb 
 \CLASSloclist, \CLASSloclistsptr, 
-\eb
 \CLASSmacptr,
-\bb
 \CLASSrnglist{}, \CLASSrnglistsptr, 
-\eb
 and
 \CLASSstroffsetsptr;
-\bb
 as a result, it is not possible for an
 attribute to allow more than one of these classes.
-\eb
 The list of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
@@ -2003,7 +1915,6 @@ in the \sixtyfourbitdwarfformat, it is an 8-byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \needlines{10}
-\bb
 \item \CLASSloclist \\
 \livetarg{datarep:classloclist}{}
 This is represented as either:
@@ -2028,7 +1939,6 @@ in the \sixtyfourbitdwarfformat, it is an 8-byte unsigned value
 \end{itemize}
 
 \textit{This class is new in \DWARFVersionV.}
-\eb
 
 \item \CLASSloclistsptr \\
 \livetarg{datarep:classloclistsptr}{}
@@ -2036,16 +1946,13 @@ This is an offset into the \dotdebugloclists{} section (\DWFORMsecoffset).
 The operand consists of a byte 
 offset\addtoindexx{section offset!in class loclistsptr}
 from the beginning of the \dotdebugloclists{} section.
-\bbeb
 It is relocatable in a relocatable object file, and
 relocated in an executable or shared object file. In the 
 \thirtytwobitdwarfformat, this offset is a 4-byte unsigned value;
 in the \sixtyfourbitdwarfformat, it is an 8-byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\bb
 \textit{This class is new in \DWARFVersionV.}
-\eb
 
 \item \CLASSmacptr \\
 \livetarg{datarep:classmacptr}{}
@@ -2065,7 +1972,6 @@ in the \sixtyfourbitdwarfformat, it is an 8-byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \needlines{8}
-\bb
 \item \CLASSrnglist \\
 \livetarg{datarep:classrnglist}{}
 This is represented as either:
@@ -2090,7 +1996,6 @@ in the \sixtyfourbitdwarfformat, it is an 8-byte unsigned value
 \end{itemize}
 
 \textit{This class is new in \DWARFVersionV.}
-\eb
 
 \needlines{4}
 \item \CLASSrnglistsptr \\
@@ -2101,17 +2006,12 @@ It consists of a byte offset from the beginning of the
 \dotdebugrnglists{} section.
 It is relocatable in a relocatable object file, and relocated 
 in an executable or shared object file.
-\bbeb 
 In the \thirtytwobitdwarfformat, this offset
 is a 4-byte unsigned value; in the 64-bit DWARF
 format, it is an 8-byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 
-\bb
 \textit{This class is new in \DWARFVersionV.}
-\eb
-
-\bbpareb
 
 \needlines{4}
 \item \CLASSreference \\
@@ -2295,10 +2195,8 @@ In no case does an attribute use one of the classes
 to point into either the
 \dotdebuginfo{} or \dotdebugstr{} section.
 
-\bb
 \subsection{Form Encodings}
 \label{datarep:formencodings}
-\eb
 The form encodings are listed in 
 Table \referfol{tab:attributeformencodings}.
 
@@ -2338,11 +2236,8 @@ Table \referfol{tab:attributeformencodings}.
 \DWFORMrefeight&0x14&\livelink{chap:classreference}{reference} \\
 \DWFORMrefudata&0x15&\livelink{chap:classreference}{reference}  \\
 \DWFORMindirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-\bb
 \DWFORMsecoffset{} &0x17& \CLASSaddrptr, \CLASSlineptr, \CLASSloclist, \CLASSloclistsptr, \\
-                   &    & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr
-                   \eb
-                   \\
+                   &    & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr \\
 \DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
 \DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
 \DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\
@@ -2353,10 +2248,8 @@ Table \referfol{tab:attributeformencodings}.
 \DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\
 \DWFORMrefsigeight &0x20 &\livelink{chap:classreference}{reference} \\
 \DWFORMimplicitconst~\ddag &0x21 &\CLASSconstant \\
-\bb
-\DWFORMloclistx~\ddag \eb &0x22 &\CLASSloclist \\
-\bb
-\DWFORMrnglistx~\ddag \eb &0x23 &\CLASSrnglist \\
+\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\
+\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\
 \end{longtable}
 \end{centering}
 
@@ -2624,15 +2517,10 @@ location of a variable or other entity.
 \subsection{Location Lists}
 \label{datarep:locationlists}
 Each entry in a \addtoindex{location list} is either a location list entry,
-a base address 
-\bb
-entry, a default location entry or an 
-\eb
+a base address entry, a default location entry or an 
 \addtoindexx{end-of-list entry!in location list}
 end-of-list entry.
 
-\bbpareb
-
 Each entry begins with an unsigned 1-byte code that indicates the kind of entry
 that follows. The encodings for these constants are given in
 Table \ref{tab:locationlistentryencodingvalues}.
@@ -2652,7 +2540,6 @@ Table \ref{tab:locationlistentryencodingvalues}.
   \hline
   \ddag New in \DWARFVersionV
 \endlastfoot
-\bb
 \DWLLEendoflist~\ddag & 0x00 \\
 \DWLLEbaseaddressx~\ddag & 0x01 \\
 \DWLLEstartxendx~\ddag & 0x02 \\
@@ -2661,8 +2548,7 @@ Table \ref{tab:locationlistentryencodingvalues}.
 \DWLLEdefaultlocation~\ddag & 0x05 \\
 \DWLLEbaseaddress~\ddag & 0x06 \\
 \DWLLEstartend~\ddag & 0x07 \\
-\DWLLEstartlength~\ddag & 0x08
-\eb \\
+\DWLLEstartlength~\ddag & 0x08 \\
 \end{longtable}
 \end{centering}
 
@@ -3445,11 +3331,8 @@ Table \refersec{tab:callframeinstructionencodings}.
 \end{longtable}
 \end{centering}
 
-\bb
 \section{Range List Entries for Non-contiguous Address Ranges}
 \label{datarep:noncontiguousaddressranges}
-\eb
-
 Each entry in a \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges})
 is either a
@@ -3458,11 +3341,9 @@ range list entry,
 \addtoindexx{range list}
 a base address selection entry, or an end-of-list entry.
 
-\bb
 Each entry begins with an unsigned 1-byte code that indicates the kind of entry
 that follows. The encodings for these constants are given in
 Table \refersec{tab:rnglistsentryencodingvalues}.
-\eb
 
 \needlines{10}
 \begin{centering}
@@ -3479,7 +3360,6 @@ Table \refersec{tab:rnglistsentryencodingvalues}.
   \hline
   \ddag New in \DWARFVersionV
 \endlastfoot
-\bb
 \DWRLEendoflist~\ddag    & 0x00 \\
 \DWRLEbaseaddressx~\ddag & 0x01 \\
 \DWRLEstartxendx~\ddag   & 0x02 \\
@@ -3487,8 +3367,7 @@ Table \refersec{tab:rnglistsentryencodingvalues}.
 \DWRLEoffsetpair~\ddag   & 0x04 \\
 \DWRLEbaseaddress~\ddag  & 0x05 \\
 \DWRLEstartend~\ddag     & 0x06 \\
-\DWRLEstartlength~\ddag  & 0x07
-\eb \\
+\DWRLEstartlength~\ddag  & 0x07 \\
 \end{longtable}
 \end{centering}
 
@@ -3584,9 +3463,7 @@ from this base entry, starting from 0.
 \needlines{10}
 \section{Range List Table}
 \label{app:ranglisttable}
-\bb
 Each \dotdebugrnglists{} and \dotdebugrnglistsdwo{} section 
-\eb
 begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
@@ -3619,14 +3496,11 @@ system.
 A 1-byte unsigned integer containing the size in
 bytes of a segment selector on the target system.
 
-\bb
 \item   \HFNoffsetentrycount{} (\HFTuword) \\
 A 4-byte count of the number of offsets
 that follow the header.
-\eb
 \end{enumerate}
 
-\bb
 Immediately following the header is an array of offsets.
 This array is followed by a series of range lists. 
     
@@ -3635,7 +3509,6 @@ of the $i$\textsuperscript{th} offset is the offset from the
 beginning of the offset array to the location of the 
 $i$\textsuperscript{th} range list. Range lists are
 described in Section \refersec{chap:noncontiguousaddressranges}.
-\eb
     
 The segment size is given by the
 \HFNsegmentselectorsize{} field of the header, and the address size is
@@ -3643,20 +3516,16 @@ given by the \addttindex{address\_size} field of the header. If the
 \HFNsegmentselectorsize{} field in the header is zero, the segment
 selector is omitted from the range list entries.
 
-\bb
 The \DWATrnglistsbase{} attribute points to the first offset 
 following the header. The range lists are referenced
 by the index of the position of their corresponding offset in the
 array of offsets, which indirectly specifies the offset to the
 target list.
-\eb
  
 \needlines{12}
 \section{Location List Table}
 \label{datarep:locationlisttable}
-\bb
 Each \dotdebugloclists{} or \dotdebugloclistsdwo{} section 
-\eb
 begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
@@ -3689,14 +3558,11 @@ system.
 A 1-byte unsigned integer containing the size in
 bytes of a segment selector on the target system.
 
-\bb
 \item   \HFNoffsetentrycount{} (\HFTuword) \\
 A 4-byte count of the number of offsets
 that follow the header.
-\eb
 \end{enumerate}
 
-\bb
 Immediately following the header is an array of offsets.
 This array is followed by a series of location lists. 
     
@@ -3705,7 +3571,6 @@ of the $i$\textsuperscript{th} offset is the offset from the
 beginning of the offset array to the location of the 
 $i$\textsuperscript{th} location list. Location lists are
 described in Section \refersec{chap:locationlists}.
-\eb
 
 The segment size is given by the
 \HFNsegmentselectorsize{} field of the header, and the address size is
@@ -3713,13 +3578,11 @@ given by the \HFNaddresssize{} field of the header. If the
 \HFNsegmentselectorsize{} field in the header is zero, the segment
 selector is omitted from location list entries.
 
-\bb
 The \DWATloclistsbase{} attribute points to the first offset 
 following the header. The location lists are referenced
 by the index of the position of their corresponding offset in the
 array of offsets, which indirectly specifies the offset to the
 target list.
-\eb
 
 \needlines{6}
 \section{Dependencies and Constraints}
@@ -4043,13 +3906,11 @@ Steps 6 and 7 are themselves suitable for a separate
 \addtoindex{type unit}.}
 
 \needlines{4}
-\bb
 \textit{Where the DWARF producer may reasonably choose two or 
 more different forms for a given attribute, it should choose
 the simplest possible form in computing the signature. (For
 example, a constant value should be preferred to a location
 expression when possible.)}
-\eb
 
 Once the string S has been formed from the DWARF encoding,
 an 16-byte \MDfive{} digest is computed for the string and the 
index e9bcf91..c2dd3a5 100644 (file)
@@ -248,21 +248,17 @@ beginning of the line number information for the referencing unit.
 
 %i
 \needlines{5}
-\bb
 \itembfnl{(i) \dotdebuginfo{} to \dotdebugrnglists}
 An attribute value of class \CLASSrnglist{} 
 (specifically form \DWFORMrnglistx{} or \DWFORMsecoffset) 
 is an index or offset within the \dotdebugrnglists{} 
-\eb
 section of a \addtoindex{range list}.
 
 %j
-\bb
 \itembfnl{(j) \dotdebuginfo{} to \dotdebugloclists}
 An attribute value of class \CLASSloclist{} 
 (specifically form \DWFORMloclistx or \DWFORMsecoffset) 
 is an index or offset within the \dotdebugloclists{}
-\eb
 section of a \addtoindex{location list}.
 
 %k
@@ -510,7 +506,6 @@ for the referencing unit (the line table details are not in
 \dotdebuglinedwo{} but the line header with its list 
 of file names is present).
 
-\bb
 \itembfnl{(io) \dotdebuginfodwo{} to \dotdebugrnglistsdwo}
 An attribute value of class \CLASSrnglist{} (specifically 
 \DWATranges{} with form \DWFORMrnglistx{} or \DWFORMsecoffset) 
@@ -519,18 +514,15 @@ section of a \addtoindex{range list}.
 The format of \dotdebugrnglistsdwo{} location list entries 
 is restricted to a subset of those in \dotdebugrnglists.
 See Section \refersec{chap:noncontiguousaddressranges} for details.
-\eb 
 
 \itembfnl{(jo) \dotdebuginfodwo{} to \dotdebugloclistsdwo}
 An attribute value of class 
-\bb
 \CLASSloclist{} (specifically with form \DWFORMloclistx
 or \DWFORMsecoffset) 
 is an index or offset within the \dotdebugloclistsdwo{} 
 section of a \addtoindex{location list.}
 The format of \dotdebugloclistsdwo{} location list entries 
 is restricted to a subset of those in \dotdebugloclists.
-\eb
 See Section \refersec{chap:locationlists} for details.
 
 \needlines{4}
index 8631594..ba27b8a 100644 (file)
@@ -3,13 +3,14 @@
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
-\newcommand{\docdate}{September 13, 2016}
+\newcommand{\docdate}{October 6, 2016}
 %
 \usepackage{ifthen}
     \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
     \newboolean{isdraft}\setboolean{isdraft}{true}
-    \newboolean{uselinenos}\setboolean{uselinenos}{true}
-\newcommand{\draftmark}{\ifthenelse{\boolean{isdraft}}{*** Pre-PUBLIC REVIEW DRAFT ***}{}}
+    \newboolean{uselinenos}\setboolean{uselinenos}{false}
+    \newboolean{usechangesummary}\setboolean{usechangesummary}{false}
+\newcommand{\draftmark}{\ifthenelse{\boolean{isdraft}}{*** PUBLIC REVIEW DRAFT ***}{}}
 %
 \usepackage[T1]{fontenc}
 \usepackage{palatino}
@@ -325,7 +326,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \clearpage
 \listoftables
 
-\ifthenelse{\boolean{isdraft}}
+\ifthenelse{\boolean{usechangesummary}}
        {       \emptypage
                {% Environment to keep the following header change local
                \clearpage
@@ -334,7 +335,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
                \include{changesummary}
                 %\emptypage
                }
-       }{}
+       }{\emptypage}
 %\cleardoublepage
 \flushleft
 \raggedbottom
index 6489854..fbf0e3b 100644 (file)
 \newcommand{\dotdebuginfo}{\addtoindex{\texttt{.debug\_info}}}
 \newcommand{\dotdebugline}{\addtoindex{\texttt{.debug\_line}}}
 \newcommand{\dotdebuglinestr}{\addtoindex{\texttt{.debug\_line\_str}}}
-%\newcommand{\dotdebugloc}{\addtoindex{\texttt{.debug\_loc}}} % ***To be deleted ***
 \newcommand{\dotdebugloclists}{\addtoindex{\texttt{.debug\_loclists}}}
-\newcommand{\dotdebugmacinfo}{\addtoindex{\texttt{.debug\_macinfo}}}
 \newcommand{\dotdebugmacro}{\addtoindex{\texttt{.debug\_macro}}}
 \newcommand{\dotdebugnames}{\addtoindex{\texttt{.debug\_names}}}
-\newcommand{\dotdebugpubnames}{\addtoindex{\texttt{.debug\_pubnames}}}
-\newcommand{\dotdebugpubtypes}{\addtoindex{\texttt{.debug\_pubtypes}}}
-%\newcommand{\dotdebugranges}{\addtoindex{\texttt{.debug\_ranges}}} % *** To Be Deleted ***
 \newcommand{\dotdebugrnglists}{\addtoindex{\texttt{.debug\_rnglists}}} 
 \newcommand{\dotdebugstr}{\addtoindex{\texttt{.debug\_str}}}
 \newcommand{\dotdebugstroffsets}{\addtoindex{\texttt{.debug\_str\_offsets}}}
 \newcommand{\dotdebugframedwo}{\addtoindex{\texttt{.debug\_frame.dwo}}}
 \newcommand{\dotdebuginfodwo}{\addtoindex{\texttt{.debug\_info.dwo}}}
 \newcommand{\dotdebuglinedwo}{\addtoindex{\texttt{.debug\_line.dwo}}}
-%\newcommand{\dotdebuglocdwo}{\addtoindex{\texttt{.debug\_loc.dwo}}} % *** To Be Deleted ***
+%\newcommand{\dotdebuglocdwo}{\addtoindex{\texttt{.debug\_loc.dwo}}}           % *** New V5, then dropped ***
 \newcommand{\dotdebugloclistsdwo}{\addtoindex{\texttt{.debug\_loclists.dwo}}}
-%\newcommand{\dotdebugmacinfodwo}{\addtoindex{\texttt{.debug\_macinfo.dwo}}}
+%\newcommand{\dotdebugmacinfodwo}{\addtoindex{\texttt{.debug\_macinfo.dwo}}}   % *** New V5, then dropped ***
 \newcommand{\dotdebugmacrodwo}{\addtoindex{\texttt{.debug\_macro.dwo}}}
-\newcommand{\dotdebugpubnamesdwo}{\addtoindex{\texttt{.debug\_pubnames.dwo}}}
-\newcommand{\dotdebugpubtypesdwo}{\addtoindex{\texttt{.debug\_pubtypes.dwo}}}
-%\newcommand{\dotdebugrangesdwo}{\addtoindex{\texttt{.debug\_ranges.dwo}}} % *** To Be Deleted ***
+%\newcommand{\dotdebugpubnamesdwo}{\addtoindex{\texttt{.debug\_pubnames.dwo}}} % *** New V5, then dropped ***
+%\newcommand{\dotdebugpubtypesdwo}{\addtoindex{\texttt{.debug\_pubtypes.dwo}}} % *** New V5, then dropped ***
+%\newcommand{\dotdebugrangesdwo}{\addtoindex{\texttt{.debug\_ranges.dwo}}}     % *** New V5, then dropped ***
 \newcommand{\dotdebugrnglistsdwo}{\addtoindex{\texttt{.debug\_rnglists.dwo}}}
 \newcommand{\dotdebugstrdwo}{\addtoindex{\texttt{.debug\_str.dwo}}}
 \newcommand{\dotdebugstroffsetsdwo}{\addtoindex{\texttt{.debug\_str\_offsets.dwo}}}
-\newcommand{\dotdebugtypes}{\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}}
+
 %
 \newcommand{\dotdebugcuindex}{\addtoindex{\texttt{.debug\_cu\_index}}}
 \newcommand{\dotdebugtuindex}{\addtoindex{\texttt{.debug\_tu\_index}}}
 %
+% Pre-V5 dropped in V5
+%
+\newcommand{\addttindexpreVV}[1]{\texttt{#1}\index{\texttt{#1} (pre-Version 5)}}
+\newcommand{\dotdebugloc}     {\addttindexpreVV{.debug\_loc}}
+\newcommand{\dotdebugmacinfo} {\addttindexpreVV{.debug\_macinfo}}
+\newcommand{\dotdebugpubnames}{\addttindexpreVV{.debug\_pubnames}}
+\newcommand{\dotdebugpubtypes}{\addttindexpreVV{.debug\_pubtypes}}
+\newcommand{\dotdebugranges}  {\addttindexpreVV{.debug\_ranges}}
+\newcommand{\dotdebugtypes}   {\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}}
+%
 \newcommand{\dotdwo}{\texttt{.dwo}}
 %
 \newcommand{\dotdata}{\addtoindex{\texttt{.data}}}
index 8e19a52..ea5fee5 100644 (file)
@@ -7,7 +7,18 @@ Here are algorithms expressed in a C-like pseudo-code to
 encode and decode signed and unsigned numbers in LEB128
 representation.
 
-\begin{figure}[ht]
+The encode and decode algorithms given here do not take account of C/C++ rules
+that mean that in \texttt{E1}$ << $\texttt{E2} the type of \texttt{E1} should be
+a sufficiently large unsigned type to hold the correct mathematical result.
+The decode algorithms do not take account of
+or protect from possibly invalid LEB values, such as values
+that are too large to fit in the target type or that
+lack a proper terminator byte.
+Implementation languages may have additional or different rules.
+
+\vspace{2cm}
+
+\begin{figure}[hb]
 \begin{lstlisting}
 do
 {
index 7185563..d7dee97 100644 (file)
@@ -1188,7 +1188,6 @@ a data member generally.
 
 \item The lack of a subtype concept in DWARF means that DWARF types
 serve the role of subtypes and must replicate information from
-\bbeb 
 the parent type. For this reason, DWARF for
 the unconstrained array type \texttt{ARR} is not needed for the purposes
 of this example and therefore is not shown.
index 0fa5565..4187921 100644 (file)
@@ -548,25 +548,22 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 \DWATlinkagenameTARG
 &\livelinki{chap:DWATlinkagenameobjectfilelinkagenameofanentity}
         {Object file linkage name of an entity}
-        {object file linkage name of an entity}\\
+        {object file linkage name of an entity} \\
 \DWATlocationTARG
 &\livelinki{chap:DWATlocationdataobjectlocation}
         {Data object location}
-        {data object location}\\
-\bb
+        {data object location} \\
 \DWATloclistsbaseTARG
 &\livelinki{chap:DWATloclistsbaseinlocationlist}
         {Location lists base}
-        {location lists base}
-\eb
-\\
+        {location lists base} \\
 \DWATlowpcTARG
 &\livelinki{chap:DWATlowpccodeaddressorrangeofaddresses}
         {Code address or range of addresses}
-        {code address or range of addresses}\\*
+        {code address or range of addresses} \\*
 &\livelinki{chap:DWATlowpcbaseaddressofscope}
         {Base address of scope}
-        {base address of scope}\\
+        {base address of scope} \\
 \DWATlowerboundTARG
 &\livelinki{chap:DWATlowerboundlowerboundofsubrange}
         {Lower bound of subrange}
@@ -640,9 +637,7 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 &\livelinki{chap:DWATrangesnoncontiguousrangeofcodeaddresses}
         {Non-contiguous range of code addresses}
         {non-contiguous range of code addresses} \\
-\bb
 \DWATrnglistsbaseTARG
-\eb
 &\livelinki{chap:DWATrnglistsbase}
         {Base offset for range lists}
         {ranges lists} \\
@@ -716,7 +711,7 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 \DWATthreadsscaledTARG
 &\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}
         {Array bound THREADS scale factor} 
-\bbeb  (\addtoindex{UPC}) \\
+       (\addtoindex{UPC}) \\
 \DWATtrampolineTARG
 &\livelinki{chap:DWATtrampolinetargetsubroutine}
         {Target subroutine}
@@ -882,12 +877,10 @@ of an attribute.
 number information.
 \\
 
-\bb
 \hypertarget{chap:classloclist}{}
 \livelinki{datarep:classloclist}{loclist}{loclist class}, 
 \hypertarget{chap:classloclistsptr}{}
 \livelinki{datarep:classloclistsptr}{loclistsptr}{loclistsptr class}
-\eb
 &Specifies a location in the DWARF section that holds location 
 lists, which describe objects whose location can change during 
 their lifetime.
@@ -900,12 +893,10 @@ a location in the DWARF section that holds macro definition
 information.
 \\
 
-\bb
 \hypertarget{chap:classrnglist}{}
 \livelinki{datarep:classrnglist}{rnglist}{rnglist class}, 
 \hypertarget{chap:classrnglistsptr}{}
 \livelinki{datarep:classrnglistsptr}{rnglistsptr}{rnglistsptr class}
-\eb
 &Specifies a location in the DWARF section that holds 
 non-contiguous address ranges.
 \\
@@ -1082,10 +1073,8 @@ value of the array bound, the length of a dynamic string,
 the desired value itself, and so on).
 
 \textit{The
-\bb
 \generictype{} is the same as the unspecified type used for stack operations
 defined in \DWARFVersionIV{} and before.
-\eb
 }
 
 \needlines{4}
@@ -1453,17 +1442,14 @@ found in Appendix \refersec{app:dwarfstackoperationexamples}.}
 The following provide arithmetic and logical operations. 
 Operands of an operation with two operands
 must have the same type,
-either the same base type or 
-\bbeb 
-the \generictype.
+either the same base type or the \generictype.
 The result of the operation which is pushed back has the same type
 as the type of the operand(s).  
 
 If the type of the operands is the \generictype, 
 except as otherwise specified, the arithmetic operations
 perform addressing arithmetic, that is, unsigned arithmetic that is performed
-modulo one plus the largest representable address (for example, 0x100000000
-when the \addtoindex{size of an address} is 32 bits). 
+modulo one plus the largest representable address. 
 
 Operations other than \DWOPabs{},
 \DWOPdiv{}, \DWOPminus{}, \DWOPmul{}, \DWOPneg{} and \DWOPplus{} 
@@ -1569,9 +1555,7 @@ following operations provide simple control of the flow of a DWARF expression.
 The six relational operators each:
 \begin{itemize}
 \item pop the top two stack values, which have the same type,
-either the same base type or 
-\bbeb 
-the \generictype, 
+either the same base type or the \generictype, 
 
 \item compare the operands:
 \linebreak
@@ -1673,11 +1657,7 @@ represents the offset of a debugging information entry in the current
 compilation unit, or value 0 which represents the \generictype.
 If the operand is non-zero, the referenced entry must be a
 \DWTAGbasetype{} entry that provides the type to which the value is converted.
-The type of the operand and result type 
-\bb
-must 
-\eb
-have the same size in bits.
+The type of the operand and result type must have the same size in bits.
 
 \end{enumerate}
 
@@ -1774,10 +1754,8 @@ Location descriptions are distinguished in a context sensitive
 manner. As the value of an attribute, a location description
 is encoded using class \CLASSexprloc{}
 and a \addtoindex{location list} is encoded
-\bb 
 using class \CLASSloclist{} (which serves as an 
 index into a separate section containing location lists).
-\eb
 
 \needlines{8}
 \subsection{Single Location Descriptions}
@@ -2031,7 +2009,6 @@ unit of memory.}
 \needlines{6}
 \subsection{Location Lists}
 \label{chap:locationlists}
-\bb
 Location lists are used in place of location descriptions whenever
 the object whose location is being described can change location
 during its lifetime. Location lists are contained in a separate
@@ -2039,10 +2016,10 @@ object file section called \dotdebugloclists{} or \dotdebugloclistsdwo{}
 (for split DWARF object files).
 
 A location list is indicated by a location or other attribute
-whose value is of class \bbeb\CLASSloclist{} 
+whose value is of class \CLASSloclist{} 
 (see Section \refersec{datarep:classesandforms}).
    
-\textit{This location list representation, the \bbeb\CLASSloclist{} class, and the
+\textit{This location list representation, the \CLASSloclist{} class, and the
 related \DWATloclistsbase{} attribute are new in \DWARFVersionV.
 Together they eliminate most or all of the object language relocations
 previously needed for location lists.}
@@ -2122,7 +2099,7 @@ that immediately follows.
 in the \dotdebugaddr{} section. This index is relative to the
 value of the \DWATaddrbase{} attribute of the associated
 compilation unit. The address given by this kind
-of operand is *not* relative to the compilation unit base address.
+of operand is not relative to the compilation unit base address.
    
 \item A \definition{target address} operand is an address on the target
 machine. (Its size is the same as used for attribute values of
@@ -2142,21 +2119,22 @@ alignment purposes.}
 
 \itembfnl{\DWLLEbaseaddressxTARG}
 This is a form of base address entry that has one unsigned
-LEB128 operand. The operand value is an address index that
-indicates the applicable base address used by \DWLLEoffsetpair{}
-entries.
+LEB128 operand. The operand value is an address index (into the 
+\dotdebugaddr{} section) that indicates the applicable base address 
+used by subsequent \DWLLEoffsetpair{} entries.
 
 \itembfnl{\DWLLEstartxendxTARG}
 This is a form of bounded location description entry that
 has two unsigned LEB128 operands. The operand values are
-address indices. These indicate the
+address indices (into the \dotdebugaddr{} section). These indicate the
 starting and ending addresses, respectively, that define
 the address range for which this location is valid.
 These operands are followed by a counted location description.
 
 \itembfnl{\DWLLEstartxlengthTARG}
 This is a form of bounded location description that has two
-unsigned ULEB operands. The first value is an address index
+unsigned ULEB operands. The first value is an address index 
+(into the \dotdebugaddr{} section)
 that indicates the beginning of the address range over
 which the location is valid.
 The second value is the length of the range.
@@ -2171,8 +2149,9 @@ address range for which this location is valid.
 These operands are followed by a counted location description.
        
 \itembfnl{\DWLLEdefaultlocationTARG}
-This entry has no range operands that express a range of
-addresses. The only operand is a counted location description.
+The operand is a counted location description which defines 
+where an object is located if no prior location description 
+is valid.
 
 \end{enumerate}
       
@@ -2203,7 +2182,6 @@ the length is the number of bytes in that range.
 These operands are followed by a counted location description.
 
 \end{enumerate}
-\eb
 
 \needlines{10}
 \section{Types of Program Entities}
@@ -2658,18 +2636,17 @@ may be beyond the last valid instruction in the executable.}
 
 \subsection{Non-Contiguous Address Ranges}
 \label{chap:noncontiguousaddressranges}
-\bb
 Range lists are used when the set of addresses for a debugging
 information entry cannot be described as a single contiguous 
 range.\addtoindexx{non-contiguous address ranges}
 Range lists are contained in a separate object file section
-called \dotdebugrnglists or \dotdebugrnglistsdwo (in split units).
+called \dotdebugrnglists{} or \dotdebugrnglistsdwo{} (in split units).
  
 A range list is identified by a \DWATranges{}\addtoindexx{ranges attribute} 
-or other attribute whose value is of class \bbeb\CLASSrnglist{} 
+or other attribute whose value is of class \CLASSrnglist{} 
 (see Section \refersec{datarep:classesandforms}).
  
-\textit{This range list representation, the \bbeb\CLASSrnglist{} class, and the
+\textit{This range list representation, the \CLASSrnglist{} class, and the
 related \DWATrnglistsbase{} attribute are new in \DWARFVersionV.
 Together they eliminate most or all of the object language relocations
 previously needed for range lists.}
@@ -2741,22 +2718,22 @@ alignment purposes.}
       
 \itembfnl{\DWRLEbaseaddressxTARG}
 A base address entry has one unsigned LEB128 operand.
-The operand value is an address index that indicates
-the applicable base address used by following \DWRLEoffsetpair{}
-entries.
+The operand value is an address index (into the \dotdebugaddr{} 
+section) that indicates the applicable base address used by 
+following \DWRLEoffsetpair{} entries.
     
 \itembfnl{\DWRLEstartxendxTARG}
 This is a form of bounded range entry that
 has two unsigned LEB128 operands. The operand values are
-address indices that indicate the
+address indices (into the \dotdebugaddr{} section) that indicate the
 starting and ending addresses, respectively, that define
 the address range.
 
 \itembfnl{\DWRLEstartxlengthTARG}
 This is a form of bounded location description that
 has two unsigned ULEB operands. The first value is an address index
-that indicates the beginning of the address range.
-The second value is the length of the range.
+(into the \dotdebugaddr{} section) that indicates the beginning of 
+the address range. The second value is the length of the range.
        
 \itembfnl{\DWRLEoffsetpairTARG}
 This is a form of bounded range entry that
@@ -2795,7 +2772,6 @@ of the range over which the location description is valid, and
 the length is the number of bytes in that range.
 
 \end{enumerate}
-\eb
 
 \needlines{12}
 \section{Entry Address}
@@ -2813,10 +2789,7 @@ module initialization, subroutines,
 and the like, may have a \DWATentrypcDEFN{} attribute 
 \addtoindexx{entry PC address} to indicate the 
 \definitionx{entry address} which is the address of the 
-instruction where execution 
-\bb
-begins 
-\eb
+instruction where execution begins 
 within that range\hypertarget{chap:entryaddressofscope}{}
 of addresses. 
 If the value of the \DWATentrypcNAME{} attribute is of
index 68a8a9e..51ac594 100644 (file)
@@ -263,11 +263,7 @@ fashion, informative text will suggest but not require this design.
 
 \subsection{Permissive Rather Than Prescriptive}
 The DWARF Standard specifies the meaning of DWARF descriptions. It does not
-specify in detail what a particular producer 
-\bb
-must
-\eb
-generate for any source to
+specify in detail what a particular producer must generate for any source to
 object conversion.  One producer may generate a more complete description
 than another, it may describe features in a different order (unless the 
 standard explicitly requires a particular order), or it may use
@@ -281,8 +277,8 @@ descriptions for the same source to object conversion, and permitting
 different consumers to provide more or less functionality or information
 to the user.  This may result in debugging information being larger or
 smaller, compilers or debuggers which are faster or slower, and more or
-less functional.  These are described as differences in "Quality of
-Implementation".
+less functional.  These are described as differences in 
+quality-of-implementation.
 
 Each producer conforming to the DWARF standard must follow the format and
 meaning as specified in the standard.  As long as the DWARF description
@@ -297,12 +293,10 @@ valid DWARF descriptions, while a consumer using the former would be able
 to provide more accurate values for the variable while executing in that
 range than a consumer using the latter.
 
-\bb
 In this document, where the word \doublequote{may} is used, the producer has 
 the option to follow the description or not.  Where the text says 
 \doublequote{may not}, this is prohibited.  Where the text says \doublequote{should}, 
 this is advice about best practice, but is not a requirement.
-\eb
 
 \subsection{Vendor Extensibility}
 This document does not attempt to cover all interesting
@@ -348,20 +342,20 @@ The following is a list of the major changes made to the
 DWARF Debugging Information Format since Version 4 was published. 
 The list is not meant to be exhaustive.
 \begin{itemize}
-\item The \dotdebugtypes{}
-%\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}
+\item Eliminate the \dotdebugtypes{}
 section introduced in \DWARFVersionIV{} 
-is eliminated and its contents instead contained in \dotdebuginfo{} sections.
+and move its contents into the \dotdebuginfo{} section.
 \item Add support for collecting common DWARF information 
 (debugging information entries and macro definitions)
 across multiple executable and shared files and keeping it in a single
 \addtoindex{supplementary object file}.
 \needlines{6}
-\item A new line number program header format 
+\item Replace the line number program header format with a new 
+format that 
 provides the ability to use an MD5 hash to validate 
 the source file version in use, allows pooling 
 of directory and file name strings and makes provision for vendor-defined
-extensions. It also adds a string section specific to the line number table 
+extensions. Also add a string section specific to the line number table 
 (\dotdebuglinestr)
 to properly support the common practice of stripping all DWARF sections
 except for line number information.
@@ -380,13 +374,13 @@ with a \dotdebugmacro{} representation that can potentially be much more compact
 \item Replace the \dotdebugpubnames{} and \dotdebugpubtypes{} sections
 with a single and more functional name index section, \dotdebugnames{}.
 \needlines{4}
-\bb
+
 \item Replace the location list and range list sections (\texttt{.debug\_loc} 
 and \texttt{.debug\_ranges}, respectively) with new sections (\dotdebugloclists{} 
 and \dotdebugrnglists) and new representations that
 save space and processing time by eliminating most related
 object file relocations.
-\eb
+
 \item Add a new debugging information entry (\DWTAGcallsiteNAME), related 
 attributes and DWARF expression operators to describe call site information, 
 including identification of tail calls and tail recursion.
@@ -415,11 +409,8 @@ a new \HFNunittype{} field.
 \item New operand forms for attribute values are defined 
 (\DWFORMaddrxNAME, \DWFORMdatasixteenNAME, \DWFORMimplicitconstNAME, 
 \DWFORMlinestrpNAME,
-\bb
 \DWFORMloclistxNAME, \DWFORMrnglistxNAME,
-\eb 
 \DWFORMrefsupNAME, \DWFORMstrpsupNAME{} and \DWFORMstrxNAME).
-\eb
 
 \textit{Because a pre-DWARF Version 5 consumer will not be able to interpret 
 these even to ignore and skip over them, new forms must be 
@@ -444,7 +435,8 @@ executable or shared images.
 
 Similar comments apply to replacement of the \dotdebugpubnames{} 
 and \dotdebugpubtypes{} sections with the new \dotdebugnames{} 
-section.
+section, as well as \dotdebugloc{} and \dotdebugranges{} with 
+\dotdebugloclists{} and \dotdebugrnglists{}, respectively.
 
 \needlines{4}
 \section{Changes from Version 3 to Version 4}
index 9481e00..0ae7a1d 100644 (file)
@@ -788,7 +788,6 @@ in the name table.
 \needlines{6}
 \subsubsubsection{Name Table}
 \label{chap:nametable}
-\bb
 The name table immediately follows the hash lookup table. It
 consists of two arrays: an array of string offsets, followed
 immediately by an array of entry offsets. The items in both
@@ -809,7 +808,6 @@ entry offsets array.
 
 \textit{If there is no hash lookup table, there is no ordering
 requirement for the name table.}
-\eb
 
 \needlines{6}
 \subsubsubsection{Abbreviations Table}
@@ -864,11 +862,9 @@ byte for the abbreviation code. The size of the table given by
 terminating 0 byte.
 
 \subsubsubsection{Entry Pool}
-\bb
 The entry pool immediately follows the abbreviations table. 
 Each entry in the entry offsets array in the name table (see 
 Section \ref{chap:nametable})
-\eb
 points to an offset in the entry pool, where a series
 of index entries for that name is located.
 
@@ -1598,11 +1594,9 @@ such code may be combined with one or more forms from the set:
 \DWFORMflag, \DWFORMlinestrp, \DWFORMsdata, \DWFORMsecoffset,
 \DWFORMstring, \DWFORMstrp, \DWFORMstrx{}  and \DWFORMudata.
 
-\bb
 \textit{If a consumer encounters a vendor-defined content type that
 it does not understand, it should skip the content data as though
 it were not present.}
-\eb
 
 \needlines{6}
 \subsection{The Line Number Program}
@@ -2959,20 +2953,14 @@ appropriate size.
 \label{chap:callframeinstructionusage}
 
 \textit{To determine the virtual unwind rule set for a given location
-(L1), 
-\bb
-search 
-\eb
-through the FDE headers looking at the
+(L1), search through the FDE headers looking at the
 \HFNinitiallocation{} and \HFNaddressrange{} values to see if L1 is
 contained in the FDE. If so, then:}
 \begin{enumerate}[1. ]
 
 \item \textit{Initialize a register set by reading the
 \HFNinitialinstructions{} field of the associated CIE.
-\bb
-Set L2 to the value of the \HFNinitiallocation{} field from the FDE header.
-\eb}
+Set L2 to the value of the \HFNinitiallocation{} field from the FDE header.}
 
 
 \item \textit{Read and process the FDE's instruction
index 8d7a491..30c5142 100644 (file)
@@ -297,13 +297,11 @@ A \DWATproducerDEFN{} attribute\addtoindexx{producer attribute}
 whose value is a null-terminated string containing 
 information about the compiler that produced the compilation unit. 
 
-\bb
 \textit{The actual contents of
 the string will be specific to each producer, but should
 begin with the name of the compiler vendor or some other
 identifying character sequence that will avoid confusion
 with other producer values.}
-\eb
 
 \needlines{4}
 \item  \hypertarget{chap:DWATidentifiercaseidentifiercaserule}{}
@@ -329,11 +327,9 @@ in debugging information
 entries for the compilation unit reflect the names as they
 appear in the source program. 
 
-\bb
 \textit{A debugger should be sensitive
 to the case of \addtoindex{identifier names} when doing identifier 
 lookups.}
-\eb
 
 \needlines{4}
 \DWIDupcaseTARG{} means that the 
@@ -342,30 +338,23 @@ information for this compilation unit converted all source
 names to upper case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
-\bb
 \textit{A debugger should convert all names to upper case 
 when doing lookups.}
-\eb
 
 \DWIDdowncaseTARG{} means that the producer of the debugging
 information for this compilation unit converted all source
 names to lower case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
-\bb
 \textit{A debugger should convert all names to lower case 
 when doing lookups.}
-\eb
 
 \needlines{4}
 \DWIDcaseinsensitiveTARG{} means that the values of the name
 attributes reflect the names as they appear in the source
 program but that case is not significant.
 
-\bb
 \textit{A debugger should ignore case when doing lookups.}
-\eb
-
 
 \needlines{5}
 \item \hypertarget{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{}
@@ -439,16 +428,13 @@ attribute, whose value is of class \CLASSaddrptr.
 This attribute points to the beginning of the compilation
 unit's contribution to the \dotdebugaddr{} section.
 Indirect references (using \DWFORMaddrx, \DWOPaddrx, 
-\bb
 \DWOPconstx, \DWLLEbaseaddressx{}, 
 \DWLLEstartxendx{} or \DWLLEstartxlength) 
-\eb
 within the compilation unit are interpreted as indices 
 relative to this base.
 
 \needlines{5}
 \item \hypertarget{chap:DWATrnglistsbaseforrnglists}{}
-\bb 
 A \DWATrnglistsbaseDEFN\addtoindexx{ranges table base attribute}
 attribute, whose value is of class \CLASSrnglistsptr.
 This attribute points to the base of the compilation
@@ -456,17 +442,14 @@ unit's contribution to the \dotdebugrnglists{} section.
 References to range lists (using \DWFORMrnglistx)
 within the compilation unit are
 interpreted relative to this base.
-\eb
 
 \item \hypertarget{chap:DWATloclistsbaseinlocationlist}{}
-\bb
 A \DWATloclistsbase{}\addtoindexx{location table base attribute} 
 attribute, whose value is of class \CLASSloclistsptr. 
 This attribute points to the base of the compilation 
 unit's contribution to the \dotdebugloclists{} section. References 
 to location lists (using \DWFORMloclistx) within the compilation 
 unit are interpreted relative to this base.
-\eb
 \end{enumerate}
 
 The  base address of a compilation unit is defined as the
@@ -548,23 +531,17 @@ of a \DWATuseUTFeight{} attribute in the full compilation unit
 from the skeleton compilation unit.
 \item A \DWATaddrbase{} attribute.
 
-\bbpareb
-
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
 in Section \refersec{chap:fullandpartialcompilationunitentries})
-\bb
-are
-\eb 
-placed in the split full compilation unit
+are placed in the split full compilation unit
 (see \refersec{chap:splitfullcompilationunitentries}).
 The attributes provided by the skeleton compilation
 unit entry do not need to be repeated in the full compilation
 unit entry.
 
 \textit{The \DWATaddrbase{} 
-\bbeb
 and \DWATstroffsetsbase{} attributes provide context that may be 
 necessary to interpret the contents
 of the corresponding \splitDWARFobjectfile.}
@@ -605,8 +582,7 @@ split full compilation unit entry but instead are inherited
 (if present) from the corresponding skeleton compilation unit: 
 \DWATlowpc, \DWAThighpc, \DWATranges, \DWATstmtlist, \DWATcompdir, 
 \DWATstroffsetsbase, \DWATaddrbase{} and 
-\bb
-\DWATrnglistsbase.\eb}
+\DWATrnglistsbase.}
 
 \textit{The \DWATbasetypes{} attribute is not defined for a
 split full compilation unit.}
@@ -874,14 +850,11 @@ compilation unit specific \doublequote{unnamed namespace} may
 be represented by a namespace entry with no name attribute in
 the original namespace declaration entry (and therefore no name
 attribute in any namespace extension entry of this namespace).
-\bb
 C++ states that declarations in the unnamed namespace are
 implicitly available in the containing scope; a producer
 should make this effect explicit with the \DWATexportsymbols{}
 attribute, or by using a \DWTAGimportedmodule{} that is a
-sibling of the namespace entry and references it.
-\eb
-}
+sibling of the namespace entry and references it.}
 
 \textit{A compiler emitting namespace information may choose to
 explicitly represent namespace extensions, or to represent the
@@ -1487,32 +1460,19 @@ instance of the subroutine that immediately encloses the
 subroutine or entry point.
 
 In the context of supporting nested subroutines, the
-\DWATframebase{} attribute value 
-\bb
-obeys
-\eb
-the following constraints:
+\DWATframebase{} attribute value obeys the following constraints:
 
 \begin{enumerate}[1. ]
 \item 
-\bb
-It computes
-\eb
-a value that does not change during the
+It computes a value that does not change during the
 life of the subprogram, and
 
-\item The computed value 
-\bb
-is
-\eb
-unique among instances of
+\item The computed value is unique among instances of
 the same subroutine. 
 
-\bb
 \textit{For typical \DWATframebase{} use, this
 means that a recursive subroutine\textquoteright s stack frame must have
 non-zero size.}
-\eb
 
 \end{enumerate}
 
@@ -1674,15 +1634,10 @@ Attributes and children in an abstract instance are shared
 by all concrete instances (see Section \refersec{chap:concreteinstances}).
 
 A debugging information entry that is a member of an abstract
-instance tree 
-\bb
-may
-\eb
-not contain any attributes which describe
+instance tree may not contain any attributes which describe
 aspects of the subroutine which vary between distinct inlined
 expansions or distinct out-of-line expansions. 
 
-\bb
 \textit{For example,
 \addtoindexx{entry pc attribute!and abstract instance}
 the \DWATlowpc,\addtoindexx{low PC attribute!and abstract instance}
@@ -1696,7 +1651,6 @@ and
 \DWATsegment{}\addtoindexx{segment attribute!and abstract instance}
 attributes typically should be omitted; however, this list is not 
 exhaustive.}
-\eb
 
 \needlines{5}
 \textit{It would not make sense normally to put these attributes into
@@ -1722,12 +1676,7 @@ or not a given entry is abstract.
 
 Each inline expansion of a subroutine is represented
 by a debugging information entry with the 
-tag \DWTAGinlinedsubroutineTARG. 
-Each such entry 
-\bb
-is
-\eb
-be a direct
+tag \DWTAGinlinedsubroutineTARG. Each such entry is a direct
 child of the entry that represents the scope within which
 the inlining occurs.
 
@@ -1847,9 +1796,7 @@ If an entry within a concrete inlined instance tree contains
 attributes describing the 
 \addtoindexx{declaration coordinates!in concrete instance}
 \livelink{chap:declarationcoordinates}{declaration coordinates} 
-of that entry, then those attributes 
-\bbeb
-refer to the file, line
+of that entry, then those attributes refer to the file, line
 and column of the original declaration of the subroutine,
 not to the point at which it was inlined. As a consequence,
 they may usually be omitted from any entry that has an abstract
@@ -1885,11 +1832,7 @@ union, class, and interface types; and members of types. If any
 entry within a concrete inlined instance tree needs to refer
 to an entity declared within the scope of the relevant inlined
 subroutine and for which no concrete instance entry exists,
-the reference 
-\bb
-refers 
-\eb
-to the abstract instance entry.
+the reference refers to the abstract instance entry.
 
 \needlines{4}
 \item Entries in the concrete instance tree which are associated
@@ -1912,11 +1855,7 @@ for that separate debugging information entry.
 not correspond to entries in the abstract instance tree
 to describe new entities that are specific to a particular
 inlined expansion. In that case, they will not have associated
-entries in the abstract instance tree, 
-\bb
-do 
-\eb
-not contain
+entries in the abstract instance tree, do not contain
 \addtoindexx{abstract origin attribute}
 \DWATabstractorigin{} attributes, and must contain all their
 own attributes directly. This allows an abstract instance tree
@@ -2222,10 +2161,8 @@ a DWARF expression.  For indirect calls or jumps where it is unknown at
 compile time which subprogram will be called the expression computes the
 address of the subprogram that will be called.  
 
-\bb
 \textit{The DWARF expression should
 not use register or memory locations that might be clobbered by the call.}
-\eb
 
 \needlines{4}
 The call site entry may have a 
@@ -2286,7 +2223,7 @@ Each \DWTAGcallsiteparameter{} entry may have a
 which is a DWARF expression 
 which when evaluated yields the value of the parameter at the time of the call.
 
-\textit{\bbeb If it is not
+\textit{If it is not
 possible to avoid registers or memory locations that might be clobbered by
 the call in the expression, then the \DWATcallvalueNAME{} attribute should
 not be provided. The reason for the restriction is that the value of the parameter may be
@@ -2393,11 +2330,7 @@ A labeled statement is usually the target of one or more
 \needlines{4}
 A label is represented by a debugging information entry with
 \addtoindexx{label entry} the tag \DWTAGlabelTARG. 
-The entry for a label 
-\bb
-is
-\eb
-owned by
+The entry for a label is owned by
 the debugging information entry representing the scope within
 which the name of the label could be legally referenced within
 the source program.
@@ -2551,9 +2484,7 @@ the value of this attribute is the offset in bytes of the
 beginning of the address range for the scope of the entity 
 from the beginning of the first \addtoindex{range list} entry
 for the containing scope that is not a base 
-\bb
 address entry, a default location
-\eb
 entry or an end-of-list entry.
 \end{enumerate}
 
index a35810e..962982c 100644 (file)
@@ -58,39 +58,28 @@ format would be represented by a change in the
 \dotdebuginfo{}     & 2 & 3 & 4 & 5 \\
 \dotdebugline{}     & 2 & 3 & 4 & 5 \\
 \dotdebuglinestr{}  & - & - & - & 5 \\
-\bb
-\addtoindexi{\texttt{.debug\_loc}}{\texttt{.debug\_loc} (Version 4)}
-                    & * & * & * & - \\
-\dotdebugloclists{} & - & - & - & 5 
-\eb \\
+\dotdebugloc{}      & * & * & * & - \\
+\dotdebugloclists{} & - & - & - & 5 \\
 \dotdebugmacinfo{}  & * & * & * & - \\*
 \dotdebugmacro{}    & - & - & - & 5 \\
 \dotdebugnames{}    & - & - & - & 5 \\
 \dotdebugpubnames{} & 2 & 2 & 2 & - \\
 \dotdebugpubtypes{} & - & 2 & 2 & - \\
-\bb
-\addtoindexi{\texttt{.debug\_ranges}}{\texttt{.debug\_ranges} (Version 4)}
-                    & - & * & * & - \\
-\dotdebugrnglists{} & - & - & - & 5
-\eb \\
+\dotdebugranges{}   & - & * & * & - \\
+\dotdebugrnglists{} & - & - & - & 5 \\
 \dotdebugstr{}      & * & * & * & * \\
 \dotdebugstroffsets & - & - & - & 5 \\
 \dotdebugsup        & - & - & - & 5 \\
-\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}
-                    & - & - & 4 & - \\
+\dotdebugtypes{}    & - & - & 4 & - \\
 \\
 \hspace{3.5cm}\textit{(split object sections)}
 \\
 \dotdebugabbrevdwo  & - & - & - & * \\
 \dotdebuginfodwo    & - & - & - & 5 \\
 \dotdebuglinedwo    & - & - & - & 5 \\
-\bb
-\dotdebugloclistsdwo& - & - & - & 5 
-\eb \\
+\dotdebugloclistsdwo& - & - & - & 5 \\
 \dotdebugmacrodwo   & - & - & - & 5 \\
-\bb
-\dotdebugrnglistsdwo& - & - & - & 5
-\eb \\
+\dotdebugrnglistsdwo& - & - & - & 5 \\
 
 \dotdebugstrdwo     & - & - & - & * \\
 \dotdebugstroffsetsdwo 
index 2d1ad95..7294d49 100644 (file)
@@ -42,9 +42,7 @@ that do not require relocation, however, can be written to the
 relocatable object (.o) file but ignored by the linker, or they
 can be written to a separate DWARF object (.dwo{}) 
 \addtoindexx{\texttt{.dwo} file extension} file
-\bb
 that need not be accessed by the linker.
-\eb
 
 \needlines{4}
 The optional set of debugging sections includes the following:
@@ -63,7 +61,6 @@ in the \dotdebuginfo{} section.
 the debugging information entries in the \dotdebuginfodwo{}
 section. This contains the location lists normally found in 
 the \dotdebugloclists{} section.
-\bbeb
 \item
 \dotdebugstrdwo{} - Contains the string table for all indirect
 strings referenced by the debugging information in the
@@ -107,9 +104,7 @@ binary. A skeleton \dotdebuginfo{} section for each compilation unit
 contains a reference to the corresponding \texttt{.o} or \texttt{.dwo}
 file, and the \dotdebugline{} section (which is typically small
 compared to the \dotdebuginfo{} sections) is
-linked into the output binary, as is the 
-\bbeb
-\dotdebugaddr{} section.
+linked into the output binary, as is the \dotdebugaddr{} section.
 
 \needlines{6}
 The debug sections that continue to be linked into the
@@ -130,10 +125,7 @@ for the compilation unit.
 \dotdebugframe{} - Contains the frame tables.
 \item
 \dotdebuginfo{} - Contains a skeleton 
-\bb
-skeleton compilation unit DIE, which has
-\eb
-no children.
+skeleton compilation unit DIE, which has no children.
 \item
 \dotdebugline{} - Contains the line number tables.
 (These could be moved to the .dwo file, but in
@@ -151,7 +143,7 @@ building an index section.
 The section header refers to a
 compilation unit offset, which is the offset of the
 skeleton compilation unit in the \dotdebuginfo{} section.
-\bbeb
+
 \item
 \dotdebugstr{} - Contains any strings referenced by the skeleton
 \dotdebuginfo{} sections (via \DWFORMstrp{} or \DWFORMstrx{}).
@@ -161,11 +153,7 @@ the strings in the \dotdebugstr{} section (if form \DWFORMstrx{} is used).
 \end{itemize}
 
 \needlines{6}
-The skeleton 
-\bb
-compilation unit 
-\eb
-DIE may have the following attributes:
+The skeleton compilation unit DIE may have the following attributes:
 \autocols[0pt]{c}{3}{l}{
 \DWATaddrbase{},
 \DWATcompdir{},
@@ -174,7 +162,6 @@ DIE may have the following attributes:
 \DWAThighpc{},
 \DWATlowpc{},
 \DWATranges{},
-\bbeb
 \DWATstmtlist{},
 \DWATstroffsetsbase{}
 }
@@ -191,10 +178,7 @@ Relocations are neither necessary nor useful in
 \texttt{.dwo} files, because the \texttt{.dwo}  
 files contain only debugging information that does not need to be
 processed by a linker. Relocations are rendered unnecessary by 
-\bb
-these
-\eb
-strategies:
+these strategies:
 
 \begin{enumerate}[1. ]
 \item Some values needing relocation are kept in the \texttt{.o} file
@@ -209,7 +193,6 @@ in the same compilation unit.
 program address use the \DWFORMaddrx{} form, referencing a relocatable 
 value in the \dotdebugaddr{} section (which remains in the .o file).
 
-\bbpareb
 \end{enumerate}
 
 
@@ -248,9 +231,7 @@ kinds.
 \hline
 \DWATlanguage           & \chkmk  & \chkmk &           & \chkmk & \chkmk  \\
 \hline
-\bb
 \DWATloclistsbase       & \chkmk  &        &           &        &         
-\eb
 \\
 \hline
 \DWATlowpc              & \chkmk  &        &  \chkmk   &        &         \\
@@ -263,11 +244,9 @@ kinds.
 \hline
 \DWATproducer           & \chkmk  &        &           & \chkmk &         \\
 \hline
-\bb
-\DWATranges \eb         & \chkmk  &        &           & \chkmk &         \\
+\DWATranges             & \chkmk  &        &           & \chkmk &         \\
 \hline
-\bb
-\DWATrnglistsbase \eb   & \chkmk  &        &           &        &         \\
+\DWATrnglistsbase       & \chkmk  &        &           &        &         \\
 \hline
 \DWATstmtlist           & \chkmk  & \chkmk &  \chkmk   &        & \chkmk  \\
 \hline
@@ -305,14 +284,12 @@ When compiled with split DWARF, we will have two DWARF object files,
 \texttt{demo1.o} and \texttt{demo2.o}, and two \splitDWARFobjectfile{s}, 
 \texttt{demo1.dwo} and \texttt{demo2.dwo}.
 
-\bb
 In this section, we will use this example to show how the
 connections between the relocatable object file and the split
 DWARF object file are maintained through the linking process. In
 the next section, we will use this same example to show how two
 or more split DWARF object files are combined into a DWARF
 package file.
-\eb
 
 \vspace{2cm}
 \begin{figure}[ht]
@@ -419,9 +396,7 @@ class Box {
 \end{figure}
 
 \clearpage
-\bb
 \subsection{Contents of the Object Files}
-\eb
 The object files each contain the following sections of debug
 information:
 \begin{alltt}
@@ -453,7 +428,6 @@ Figure \referfol{fig:splitdwafexampleskeletondwarfdescription}.
         \DWATstmtlist: (reference to .debug_line section)
       
 \end{alltt}
-\bbeb
 \end{dwflisting}
 \caption{Split object example: skeleton DWARF description}
 \label{fig:splitdwafexampleskeletondwarfdescription}
@@ -474,13 +448,10 @@ package file.
 
 The \DWATaddrbase{} attribute contains the relocatable offset of
 this object file's contribution to the \dotdebugaddr{} section.
-\bbeb
 
 The \DWATstmtlist{} attribute contains the relocatable offset of
 this file's contribution to the \dotdebugline{} table.
 
-\bbpareb
-
 \needlines{6}
 The \dotdebugline{} section contains the full line number table for
 the compiled code in the object file. As shown in
@@ -526,17 +497,14 @@ compilation unit, and allow a DWARF consumer to map a PC value to
 a skeleton compilation unit, and then to a \splitDWARFobjectfile.
 
 
-\bb
 \subsection{Contents of the Linked Executable File}
 When \texttt{demo1.o} and \texttt{demo2.o} are linked together (along with 
 a main program and other necessary library routines that we will ignore here
 for simplicity), the resulting executable file will contain at least
 the two skeleton compilation units in the \dotdebuginfo{} section, as shown in 
 Figure \referfol{fig:splitobjectexampleexecutablefiledwarfexcerpts}.
-\eb
 
 \begin{figure}[ht]
-\bb
 \begin{dwflisting}
 \begin{alltt}
 
@@ -555,10 +523,8 @@ Figure \referfol{fig:splitobjectexampleexecutablefiledwarfexcerpts}.
 \end{dwflisting}
 \caption{Split object example: executable file DWARF excerpts}
 \label{fig:splitobjectexampleexecutablefiledwarfexcerpts}
-\eb
 \end{figure}
 
-\bb
 Each skeleton compilation unit has a \DWATstmtlist{} attribute,
 which provides the relocated offset to that compilation unit's
 contribution in the executable's \dotdebugline{} section. In this
@@ -589,7 +555,6 @@ The linked executable will also contain \dotdebugabbrev,
 \dotdebugstr{}, \dotdebugnames{} and \dotdebugaranges{} sections, each the
 result of combining and relocating the contributions from the
 relocatable object files.
-\eb
 
 \needlines{10}
 \subsection{Contents of the Split DWARF Object Files}
@@ -623,8 +588,6 @@ compilation unit.
 form code \DWFORMstrx, referring to slots in the
 \dotdebugstroffsetsdwo{} section.
 
-\bbpareb
-
 \needlines{4}
 \item References to relocatable addresses in the object file 
 use the form code \DWFORMaddrx, referring to slots in the
@@ -781,17 +744,15 @@ Section \refersec{app:dwarfpackagefileexample} presents
 an example of a DWARF package file.
 
 \needlines{4}
-\bb
 The \dotdebugrnglistsdwo{} section contains range lists referenced by any
 \DWATranges{} attributes in the split DWARF object. In our example,
 \texttt{demo1.o} would have just a single range list for the compilation unit,
 with range list entries for the function \texttt{Box::contains} and for
 out-of-line copies of the inline functions \texttt{Point::x} and \texttt{Point::y}.
-\eb
 
 The \dotdebugloclistsdwo{} section contains the location lists referenced
 by \DWATlocation{} attributes in the \dotdebuginfodwo{} section. This
-section has a similar format to the \bbeb\dotdebugloclists{} section in a
+section has a similar format to the \dotdebugloclists{} section in a
 non-split object, but it has some small differences as explained
 in Section \refersec{datarep:locationlists}. 
 
@@ -933,9 +894,7 @@ offset& (DW\_LLE\_*)
 \label{fig:splitobjectexampledemotwodwodwarfdebuglocdwoexcerpts}
 \end{figure}
 
-\bb
 In each \DWLLEstartlength{} entry, 
-\eb
 the start field is the index
 of a slot in the \dotdebugaddr{} section, relative to the base
 offset defined by the compilations unit's \DWATaddrbase{}
@@ -998,8 +957,11 @@ that belongs to that unit.
 
 For example, consider a package file, \texttt{demo.dwp}, formed by
 combining \texttt{demo1.dwo} and \texttt{demo2.dwo} from the previous example
-(see Appendix \refersec{app:splitdwarfobjectfileexample}). The
-resulting package file would contain the sections shown in Figure
+(see Appendix \refersec{app:splitdwarfobjectfileexample}). 
+For an executable file named "\texttt{demo}" (or "\texttt{demo.exe}"), a debugger would
+typically expect to find \texttt{demo.dwp} in the same directory as the
+executable file.
+The resulting package file would contain the sections shown in Figure
 \refersec{fig:sectionsandcontributionsinapackagefile}, 
 with contributions from each input file as shown.
 
@@ -1020,11 +982,9 @@ with contributions from each input file as shown.
      type unit for class \texttt{Point} from \texttt{demo1.dwo} \newline
      type unit for class \texttt{Line} from \texttt{demo2.dwo}  \\
 \hline
-\bb
   \dotdebugrnglistsdwo{} 
 &    \dotdebugrnglistsdwo{} from \texttt{demo1.dwo} \newline
-     \dotdebugrnglistsdwo{} from \texttt{demo2.dwo}
-\eb  \\
+     \dotdebugrnglistsdwo{} from \texttt{demo2.dwo} \\
 \hline
   \dotdebugloclistsdwo{}
 &    \dotdebugloclistsdwo{} from \texttt{demo1.dwo} \newline
@@ -1054,10 +1014,7 @@ with contributions from each input file as shown.
 \end{figure}
 
 \needlines{4}
-The \dotdebugabbrevdwo{}, 
-\bb
-\dotdebugrnglistsdwo{}, 
-\eb
+The \dotdebugabbrevdwo{}, \dotdebugrnglistsdwo{}, 
 \dotdebugloclistsdwo{} and \dotdebuglinedwo{}
 sections are copied over from the two \texttt{.dwo} files as
 individual contributions to the corresponding sections in the
@@ -1113,21 +1070,21 @@ the combined \dotdebugloclistsdwo{} section.
   \multicolumn{7}{c}{Section header} \\
 \hline \\
   \multicolumn{2}{l}{Version:}&                 5  &&&&&\\
-  \multicolumn{2}{l}{Number of columns:}&       6\bbeb  &&&&&\\
+  \multicolumn{2}{l}{Number of columns:}&       6  &&&&&\\
   \multicolumn{2}{l}{Number of used entries:}&  2  &&&&&\\
   \multicolumn{2}{l}{Number of slots:}&         16 &&&&&\\
 \\
   \multicolumn{7}{c}{Offset table} \\
   \hline
-\bbeb  slot&  signature&                       info&   abbrev&      loc&     line& str\_off&    rng \\
-\bbeb    14& \texttt{0xb5f0ecf455e7e97e} &      325&      452&       84&       52&       72&    350 \\
-\bbeb    15& \texttt{0x044e413b8a2d1b8f} &        0&        0&        0&        0&        0&      0 \\
+  slot&  signature&                       info&   abbrev&      loc&     line& str\_off&    rng \\
+    14& \texttt{0xb5f0ecf455e7e97e} &      325&      452&       84&       52&       72&    350 \\
+    15& \texttt{0x044e413b8a2d1b8f} &        0&        0&        0&        0&        0&      0 \\
 \\
   \multicolumn{7}{c}{Size table} \\
   \hline
-\bbeb  slot&                    &     info&   abbrev&      loc&     line& str\_off&    rng \\
-\bbeb    14&                    &      673&      593&       93&       52&      120&     34 \\
-\bbeb    15&                    &      325&      452&       84&       52&       72&     15 \\
+  slot&                    &     info&   abbrev&      loc&     line& str\_off&    rng \\
+    14&                    &      673&      593&       93&       52&      120&     34 \\
+    15&                    &      325&      452&       84&       52&       72&     15 \\
 \\ \hline 
 \end{tabular}
 \end{center}
index 595a60c..e121eb5 100644 (file)
@@ -465,35 +465,25 @@ presentation.
 Name&Meaning\\ \hline
 \DWTAGatomictypeTARG{} & 
     atomic qualified type 
-\bb
     (for example, in C) 
-\eb
     \addtoindexx{atomic qualified type entry} \addtoindexx{C} \\
 \DWTAGconsttypeTARG{} &  
     const qualified type 
-\bb
     (for example in C, C++)
-\eb
     \addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
-    \bb
 \DWTAGimmutabletypeTARG &
     immutable type 
     (for example, in \addtoindex{D})
-\eb
     \addtoindexx{immutable type} \\
 \DWTAGpackedtypeTARG & 
     packed type\addtoindexx{packed type entry} 
-\bb 
     (for example in Ada, Pascal)
-\eb
     \addtoindexx{packed qualified type entry} \addtoindexx{Ada} \addtoindexx{Pascal} \\
 \DWTAGpointertypeTARG{} & 
     pointer to an object of the type being modified 
     \addtoindexx{pointer qualified type entry} \\
 \DWTAGreferencetypeTARG & 
-\bb
     reference to (lvalue of) an object of the type \mbox{being} modified 
-\eb
     \addtoindexx{reference type entry}
     \addtoindexx{reference qualified type entry} \\
 \DWTAGrestricttypeTARG &  
@@ -501,24 +491,18 @@ Name&Meaning\\ \hline
     \addtoindexx{restricted type entry}
     \addtoindexx{restrict qualified type} \addtoindexx{C} \\
 \DWTAGrvaluereferencetypeTARG{} &
-    rvalue reference to an object of the type \mbox{being} modified 
-\bb 
+    rvalue reference to an object of the type \mbox{being} modified  
     (for example, in \addtoindex{C++}) 
-\eb
     \addtoindexx{rvalue reference type entry}
     \addtoindexx{restricted type entry}
     \addtoindexx{rvalue reference qualified type entry} \\
 \DWTAGsharedtypeTARG &
     shared qualified type 
-\bb 
     (for example, in \addtoindex{UPC}) 
-\eb
     \addtoindexx{shared qualified type entry} \\
 \DWTAGvolatiletypeTARG & 
     volatile qualified type 
-\bb
     (for example, in \addtoindex{C}, \addtoindex{C++}) 
-\eb
     \addtoindexx{volatile qualified type entry} \\
 \hline
 \end{tabular}
@@ -915,10 +899,7 @@ A structure type, union type or class type entry may have a
 \DWATcallingconventionDEFN{} attribute,
 \addtoindexx{calling convention attribute!for types} 
 whose value indicates whether a value of the type 
-\bb
-is
-\eb
-passed by reference 
+is passed by reference 
 or passed by value. The set of calling convention codes for use with types 
 \addtoindexx{calling convention codes!for types}
 is\hypertarget{chap:DWATcallingconventionfortypes}{}
@@ -1430,17 +1411,12 @@ template instantiation and that special compilation
 unit has a different name from the compilation unit containing
 the template definition, the name attribute for the debugging
 information entry representing the special compilation unit
-\bb
-is
-\eb
-empty or omitted.
+is empty or omitted.
 
 %\needlines{4}
 \item If the class type entry representing the template
 instantiation or any of its child entries contains declaration
-coordinate attributes, those attributes 
-\bbeb 
-refer to
+coordinate attributes, those attributes refer to
 the source for the template definition, not to any source
 generated artificially by the compiler.
 \end{enumerate}
@@ -1569,10 +1545,7 @@ The condition entry owns \DWTAGconstant{} and/or
 \DWTAGsubrangetype{} entries that describe the constant
 values associated with the condition. If any child entry 
 \addtoindexx{type attribute}
-has a \DWATtype{} attribute, that attribute 
-\bb
-describes
-\eb
+has a \DWATtype{} attribute, that attribute describes
 a type compatible with the comparison type (according to the 
 source language); otherwise the child\textquoteright{}s type 
 is the same as the comparison type.