Draft document for Committee review.
authorRon Brender <ron.brender@gmail.com>
Tue, 14 Jul 2015 22:29:32 +0000 (18:29 -0400)
committerRon Brender <ron.brender@gmail.com>
Tue, 14 Jul 2015 22:29:32 +0000 (18:29 -0400)
Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/acceleratednameaccessdiagram.png [deleted file]
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/dwarfnamecmds.tex
dwarf5/latexdoc/foreword4.1.tex [deleted file]
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/splitobjects.tex

diff --git a/dwarf5/latexdoc/acceleratednameaccessdiagram.png b/dwarf5/latexdoc/acceleratednameaccessdiagram.png
deleted file mode 100644 (file)
index 94d6a14..0000000
Binary files a/dwarf5/latexdoc/acceleratednameaccessdiagram.png and /dev/null differ
index f4d1593..7038ebf 100644 (file)
@@ -15,7 +15,8 @@ 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
-6/30-7/10/2015  & Revise 3.1 Compilation Units, more editorial work VIII \\
+6/30-7/14/2015  & Revise 3.1 Compilation Units, replace Figure 6.1, \\
+                & add trial Selected Glossary appendix, more editorial work IX \\
 6/24-29/2015    & More editorial work VIII \\
 6/24/2015       & 150608.1 (DW\_AT\_dwo\_id value is implementation-defined) \\
 6/14-20/2015    & More editorial work VII \\
index 9341a32..4ee7b05 100644 (file)
@@ -219,6 +219,7 @@ space of the program and require relocation.
 
 \end{itemize}
 
+\needlines{4}
 \textit{Note that operands of classes \CLASSblock, \CLASSconstant{} and 
 \CLASSflag{} do not require relocation. Attribute operands that use 
 form \DWFORMstring{} also do not require relocation. Further, 
@@ -272,8 +273,11 @@ section. The string offsets table is necessary only if
 the skeleton compilation unit uses the \DWFORMstrx{} form.
 \end{itemize}
 The attributes contained in the skeleton compilation
-unit can be used by a DWARF consumer to find the object file
-or DWARF object file that contains the second partition.
+unit can be used by a DWARF consumer to find the 
+\bb
+split or hybrid 
+\eb
+DWARF object file that contains the second partition.
 
 \subsubsection{Second Partition (Unlinked or In \texttt{.dwo} File)}
 The second partition contains the debugging information that
@@ -332,6 +336,7 @@ to a debugging information section (for example, \dotdebuginfo),
 applies also to the corresponding split DWARF section (for example,
 \dotdebuginfodwo).
 
+\needlines{4}
 Split DWARF object files do not get linked with any other files,
 therefore references between sections must not make use of
 normal object file relocation information. As a result, symbolic
@@ -379,7 +384,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{5}
+\needlines{10}
 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:
@@ -445,15 +450,6 @@ sections:
     \dotdebugstroffsetsdwo
 \end{alltt}
 
-\textit{Merging of type units with the same type signature
-across \texttt{.dwo} files when creating a \texttt{.dwp} file
-can be achieved using COMDAT-based techniques similar to those
-described in Appendix 
-\refersec{app:dwarfcompressionandduplicateeliminationinformative}.
-In fact, this is necessary in order to combine all \dotdebuginfodwo{}
-section contributions into a single \dotdebuginfodwo{} section in a
-\texttt{.dwp} file.}
-
 \subsubsection{Format of the CU and TU Index Sections}
 Both index sections have the same format, and serve to map a
 64-bit signature to a set of contributions to the debug sections.
@@ -2095,8 +2091,8 @@ densely that exploits the assumption that most integers are
 small in magnitude.
 
 \textit{This encoding is equally suitable whether the target machine
-architecture represents data in big\dash\ endian or little\dash endian
-\byteorder. It is \doublequote{little\dash endian} only in the sense that it
+architecture represents data in big-endian or little-endian
+\byteorder. It is \doublequote{little-endian} only in the sense that it
 avoids using space to represent the \doublequote{big} end of an
 unsigned integer, when the big end is all zeroes or sign
 extension bits.}
index 0c2e0f7..c22348b 100644 (file)
@@ -45,11 +45,11 @@ or shareable file and a related \addtoindex{supplementary object file}.
                                      \dotdebugnames  
                                      \end{tabular}};
                                       
-\draw[thick,angle 90-]                  (zcircs) -- (zsectinf);
-\draw[thick,-to reversed]              (zlinka) -- (zsectara);
-\draw[thick,angle 90-]                         (zsectinf) -- (zlinka);
-\draw[thick,-angle 90]                         (zlinkb) -- (zsectinf);
-\draw[thick,to reversed-]              (zsectpub) -- (zlinkb);
+\draw[thin,triangle 45-]            (zcircs) -- (zsectinf);
+\draw[thin,-to reversed]            (zlinka) -- (zsectara);
+\draw[thin,triangle 45-]            (zsectinf) -- (zlinka);
+\draw[thin,-triangle 45]            (zlinkb) -- (zsectinf);
+\draw[thin,to reversed-]           (zsectpub) -- (zlinkb);
 
 % The second column, similarly
 %
@@ -80,15 +80,15 @@ or shareable file and a related \addtoindex{supplementary object file}.
 
 % Links between first and second columns
 %
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkc.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkd.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinke.west);
-\draw[<->,thick]               (zsectinf) -- (zlinkf.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkg.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkh.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinki.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkj.west);
-\draw[thick,to reversed-]      (zsectinf) -- (zlinkk.north west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkc.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkd.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinke.west);
+\draw[thin, triangle 45-triangle 45] (zsectinf) -- (zlinkf.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkg.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkh.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinki.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkj.west);
+\draw[thin,to reversed-]            (zsectinf) -- (zlinkk.north west);
 
 % The third column
 %
@@ -115,25 +115,25 @@ or shareable file and a related \addtoindex{supplementary object file}.
                                        \end{tabular} (o)};
 \node(zsectadx) at (10,  -0.25) [sect] {\dotdebugaddr{}};
 
-\draw[thick,to reversed-]      (zsectstx) -- (zlinkl);
-\draw[thick,-angle 90]         (zlinkl) -- (zsectstr);
-\draw[thick,to reversed-]       (zsectmac) -- (zlinkm);
-\draw[thick,-angle 90]          (zlinkm) -- (zsectstx);
-\draw[thick,to reversed-]       (zsectmac) -- (zlinkn);
-\draw[thick,-angle 90]          (zlinkn) -- (zsectlin);
-\draw[thick,to reversed-]       (zsectloc) -- (zlinko);
-\draw[thick,-angle 90]          (zlinko) -- (zsectadx);
+\draw[thin,to reversed-]       (zsectstx) -- (zlinkl);
+\draw[thin,-triangle 45]       (zlinkl) -- (zsectstr);
+\draw[thin,to reversed-]       (zsectmac) -- (zlinkm);
+\draw[thin,-triangle 45]       (zlinkm) -- (zsectstx);
+\draw[thin,to reversed-]       (zsectmac) -- (zlinkn);
+\draw[thin,-triangle 45]       (zlinkn) -- (zsectlin);
+\draw[thin,to reversed-]       (zsectloc) -- (zlinko);
+\draw[thin,-triangle 45]       (zlinko) -- (zsectadx);
 
 % Links between second and third colums
 %
-\draw[thick,-angle 90]         (zlinkc.east) -- (zsectabb.west);
-\draw[thick,-angle 90]         (zlinkd.east) -- (zsectstr.west);
-\draw[thick,-angle 90]         (zlinke.east) -- (zsectstx.west);
-\draw[thick,-angle 90]         (zlinkg.east) -- (zsectloc.west);
-\draw[thick,-angle 90]         (zlinkh.east) -- (zsectran.west);
-\draw[thick,-angle 90]         (zlinki.east) -- (zsectmac.west);
-\draw[thick,-angle 90]         (zlinkj.east) -- (zsectlin.west);
-\draw[thick,-angle 90]         (zlinkk.east) -- (zsectadx.west);
+\draw[thin,-triangle 45]       (zlinkc.east) -- (zsectabb.west);
+\draw[thin,-triangle 45]       (zlinkd.east) -- (zsectstr.west);
+\draw[thin,-triangle 45]       (zlinke.east) -- (zsectstx.west);
+\draw[thin,-triangle 45]       (zlinkg.east) -- (zsectloc.west);
+\draw[thin,-triangle 45]       (zlinkh.east) -- (zsectran.west);
+\draw[thin,-triangle 45]       (zlinki.east) -- (zsectmac.west);
+\draw[thin,-triangle 45]       (zlinkj.east) -- (zsectlin.west);
+\draw[thin,-triangle 45]       (zlinkk.east) -- (zsectadx.west);
 
 % The fourth column
 %
@@ -150,12 +150,12 @@ or shareable file and a related \addtoindex{supplementary object file}.
 \node(zsectlns) at (15.6,  2.0) [sect]  {\dotdebuglinestr};
 \node(zcircsp)  at (15.6,  0.5) [circ]  {(s)'};             
              
-\draw[thick,to reversed-]       (zsectmac.east) -- (zlinky);
-\draw[thick,-angle 90]          (zlinky) -- (zsectstr.east);
-\draw[<->,thick]               (zsectmac.east) -- (zlinkz);
-\draw[thick,to reversed-]       (zsectlin.east) -- (zlinkx);
-\draw[thick,-angle 90]          (zlinkx) -- (zsectlns);
-\draw[thick,-angle 90]          (zcircsp) -- (zsectlns);
+\draw[thin,to reversed-]       (zsectmac.east) -- (zlinky);
+\draw[thin,-triangle 45]       (zlinky) -- (zsectstr.east);
+\draw[triangle 45-triangle 45] (zsectmac.east) -- (zlinkz);
+\draw[thin,to reversed-]       (zsectlin.east) -- (zlinkx);
+\draw[thin,-triangle 45]       (zlinkx) -- (zsectlns);
+\draw[thin,-triangle 45]       (zcircsp) -- (zsectlns);
 
 \end{tikzpicture}
 \vspace{5mm}
@@ -337,7 +337,7 @@ The circled (s) connects to the circled
      link/.style={rectangle,                       draw,
         inner sep=.2cm, minimum width=4.5cm}]
 
-\fill[yellow!50] (7.5,-1) -- (7.5,14.5) -- (19,14.5) -- (19,-1) -- cycle;
+\fill[yellow!25] (7.5,-1) -- (7.5,14.5) -- (19,14.5) -- (19,-1) -- cycle;
 
 \node(ysectabb)    at ( 5, 13.5) [sect] {\dotdebugabbrev};
 \node(ysectadd)    at ( 2, 12.0) [sect] {\dotdebugaddr};
@@ -353,15 +353,15 @@ The circled (s) connects to the circled
 \node(ysectinf)    at ( 5,  7) [sect] {\begin{tabular}{c}
                                          ~\\
                                          \dotdebuginfo \\
-                                         skeleton\\
+                                         (skeleton CU)\\
                                          ~
                                          \end{tabular}};
 
 \node(ysectinfdwo) at (10.5,7) [sect] {\begin{tabular}{c}
                                          \dotdebuginfodwo \\
-                                         One CU, possibly \\
+                                         (one CU, possibly \\
                                          multiple COMDAT \\
-                                         type units
+                                         type units)
                                          \end{tabular}};
 
 \node(ysectabbdwo) at (10.5, 13.5) [sect] {\dotdebugabbrevdwo};
@@ -371,32 +371,32 @@ The circled (s) connects to the circled
 \node(ysectstrdwo) at (13.0,  2.0) [sect] {\dotdebugstrdwo};
 \node(ysectstodwo) at (10.5,  0.0) [sect] {\dotdebugstroffsetsdwo};
 
-\draw[thick,-angle 90] (ysectinf) -- (ysectabb) node[midway, right] {(c)};
-\draw[thick,-angle 90] (ysectinf) -- (ysectadd) node[midway, right] {(k)};
-\draw[thick,-angle 90] (ysectara.east) -- (ysectinf) node[midway, left] {(a)};
-\draw[thick,-angle 90] (ysectinf) -- (ysectlin.east) node[midway, above] {(h)};
-\draw[thick,-angle 90] (ysectlin) -- (ysectlis) node[midway, right] {(l)};
-\draw[thick,-angle 90] (ysectnam.east) -- (ysectinf) node[midway, left] {(b)};
-\draw[thick,-angle 90] (ysectinf) -- (ysectran.east) node[left, near end] {(i)};
-\draw[thick,-angle 90] (ysectinf) -- (ysectstr) node[midway, right] {(d)};
-\draw[thick,-angle 90] (ysectinf) -- (ysectsto) node[midway, right] {(e)};
-\draw[thick,-angle 90] (ysectsto) -- (ysectstr) node[midway, right] {(l)};
-
-\draw[dashed, thick,-angle 90]  (ysectinf) .. controls (7.5, 12) ..(ysectinfdwo) 
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectabb) node[midway, right] {(c)};
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectadd) node[midway, right] {(k)};
+\draw[thin,-triangle 45]       (ysectara.east) -- (ysectinf) node[midway, left] {(a)};
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectlin.east) node[midway, above] {(h)};
+\draw[thin,-triangle 45]       (ysectlin) -- (ysectlis) node[midway, right] {(l)};
+\draw[thin,-triangle 45]       (ysectnam.east) -- (ysectinf) node[midway, left] {(b)};
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectran.east) node[left, near end] {(i)};
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectstr) node[midway, right] {(d)};
+\draw[thin,-triangle 45]       (ysectinf) -- (ysectsto) node[midway, right] {(e)};
+\draw[thin,-triangle 45]       (ysectsto) -- (ysectstr) node[midway, right] {(l)};
+
+\draw[dashed, thick,-triangle 45]  (ysectinf) .. controls (7.5, 12) ..(ysectinfdwo) 
                                                        node[midway, above] {(did)};
 
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectabbdwo) node[midway, right] {(co)};
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectlindwo.west) node[midway, above] {(ho)};
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectlocdwo.west) node[midway, below] {(jo)};
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectmacdwo.west) node[near end, above] {(go)};
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectstrdwo) node[midway, right] {(do)};
-\draw[thick,-angle 90]  (ysectinfdwo) -- (ysectstodwo) node[midway, left] {(eo)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectabbdwo) node[midway, right] {(co)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectlindwo.west) node[midway, above] {(ho)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectlocdwo.west) node[midway, below] {(jo)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectmacdwo.west) node[near end, above] {(go)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectstrdwo) node[midway, right] {(do)};
+\draw[thin,-triangle 45]  (ysectinfdwo) -- (ysectstodwo) node[midway, left] {(eo)};
 
-\draw[thick,-angle 90]  (ysectstodwo) -- (ysectstrdwo) node[near end, below] {(lo)};
-\draw[thick,-angle 90]  (ysectmacdwo) -- (ysectstrdwo) node[midway, left] {(po)};
-\draw[thick,-angle 90]  (ysectmacdwo) .. controls (16.5, 1) .. (ysectstodwo.east)
+\draw[thin,-triangle 45]  (ysectstodwo) -- (ysectstrdwo) node[near end, below] {(lo)};
+\draw[thin,-triangle 45]  (ysectmacdwo) -- (ysectstrdwo) node[midway, left] {(po)};
+\draw[thin,-triangle 45]  (ysectmacdwo) .. controls (16.5, 1) .. (ysectstodwo.east)
                                                        node[near start, left] {(mo)};
-\draw[thick,-angle 90]  (ysectlindwo.east) .. controls (19,4) and (18, 0) .. (ysectstodwo.east)
+\draw[thin,-triangle 45]  (ysectlindwo.east) .. controls (19,4) and (18, 0) .. (ysectstodwo.east)
                                                        node[very near start, left] {(lmo)};
 
 \draw (0,  14) node {\begin{tabular}{l} Skeleton DWARF \\ in executable \end{tabular}};
index 149a9d7..9c344b2 100644 (file)
@@ -3,7 +3,7 @@
 % 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}{July 10, 2015}
+\newcommand{\docdate}{July 14, 2015}
 %
 \usepackage{ifthen}
 \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
@@ -327,11 +327,11 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \setcounter{secnumdepth}{5}
 
 \include{introduction}                  %\emptypage
-\include{generaldescription}            %\emptypage
+\include{generaldescription}            \emptypage
 \include{programscope}                  \emptypage
 \include{dataobject}                    %\emptypage
 \include{typeentries}                   %\emptypage
-\include{otherdebugginginformation}    \emptypage
+\include{otherdebugginginformation}    %\emptypage
 \include{datarepresentation}            \emptypage
 
 %  The \appendix command toggles us into appendix chapters
@@ -348,8 +348,6 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \ifthenelse{\boolean{Trial2ReGlossary}}
     {
     \include{selectedglossary}          %\emptypage
-    \clearpage
-    \include{unitattributecomparison}   %\emptypage
     }{}
 
 \printindex
index 0880d57..7b19227 100644 (file)
 \newcommand{\dotdebugcuindex}{\addtoindex{\texttt{.debug\_cu\_index}}}
 \newcommand{\dotdebugtuindex}{\addtoindex{\texttt{.debug\_tu\_index}}}
 %
+\newcommand{\dotdwo}{\texttt{.dwp}}
+%
 \newcommand{\dotdata}{\addtoindex{\texttt{.data}}}
 \newcommand{\dottext}{\addtoindex{\texttt{.text}}}
 %
 \newcommand{\typeunitset}{\addtoindex{type unit set}}
 \newcommand{\byteorder}{\addtoindex{byte order}}
 \newcommand{\associatedcompilationunit}{\addtoindex{associated compilation unit}}
-\newcommand{\chkmk}{{\small$\surd$}}             % Check mark
+\newcommand{\chkmk}{{\footnotesize$\surd$}}             % Check mark
 %
 % Anti-ligature commands added because \/ and {} don't work for unknown reasons
 % nor does the microtext package DisableLigatures command...???
diff --git a/dwarf5/latexdoc/foreword4.1.tex b/dwarf5/latexdoc/foreword4.1.tex
deleted file mode 100644 (file)
index f616daf..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\renewcommand{\abstractname}{Foreword to Version 4.1}
-\setlength{\parindent}{0pt}
-\begin{abstract}
-\nonzeroparskip
-\setlength{\parindent}{0pt}
-\ \break
-This version of the DWARF Debugging Information Format is first and foremost 
-a re-implementation of the Version 4 document using the \LaTeX\  
-document preparation system.
-There are no substantive changes compared to the Version 4 document.
-The main presentational change is to convert many figures to proper
-tables and to present programming language source and DWARF listings
-in a boxed format.
-Otherwise there are very few even minor editorial changes (other than
-those sometimes mandated by the underlying technology).
-
-If any substantive descrepancies are discovered between these two documents,
-please bring them to the attention of the DWARF Debugging Information Format Committee.
-\end{abstract}
index 1f23d71..a873b79 100644 (file)
@@ -1185,7 +1185,7 @@ of the register together with the given base type, while the other operations
 push the result of adding the contents of a register to a given
 signed offset together with the \specialaddresstype.
 
-\needlines{4}
+\needlines{8}
 \begin{enumerate}[1. ]
 \itembfnl{\DWOPfbregTARG}
 The \DWOPfbregNAME{} operation provides a 
@@ -1245,6 +1245,7 @@ same requirement on the popped values, but push a value together
 with the same type as the popped values.
 All other operations push a value together with the \specialaddresstype.
 
+\needlines{4}
 \begin{enumerate}[1. ]
 \itembfnl{\DWOPdupTARG}
 The \DWOPdupNAME{} operation duplicates the value (including its 
@@ -1982,6 +1983,7 @@ register but not in memory. The operations in this section are
 used to describe values that exist neither in memory nor in a
 single register.}
 
+\needlines{4}
 \subsubsubsection{Empty Location Descriptions}
 An \addtoindex{empty location description}
 consists of a DWARF expression
@@ -2087,7 +2089,7 @@ determined by the closest preceding base address selection
 entry in the same location list. If there is
 no such selection entry, then the applicable base address
 defaults to the base address of the compilation unit (see
-Section \refersec{chap:normalandpartialcompilationunitentries}).  
+Section \refersec{chap:fullandpartialcompilationunitentries}).  
 
 \textit{In the case of a compilation unit where all of
 the machine code is contained in a single contiguous section,
index 39a51bb..8970dbe 100644 (file)
@@ -169,97 +169,117 @@ Figure \referfol{fig:nameindexlayout}.
     name in the name list.
 \end{enumerate}
 
-\begin{figure}[t]
+\begin{figure}[p]
+\bb
+\begin{center}
+\newcommand{\thisblue}{blue!10}
+\newcommand{\thisyellow}{yellow!20}
+\newcommand{\invispblu}{\textcolor{\thisblue}{p}}
+\newcommand{\invispyel}{\textcolor{\thisyellow}{p}}
   \begin{tikzpicture}[every node/.style={draw, anchor=text,
         node distance=2.5cm,
         text width=3.5cm, font=\normalsize},
         description/.style={
           draw=none,
-          font=\em\footnotesize,
+          font=\em\small,
           node distance=5cm,
           text width=5cm
         },
         table/.style={
-          font=\scriptsize,
+          font=\small,
           draw=black,
           rectangle split,
-          fill=yellow!10
+          fill=\thisyellow
         },
         caption/.style={
           anchor=south,
-          font=\scriptsize,
+          font=\small,
           draw=none
         }]
-    \node (header) [font=\footnotesize,
-                    fill=blue!10,
+    \node (header) [font=\small,
+                    fill=\thisblue,
                     rectangle split,
                     rectangle split allocate boxes=8,
-                    rectangle split parts=8]
-          {Header
+                    rectangle split parts=8] at (0, -1.3)
+          {Header\invispblu
             \nodepart{two}
-            CU list
+            CU list\invispblu
             \nodepart{three}
-            Local TU list
+            Local TU list\invispblu
             \nodepart{four}
-            Foreign TU list
+            Foreign TU list\invispblu
             \nodepart{five}
-            Hash table
+            Hash table\invispblu
             \nodepart{six}
-            Name table
+            Name table\invispblu
             \nodepart{seven}
-            Abbrev table
+            Abbrev table\invispblu
             \nodepart{eight}
-            Entry pool
+            Entry pool\invispblu
           };
+    \draw node [caption] at (header.north) {Name Index} ;
+
     \node (cuofs) [table,
                    rectangle split allocate boxes=4,
-                   rectangle split parts=4]  at (6,0)
-         {CU 0 offset
+                   rectangle split parts=4]  at (7.5,0)
+         {CU 0 offset\invispyel
           \nodepart{two}
-          CU 1 offset
+          CU 1 offset\invispyel
           \nodepart{three}
-          CU 2 offset
+          CU 2 offset\invispyel
           \nodepart{four}
           \dots
          };
-    \node (cusecofs) [description,right of=cuofs] {section offset of CU header} ;
+        \node (cusecofs) [description,right of=cuofs] {section offset \\ of CU header} ;
     \node (tuofs) [below of=cuofs,
                    table,
                    rectangle split allocate boxes=4,
                    rectangle split parts=4]
-         {TU 0 offset
+         {TU 0 offset\invispyel
           \nodepart{two}
-          TU 1 offset
+          TU 1 offset\invispyel
           \nodepart{three}
-          TU 2 offset
+          TU 2 offset\invispyel
           \nodepart{four}
           \dots
          };
-    \node (tusecofs) [description,right of=tuofs] {section offset of TU header} ;
-    \node (tusigs) [below of=tuofs, table,
+    \node (tusecofs) [description,right of=tuofs] {section offset \\ of TU header} ;
+    \node (tusigs) [below of=tuofs, 
+                    table,
                     rectangle split allocate boxes=4,
                     rectangle split parts=4]
-         {TU $n$ sig.
+         {TU $n$ sig.\invispyel
           \nodepart{two}
-          TU $n+1$ sig.
+          TU $n+1$ sig.\invispyel
           \nodepart{three}
-          TU $n+2$ sig.
+          TU $n+2$ sig.\invispyel
           \nodepart{four}
           \dots
          };
-   \node (typesigs) [description,right of=tusigs] {type signature of foreign TU} ;
-   \matrix (hashtable) [draw,style=dashed] at (2, -9)
+   \node (typesigs) [description,right of=tusigs] {type signature \\ of foreign TU} ;
+
+   \matrix (hashtable) [draw,style=dashed,column sep=8mm] at (0, -10)
            {\node (buckets) [style=solid, table, text width=3cm,
                              rectangle split allocate boxes=4,
                              rectangle split parts=4]
-                  {index to hashes} ;
-            \draw node [caption] at (buckets.north) {Buckets} ;
+                  {index to hashes\invispyel
+                  \nodepart{two}\invispyel
+                  \nodepart{three}\invispyel
+                  \nodepart{four}\dots
+                  } ;
+            \draw node [caption] at (buckets.north) {~Buckets} ;
             &
             \node (hashes) [style=solid, table, text width=3cm,
                             rectangle split allocate boxes=6,
                             rectangle split parts=6]
-                  {hash value} ;
-            \draw node [caption] at (hashes.north) {Hashes} ;
+                  {hash value\invispyel
+                  \nodepart{two}\invispyel
+                  \nodepart{three}\invispyel
+                  \nodepart{four}\invispyel
+                  \nodepart{five}\invispyel
+                  \nodepart{six}\invispyel
+                  } ;
+            \draw node [caption] at (hashes.north) {~Hashes} ;
             \\
            };
     \node (names) [right of=hashes, node distance=5cm,
@@ -267,34 +287,53 @@ Figure \referfol{fig:nameindexlayout}.
                    table,
                    rectangle split allocate boxes=6,
                    rectangle split parts=6]
-          {strp \hspace{4em} entry };
+          {strp \hspace{1cm} entry
+           \nodepart{two}\invispyel
+           \nodepart{three}\invispyel
+           \nodepart{four}\invispyel
+           \nodepart{five}\invispyel
+           \nodepart{six}\invispyel
+          };
     \draw node [caption] at (names.north) {Names} ;
     \path (names.north) edge (names.south) ;
 
-    \path[->]
-    (header.two east)    edge (cuofs.west)
-    (header.three east)  edge (tuofs.west)
-    (header.four east)   edge (tusigs.west)
-    (header.five east)   edge (hashtable)
-    (cuofs)              edge (cusecofs)
-    (tuofs)              edge (tusecofs)
-    (tusigs)             edge (typesigs)
-    (buckets.one east)   edge (hashes.one west)
-    (buckets.two east)   edge (hashes.three west)
-    (buckets.three east) edge (hashes.six west)
-    (hashes.one east)    edge (names.one west)
-    (hashes.two east)    edge (names.two west)
-    (hashes.three east)  edge (names.three west)
-    (hashes.four east)   edge (names.four west)
-    (hashes.five east)   edge (names.five west)
-    (hashes.six east)    edge (names.six west)
-    ;
-    \draw[->] (header.six east)
-      .. controls (buckets.north) and (tusigs.south west) ..
-      (names.north west) ;
+    \draw[thick, double distance=3pt, implies-space] (header.two east)   -- (cuofs.west) ;
+    \draw[thick, double distance=3pt, implies-space] (header.three east) -- (tuofs.west) ;
+    \draw[thick, double distance=3pt, implies-space] (header.four east)  -- (tusigs.west) ;
+
+    \path[-triangle 45]
+        (cuofs)              edge (cusecofs)
+        (tuofs)              edge (tusecofs)
+        (tusigs)             edge (typesigs)
+        (buckets.one east)   edge (hashes.one west)
+        (buckets.two east)   edge (hashes.three west)
+        (buckets.three east) edge (hashes.six west)
+        ;
+    \path[loosely dashed, thin, open triangle 45-open triangle 45]
+        (hashes.one east)    edge (names.one west)
+        (hashes.two east)    edge (names.two west)
+        (hashes.three east)  edge (names.three west)
+        (hashes.four east)   edge (names.four west)
+        (hashes.five east)   edge (names.five west)
+        (hashes.six east)    edge (names.six west)
+        ;
+    \draw[thick, double distance=3pt, implies-space] (header.five east) 
+        .. controls +(south east:2cm) .. (hashtable.north) ;
+    \draw[thick, double distance=3pt, implies-space] (header.six east)
+        .. controls (hashes.north) and (tusigs.south east) .. (names.north) ;
+    
+    \node [text width=9cm, draw=none] at (0,-15.5) {\textit{Notes:}} ;   
+    \draw [thick, double distance=3pt, implies- ] (0,-16) -- (1.3,-16)
+          node[right=2mm, text width=9cm, draw=none, node distance=1cm] 
+          {\textit{indicates an expanded view of the indicated part}} ;
+    \draw [loosely dashed, thin, open triangle 45-open triangle 45] (0,-16.5) -- (1.3,-16.5) 
+          node[right=2mm, text width=9cm, draw=none] {\textit{indicates correspondence}} ;
+          
   \end{tikzpicture}
+\end{center}
 \caption{Name Index Layout}
 \label{fig:nameindexlayout}
+\eb
 \end{figure}
 
 The formats of the header and the hash lookup table are described
@@ -339,6 +378,7 @@ The  abbreviation list for that code provides the DWARF tag value for
 the entry as well as the set of attributes provided by the entry and
 their forms.
 
+\needlines{4}
 The standard attributes are:
 \begin{itemize}
 \item Compilation Unit (CU), a reference to an entry in the list of
@@ -495,6 +535,7 @@ bytes, while in the DWARF-64 format, a section offset is 8 bytes.
 The total number of entries in the list is given by \texttt{comp\_unit\_count}.
 There must be at least one CU.
 
+\needlines{4}
 \subsubsubsection{List of Local TUs}
 The list of local TUs immediately follows the list of CUs. Each 
 entry in the list is an offset into the \dotdebuginfo{} section 
@@ -552,6 +593,7 @@ When a matching hash value is found in the hashes array, the index of
 that entry in the hashes array is used to find the corresponding entry
 in the name table.
 
+\needlines{6}
 \subsubsubsection{Name Table}
 The name table immediately follows the hash lookup table. The name
 table is laid out in column-major order (that is, the first column,
@@ -656,6 +698,7 @@ of sets of variable length entries, each set describing the
 portion of the program\textquoteright{}s address space that is covered by
 a single compilation unit.
 
+\needlines{4}
 Each set begins with a header containing five values:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
@@ -775,7 +818,7 @@ room for expansion. In the future, columns can be added to the
 matrix to encode other things that are related to individual
 instruction addresses.}
 
-
+\needlines{10}
 \subsection{Definitions}
 \label{chap:definitions}
 The following terms are used in the description of the line
@@ -899,12 +942,15 @@ The \texttt{address} and \addttindex{op\_index} registers,
 taken together, form an \addtoindex{operation pointer} that can 
 reference any individual operation within the instruction stream.
 
-
-\clearpage      % Keep this sentence with the following table
 At the beginning  of each sequence within a line number
-program, the state of the registers is:
+program, the state of the registers is as show in Table
+\refersec{tab:linenumberprograminitiastate}.
+\begin{table}
+\caption{Line number program initial state}
+\label{tab:linenumberprograminitiastate}
 \begin{center}
-\begin{tabular}{lp{9.5cm}}
+\begin{tabular}{l|p{9.5cm}}
+\hline
 \texttt{address} & 0 \\
 \addttindex{op\_index} & 0 \\
 \texttt{file} & 1 \\
@@ -918,8 +964,10 @@ program, the state of the registers is:
 \addttindex{epilogue\_begin} & \doublequote{false} \\
 \addttindex{isa} & 0 \\
 \addttindex{discriminator} & 0 \\
+\hline
 \end{tabular}
 \end{center}
+\end{table}
 
 \textit{The 
 \addttindex{isa} value 0 specifies that the instruction set is the
@@ -973,6 +1021,7 @@ The size in bytes of the line number information for this
 compilation unit, not including the length field itself
 (see Section \refersec{datarep:initiallengthvalues}). 
 
+\needlines{4}
 \item \texttt{version} (\HFTuhalf) \\
 A version number\addtoindexx{version number!line number information} 
 (see Section \refersec{datarep:linenumberinformation}). 
@@ -1117,6 +1166,7 @@ just like standard opcodes.}
 \setcounter{saveenumi}{\value{enumi}}
 \end{enumerate}
 
+\needlines{6}
 \textit{The remaining fields provide information about the
 source files used in the compilation. These fields
 have been revised in \DWARFVersionV{} to support these
@@ -1298,7 +1348,8 @@ minimum size for the set of \addttindex{include\_index} fields) depends not only
 on the number of directories in the directories
 field, but potentially on the order in which those directories are
 listed and the number of times each is used in the \addttindex{file\_names} field.}
-   
+
+\needlines{4}
 \item \DWLNCTtimestampTARG \\
 \DWLNCTtimestampNAME{} indicates that the value is the implementation-defined 
 time of last modification of the file, or 0 if not available. 
@@ -1344,6 +1395,7 @@ Within a sequence, addresses and
 (Line numbers may decrease in cases of pipeline
 scheduling or other optimization.)
 
+\needlines{4}
 \subsubsection{Special Opcodes} 
 \label{chap:specialopcodes}
 Each \HFTubyte{} special opcode has the following effect on the state machine:
@@ -1724,6 +1776,8 @@ of the DWARF version number.
 \item \texttt{flags} (\HFTubyte) \\
 The bits of the \texttt{flags} field are interpreted as a set
 of flags, some of which may indicate that additional fields follow.
+
+\needlines{4}
 The following flags, beginning with the least significant bit, are defined:
 \begin{itemize}
 \item \HFNoffsetsizeflag \\
@@ -1946,6 +2000,7 @@ the entry marks the end of the current source file inclusion.
 
 \end{enumerate}
 
+\needlines{4}
 When providing macro information in an object file,
 a producer generates \DWMACROstartfile{} and
 \DWMACROendfile{} entries for the source file submitted to
index 12c7c44..5b62eb5 100644 (file)
@@ -74,8 +74,9 @@ be usefully shared by multiple other units.
 
 \end{itemize}
 
-\textit{Split compilation units and type units may be in object
-files separate from those containing the program code and data.}
+\textit{Split compilation units and split type units may be 
+contained in object files separate from those containing the 
+program code and data.}
 
 \textit{Either a full compilation unit or a partial compilation 
 unit may be logically incorporated into another compilation unit 
@@ -531,9 +532,11 @@ Section \refersec{datarep:splitdwarfobjectfiles}), the
 compilation unit in the \dotdebuginfo{} section is a "skeleton"
 compilation unit with the tag \DWTAGcompileunit, which contains 
 \DWATdwoname{} and \DWATdwoid{} attributes as well as a subset of the
-attributes of a full normal or partial compilation unit. In general, 
+\bb
+attributes of a full or partial compilation unit. In general,
 it contains those attributes that are necessary for the consumer
-to locate the object file where the full compilation unit
+to locate the object file where the split full compilation unit
+\eb
 can be found, and for the consumer to interpret references to
 addresses in the program. 
 
@@ -649,14 +652,14 @@ is logically paired with a specific skeleton compilation unit while
 being physically separate.
 
 A split full compilation unit has a \DWATdwoid{} attribute:
-\begin{enumerate}
+\begin{enumerate}[1. ]
 \item
 A \DWATdwoidDEFN{} attribute\addtoindexx{unit identification attribute}
 whose implementation-defined integer constant value
 provides unique identification of this compilation unit
-as well as the associated split compilation unit.
+as well as the associated skeleton compilation unit.
 For simplicity, the \DWATdwoidNAME{} attributes in the 
-skeleton compilation unit and the corresponding split 
+split compilation unit and the associated skeleton 
 compilation unit must use the same form to encode the 
 identification value.
 \end{enumerate}
@@ -671,12 +674,6 @@ compilation unit entries).
 \item A \DWATlanguage{} attribute (the same as for conventional 
 compilation unit entries)
         
-\item A \DWATstmtlist{} attribute (the same as for conventional 
-compilation unit entries.
-
-\textit{The offset in the value of class \CLASSlineptr{} is 
-relative to the \dotdebuglinedwo{} section.}
-
 \item A \DWATmacros{} attribute (the same as for conventional 
 compilation unit entries).
 
@@ -700,7 +697,7 @@ compilation unit entries).
 \textit{The following attributes are not part of a 
 split full compilation unit entry but instead are inherited 
 (if present) from the corresponding skeleton compilation unit: 
-\DWATlowpc, \DWAThighpc, \DWATranges, \DWATcompdir, 
+\DWATlowpc, \DWAThighpc, \DWATranges, \DWATstmtlist, \DWATcompdir, 
 \DWATuseUTFeight, \DWATstroffsetsbase, \DWATaddrbase{} and 
 \DWATrangesbase.}
 
@@ -726,7 +723,7 @@ information entries in other compilation units and type units.
 {\bb
 Conventional and split type units are identical except for
 the sections in which they are represented 
-(see \refersec{datarep:splitdwarfobjectfiles} for details.)
+(see \refersec{datarep:splitdwarfobjectfiles} for details).
 \addtoindexx{conventional type unit}
 \addtoindexx{split type unit}
 \eb}{}
@@ -761,10 +758,12 @@ headers contain a list of directories and file names that
 may be referenced by the \DWATdeclfile{} attribute of the
 type or part of its description.} 
 
-\textit{In an object file with a conventional compilation unit entry, the
-type unit entries refer to the line number table
-used by the compilation unit. In a type unit located in a split 
-compilation unit,
+\textit{In an object file with a conventional compilation 
+\bb
+unit entry, the type unit entries may refer to (share) the 
+\eb
+line number table used by the compilation unit. In a type 
+unit located in a split compilation unit,
 the \DWATstmtlistNAME{} attribute refers to a "specialized"
 line number table in the \dotdebuglinedwo{} section, which
 contains only the list of directories and file names.}
@@ -2259,6 +2258,7 @@ A call site is represented by a debugging information entry with the tag
 debugging information entry representing the scope within which the
 call is present in the source program.
 
+\needlines{4}
 \textit{A scope entry (for example, for a lexical block) that would not 
 otherwise be present in the debugging information of a subroutine
 need not be introduced solely to represent the immediately containing scope
@@ -2383,6 +2383,7 @@ This location expression describes where the parameter is passed
 (usually either some register, or a memory location expressible as the
 contents of the stack register plus some offset).
 
+\needlines{4}
 Each \DWTAGcallsiteparameter{} entry may have a 
 \DWATcallvalueDEFN{}
 \livetargi{chap:DWATcallvalueofcallparameter}{attribute}{call value attribute}
index f94c920..f72caa0 100644 (file)
@@ -83,7 +83,7 @@ information entries. Actual line number tables remain in the
 
 \end{itemize}
 
-In a \texttt{.dwo} file there is no benefit to having a separate string
+In a \texttt{.dwo} file, there is no benefit to having a separate string
 section for directories and file names because the primary
 string table will never be stripped. Accordingly, no
 \texttt{.debug\_line\_str.dwo} section is defined. Content descriptions 
@@ -93,7 +93,7 @@ directory and file name strings to be merged with general
 strings and across compilations in package files (which are not
 subject to potential stripping).
 
-In a \texttt{.dwo} file. referring to a string using \DWFORMstrp{}
+In a \texttt{.dwo} file, referring to a string using \DWFORMstrp{}
 is valid, but such use may complicate incorporation of that file into a
 \texttt{.dwp} file due to changed string offsets as a result of string merging.
 
@@ -122,7 +122,7 @@ but no children.
 \dotdebuginfo{} sections (via \DWFORMstrp{} or \DWFORMstrx{}).
 \item
 \dotdebugstroffsets{} - Contains the string offsets table for
-the strings in the \dotdebugstr{} section.
+the strings in the \dotdebugstr{} section (if \DWFORMstrx is used).
 \item
 \dotdebugaddr{} - Contains references to loadable sections,
 indexed by attributes of form \DWFORMaddrx{} or location
@@ -179,63 +179,78 @@ in both the skeleton DIE and the full DIE, so that a consumer
 can verify a match.
 
 \needlines{4}
-Because of other improvements in \DWARFVersionV, most of the
-relocations that would normally be found in the \dotdebuginfodwo{}
-sections are moved to the \dotdebugaddr{} and
-\dotdebugstroffsetsdwo{} sections. Those in the
-\dotdebugstroffsetsdwo{} sections are simply omitted because the
-DWARF information in those sections is not combined at link
-time, so no relocation is necessary. Similarly,
-many of the remaining relocations referring to range lists are
-eliminated. 
-
-The relocations that remain fall into the following categories:
-\begin{itemize}
-\item
-References from compilation unit and type unit headers to the
-\dotdebugabbrevdwo{} section. Because the new sections are not
-combined at link time, these references need no relocations.
-\item
-References from \DWTAGcompileunit{} DIEs to the
-\dotdebuglinedwo{} section, via \DWATstmtlist{}. This attribute
-remains in the skeleton \dotdebuginfo{} section, so no
-relocation in the \dotdebuginfodwo{} section is necessary.
-\item
-References from \DWTAGtypeunit{} DIEs to the 
-\dotdebuglinedwo{} section, via \DWATstmtlist{}. Because the new
-sections are not combined at link time, these references need
-no relocations.
-\item
-References from \DWTAGcompileunit{} and \DWTAGtypeunit{} DIEs
-to the \dotdebugstroffsetsdwo{} section, via
-\DWATstroffsetsbase{}. Because the new sections are not
-combined at link time, the \DWATstroffsetsbase{} attribute
-is not required in a \dotdebuginfodwo{}
-section.
-\item
-References from \DWTAGcompileunit{} DIEs to the \dotdebugaddr{}
-section, via \DWATaddrbase{}. This attribute remains in
-the skeleton \dotdebuginfo{} section, so no relocation in the
-\dotdebuginfodwo{} section is necessary.
-\needlines{4}
-\item
-References from \DWTAGcompileunit{} DIEs to the \dotdebugranges{}
-section, via \DWATrangesbase{}. This attribute remains in
-the skeleton \dotdebuginfo{} section, so no relocation in the
-\dotdebuginfodwo{} section is necessary.
-\item
-References from the \dotdebuglocdwo{} section to machine addresses
-via a location list entry or a base address selection entry.
-With a minor change to the location list entry format,
-described below, these relocations are also eliminated.
+\bb
+Relocations are neither necessary nor useful in .dwo files, because the
+.dwo files contain only debugging information that does not need to be
+processed by a linker. Relocations are rendered unnecessary via
+four strategies:
+
+\begin{enumerate}[1. ]
+\item Some values needing relocation are kept in the \texttt{.o} file
+(for example, references to the line number program from the skeleton
+compilation unit).
+
+\item Some values do not need a relocation because they refer from
+one \dotdwo{} section to another \dotdwo{} section. Because \texttt{.dwo} files are not
+combined by the linker, these references are known at compile time and
+do not need further relocation.
+
+\item Some values that need a relocation to refer to a
+relocatable program address use the \DWFORMaddrx{} form,
+referencing a relocatable value in the \dotdebugaddr{} section (which
+remains in the \texttt{.o} file).
+
+\item Some values that need a relocation to refer to the
+\dotdebugranges{} section in the \texttt{.o} file use a relocatable base
+specified by the \DWATrangesbase{} attribute (which is placed in the
+skeleton compilation unit in the \texttt{.o} file).
+
+\end{enumerate}
+\eb
+
+Table \refersec{tab:unitattributesbyunitkind} summarizes which
+attributes are defined for use in the various kind of compilation
+units.
+
+\bb
+
+\begin{table}[h]
+\caption{Unit Attributes by Unit Kind}
+\label{tab:unitattributesbyunitkind}
+\begin{tabular}{P{5.5cm}|ccccc}
+\hline
+                        & \multicolumn{5}{c}{\bfseries Unit Kind} \\
+\bfseries Attribute     &  Full \&   &  Type  &  Skeleton & Split Full & Split Type \\
+                        & Partial    \\
+\hline
+\parbox[c]{3cm}{\DWATlowpc, \DWAThighpc, \DWATranges} \parbox[c]{1cm}{\[ \Biggr\} \]}
+                        & \chkmk  &        &  \chkmk   &        &         \\
+\hline
+\DWATname               & \chkmk  &        &           & \chkmk &         \\
+\DWATlanguage           & \chkmk  & \chkmk &           & \chkmk & \chkmk  \\
+\DWATstmtlist           & \chkmk  & \chkmk &  \chkmk   &        & \chkmk  \\
+\hline
+\DWATmacros             & \chkmk  &        &           & \chkmk &         \\
+\DWATcompdir            & \chkmk  &        &  \chkmk   &        &         \\
+\DWATproducer           & \chkmk  &        &           & \chkmk &         \\
+\DWATidentifiercase     & \chkmk  &        &           & \chkmk &         \\
+\hline
+\DWATbasetypes          & \chkmk  &        &           &        &         \\
+\DWATuseUTFeight        & \chkmk  & \chkmk &  \chkmk   &        & \chkmk  \\
+\DWATmainsubprogram     & \chkmk  &        &           & \chkmk &         \\
+\DWATentrypc            & \chkmk  &        &           & \chkmk &         \\
+\hline
+\DWATstroffsetsbase     & \chkmk  & \chkmk &  \chkmk   &        &         \\
+\DWATaddrbase           & \chkmk  &        &  \chkmk   &        &         \\
+\DWATrangesbase         & \chkmk  &        &  \chkmk   &        &         \\
+\hline
+\DWATdwoname            &         &        &  \chkmk   &        &         \\
+\DWATdwoid              &         &        &  \chkmk   & \chkmk &         \\
+\hline
+\end{tabular}
+\end{table}
 
-\needlines{4}
-Each location list entry contains beginning and ending address
-offsets, which normally may be relocated addresses. In the
-\dotdebuglocdwo{} section, these offsets are replaced by indices
-into the \dotdebugaddr{} section (see Section 
-\refersec{chap:locationlistsinsplitobjectfiles} for details). 
-\end{itemize}
+\eb
 
 \needlines{8}
 The split dwarf object file design depends on having an index of 
@@ -260,7 +275,7 @@ Consider the example source code in
 Figure \refersec{fig:splitobjectexamplesourcefragment1}, 
 Figure \refersec{fig:splitobjectexamplesourcefragment2} and
 Figure \refersec{fig:splitobjectexamplesourcefragment3}.
-When compiled with split DWARF, we will have two object files,
+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}.
 
@@ -484,7 +499,7 @@ Slot & Location referenced \\
 The \dotdebugnames{}
 section contains the names defined by the debugging
 information in the \splitDWARFobjectfile{} 
-(see Section \refersec{chap:contentsofthenameindex}, 
+(see Section \refersec{chap:contentsofthenameindex})
 and references the skeleton compilation unit. 
 When linked together into a final executable,
 they can be used by a DWARF consumer to lookup a name to find one
@@ -795,9 +810,9 @@ Figure~\ref{fig:splitobjectexampledemo2dwodwarfdebuginfodwoexcerpts}: Split obje
 \end{figure}
 
 In Figure \refersec{fig:splitobjectexampledemo2dwodwarfdebuginfodwoexcerpts},
-The \DWTAGformalparameter{} entries at 4\$ and 5\$ refer to the
+The \DWTAGformalparameter{} entries at \texttt{4\$} and \texttt{5\$} refer to the
 location lists at offset \texttt{0x0} and \texttt{0x2a}, respectively, and the
-\DWTAGvariable{} entry for \texttt{slope} at 7\$ refers to the location
+\DWTAGvariable{} entry for \texttt{slope} at \texttt{7\$} refers to the location
 list at offset \texttt{0x49}. 
 Figure \refersec{fig:splitobjectexampledemo2dwodwarfdebuglocdwoexcerpts}
 shows a representation of the