This submission corresponds to the March 7, 2016 version released
authorRon Brender <ron.brender@gmail.com>
Tue, 8 Mar 2016 23:03:42 +0000 (18:03 -0500)
committerRon Brender <ron.brender@gmail.com>
Tue, 8 Mar 2016 23:03:42 +0000 (18:03 -0500)
to the full DWARF committee. Used to create dwarf5.20160307.pdf.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
16 files changed:
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/dwarfchangebarpatch.tex [new file with mode: 0644]
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/selectedglossary.tex
dwarf5/latexdoc/splitobjects.tex
dwarf5/latexdoc/typeentries.tex

index 44adf13..f31860a 100644 (file)
@@ -15,15 +15,15 @@ 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
-3/4-5/2016      & Editorial work from 3-4-2016 editorial review \\
-2/8/2016        & More editorial work from 1-29-2016 editorial review \\
-1/29-30/2016    & Editorial work from 1-29-2016 editorial review \\
+3/4-7/2016      & Editorial work from 3/4/2016 editorial review \\
+2/8/2016        & More editorial work from 1/29/2016 editorial review \\
+1/29-30/2016    & Editorial work from 1/29/2016 editorial review \\
 1/23/2016       & Mention .debug\_line\_str in combination with .debug\_line in F.1. \\
 1/18/2016       & Replace all uses of "location expression" with "location description" \\
 1/9/2016        & Correct Figure F.8 (add expression location length), \\
                 & Clarify various call site entry and entry value matters, \\
                 & Other editorial clean-ups from online review \\
-1/6/2016        & Editorial work from 12-17-2015 group review \\
+1/6/2016        & Editorial work from 12/17/2015 group review \\
 1/5/2016        & Add new material for sections 7.3.3 and 7.3.4 \\
 11/29/2015      & DIE -> debugging information entry in most places \\
 11/2/2015       & Clear change bars in preparation for next version \\
index 647e0cd..1e85588 100644 (file)
@@ -578,7 +578,7 @@ For a \addtoindex{Fortran}
 example, consider 
 Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \textit{File CommonStuff.f\hspace{1pt}h}
 \addtoindexx{Fortran}
 \begin{lstlisting}[numbers=none]
@@ -793,7 +793,7 @@ consider a \addtoindex{C++} header file
 containing the type definitions shown
 in Figure \refersec{fig:typesignatureexamplescsource}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 namespace N {
 
@@ -1231,7 +1231,7 @@ variable of type \texttt{N::A}, and its DWARF information may look
 like that shown in 
 Figure \refersec{fig:typesignatureexampleusage}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
   \DWTAGcompileunit
@@ -1259,7 +1259,7 @@ how the bytes of the flattened type description are formed
 during the type signature computation algorithm of
 Section \refersec{datarep:typesignaturecomputation}. 
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 %FIXME: The index entries here with \addtoindexx are ineffective.
 \begin{alltt}
@@ -1331,7 +1331,7 @@ A possible representation of the
 debug information for this function in the compilation unit is shown
 in Figure \refersec{fig:completingedeclarationofamemberfunctiondwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
   \DWTAGnamespace
index b277758..79d4775 100644 (file)
@@ -187,7 +187,7 @@ the target architecture's ABI or processor definition. The
 exact definition of these formats may differ in subtle ways
 for different architectures.
 
-\begin{table}[h]
+\begin{table}[ht]
 \caption{Endianity attribute values}
 \label{tab:endianityattributevalues}
 \centering
index 9390c91..cca0e25 100644 (file)
@@ -1058,17 +1058,15 @@ in the \sixtyfourbitdwarfformat, this is an 8-byte unsigned length
 
 \end{enumerate}
 
+\needlines{8}
 \subsubsection{Type Unit Header}
 \label{datarep:typeunitheader}
-
 The header for the series of debugging information entries
 contributing to the description of a type that has been
 placed in its own \addtoindex{type unit}, within the 
 \dotdebuginfo{} section,
 consists of the following information:
 \begin{enumerate}[1. ]
-
-\needlines{4}
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
 \addttindexx{unit\_length}
 A 4-byte or 12-byte unsigned integer 
@@ -1139,6 +1137,7 @@ unit.
 the primary type contained in this 
 \addtoindex{type unit} uses this value.}
 
+\needlines{4}
 \item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
 \addttindexx{type\_offset}
 A 4-byte or 8-byte unsigned offset 
@@ -1197,8 +1196,9 @@ code 0 is reserved for null debugging information entries. The
 abbreviation code is followed by another unsigned LEB128\addtoindexx{LEB128!unsigned}
 number that encodes the entry\textquoteright s tag. The encodings for the
 tag names are given in 
-Table \referfol{tab:tagencodings}.
+Table \refersec{tab:tagencodings}.
 
+\needlines{6}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
@@ -1333,6 +1333,7 @@ number representing the attribute\textquoteright s form.
 The series of attribute specifications ends with an
 entry containing 0 for the name and 0 for the form.
 
+\needlines{4}
 The attribute form 
 \DWFORMindirectTARG{} is a special case. For
 attributes with this form, the attribute value itself in the
@@ -1860,6 +1861,7 @@ it indicates the presence of the attribute. In the second
 case, the attribute is implicitly indicated as present, and
 no value is encoded in the debugging information entry itself.
 
+\needlines{4}
 \item \livelinki{chap:classlineptr}{lineptr}{lineptr class} \\
 \livetarg{datarep:classlineptr}{}
 This is an offset into 
@@ -1949,7 +1951,7 @@ format, it is an 8-byte unsigned value (see Section
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
-
+\needlines{4}
 \begin{itemize}
 \item \livelinki{chap:classreference}{reference}{reference class} \\
 \livetarg{datarep:classreference}{}
@@ -3725,7 +3727,6 @@ to the following:
 \DWFORMexprloc,
 and \DWFORMblock.
 
-\needlines{4}
 \item If the tag in Step 3 is one of \DWTAGpointertype,
 \DWTAGreferencetype, 
 \DWTAGrvaluereferencetype,
@@ -3742,7 +3743,7 @@ entry is a \DWTAGsubprogram, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
 (for example, the mangled linker name).
 
-
+\needlines{6}
 \item If the tag in Step 3 is not one of \DWTAGpointertype,
 \DWTAGreferencetype, 
 \DWTAGrvaluereferencetype,
@@ -3886,7 +3887,7 @@ information entry are encoded by name rather than by recursively
 encoding the type to allow for cases where a complete definition 
 of the type might not be available in all compilation units.}
 
-\needlines{4}
+%\needlines{4}
 \textit{If a type definition contains the definition of a member function, 
 it cannot be moved as is into a type unit, because the member function 
 contains attributes that are unique to that compilation unit. 
@@ -3918,7 +3919,7 @@ This hash function is sometimes known as the
 \hrefself{http://en.wikipedia.org/wiki/List\_of\_hash\_functions} or
 \hrefself{http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function)}.} 
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \bb
 \begin{lstlisting}
 
index efb553f..2e55559 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}{March 5, 2016}
+\newcommand{\docdate}{March 7, 2016}
 %
 \usepackage{ifthen}
     \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
@@ -58,6 +58,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
     \setlength{\headheight}{15pt}  % avoids warning from latex
 \usepackage{needspace}     % For assuring space remaining on a page
 \usepackage{ifthen}        % For conditional processing
+\include{dwarfchangebarpatch} % Patch needed for package changebar
 \usepackage{changepage}    % For odd/even page checks
 \usepackage[usenames,dvipsnames]{xcolor}
 \usepackage{lscape}        % For landscape mode (Appendix B)
@@ -80,7 +81,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % Also, allcolors lets us generate colored active links inside a pdf.
 % And breaklinks resolves truncation issues with very long link names.
 \usepackage[breaklinks,plainpages=false,pdfpagelabels,pagebackref,
-            allcolors=blue!75!black,bookmarksnumbered=true]{hyperref}
+            allcolors=blue!80!black,bookmarksnumbered=true]{hyperref}
 \makeindex  % This and the makeidx package allow \index to create index entries.
 
 \newcommand{\dwf}{DWARF Debugging Information Format}
@@ -200,7 +201,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % A simple one column table of names; default width is 2 inches
 \newcommand{\simplenametablerule}{\simplerule[2in]}
 \newenvironment{simplenametable}[3][2in]
-    {   \begin{table}[h] \caption{#2} \label{#3}
+    {   \begin{table}[ht] \caption{#2} \label{#3}
         \begin{center}
         \renewcommand{\simplenametablerule}{\simplerule[#1]}
         \simplenametablerule \\
@@ -232,7 +233,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % Define commands for all of the DWARF names (DW\_*, .debug_*, a few others)
 %
 %\newcommand{\definition}[1]{\textcolor{red!80!black}{#1}}
-\newcommand{\definition}[1]{\textcolor{red!50!black}{#1}}
+\newcommand{\definition}[1]{\textcolor{red!65!black}{#1}}
 \newcommand{\definitionx}[1]{\definition{\addtoindex{#1}}}
 \include{dwarfnamecmds}
 
@@ -323,7 +324,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \listoftables
 
 \ifthenelse{\boolean{isdraft}}
-       {       \emptypage
+       {       %\emptypage
                {% Environment to keep the following header change local
                \clearpage
                \makeevenhead{plain}{}{Change Summary}{}
@@ -374,5 +375,5 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \include{gnulicense}                           \emptypage
 % Maybe someday the selected glossary concept will be of interest...
 %\include{selectedglossary}                    %\emptypage
-\printindex
+\printindex                                    \clearpage
 \end{document}
diff --git a/dwarf5/latexdoc/dwarfchangebarpatch.tex b/dwarf5/latexdoc/dwarfchangebarpatch.tex
new file mode 100644 (file)
index 0000000..2af16f8
--- /dev/null
@@ -0,0 +1,29 @@
+%%%
+% PROBLEM: The changebar package creates a page or two full of \93spsp\94 
+% groups at the end of the document.
+%
+% SOLUTION: The following must be invoked in the preamble prior to the
+% \usepackage command for changebar.
+%
+% For further information, see http://tex.stackexchange.com/questions/162332,
+% also known as http://tex.stackexchange.com/questions/162332/why-does-the-changebar-package-create-a-page-full-of-spsp-and-how-can-this-be
+% (or do a web search for "latex spsp").
+%%%
+\makeatletter
+\AtEndDocument{%
+\def\cb@checkPdfxy#1#2#3#4#5{%
+\cb@@findpdfpoint{#1}{#2}%
+\ifdim#3sp=\cb@pdfx\relax      % <<-- original has \ifnum#3=\cb@pdfx
+\ifdim#4sp=\cb@pdfy\relax      % <<-- original has \ifnum#4=\cb@pdfy
+\ifdim#5=\cb@pdfz\relax
+\else
+\cb@error
+\fi
+\else
+\cb@error
+\fi
+\else
+\cb@error
+\fi
+}}
+\makeatother
index 6547428..71fdccf 100644 (file)
        \expandafter\def\csname #1NAME\endcsname{\index{#2}{#2}}
         \expandafter\def\csname #1DEFN\endcsname{\index{#2|definition}{\definition{#2}}}
        % The normal, most common use in running text...
-       \expandafter\def\csname #1\endcsname{\csname #1LINK\endcsname\xspace}
+       \expandafter\def\csname #1\endcsname{\csname #1LINK\endcsname}
        }
 
-
+%%%
+%
 % DW_ACCESS
 %
 \newdwfnamecommands{DWACCESSprivate}{DW\_ACCESS\_private}
index 200d431..8e19a52 100644 (file)
@@ -7,7 +7,7 @@ Here are algorithms expressed in a C-like pseudo-code to
 encode and decode signed and unsigned numbers in LEB128
 representation.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 do
 {
@@ -22,7 +22,7 @@ do
 \addtoindexx{LEB128!unsigned, encoding as}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 more = 1;
 negative = (value < 0);
@@ -51,7 +51,7 @@ while(more)
 \addtoindexx{LEB128!signed, encoding as}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 result = 0;
 shift = 0;
@@ -68,7 +68,7 @@ while(true)
 \addtoindexx{LEB128!unsigned, decoding of}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 result = 0;
 shift = 0;
index 1cde31b..cbbc86f 100644 (file)
@@ -41,7 +41,7 @@ typedef char* strp;
 %%% and horizontal spacing are critical to achieving the
 %%% desired effect. But this is very fragile!
 %%%
-\begin{figure}[h]
+\begin{figure}[ht]
 %\centering
 %\setlength{\linewidth}{1.1\linewidth}
 \begin{minipage}[t]{0.03\linewidth}
@@ -373,7 +373,7 @@ Consider the \addtoindex{Fortran array}\addtoindexx{Fortran 90} source fragment
 \addtoindexx{array type entry!examples}
 Figure \referfol{fig:fortranarrayexamplesourcefragment}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
         TYPE array_ptr
         REAL :: myvar
@@ -412,7 +412,7 @@ knowledge of this structure and 2) there does not need to
 be an explicit representation of this structure in the DWARF
 input to the debugger.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 struct desc {
     long el_len;       // Element length
@@ -497,7 +497,7 @@ The DWARF description is shown
 \addtoindexx{Fortran 90}
 in Figure \refersec{fig:fortranarrayexampledwarfdescription}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -716,7 +716,7 @@ The \addtoindex{Fortran} scalar coarray example
 in Figure \refersec{fig:Fortranscalarcoarraysourcefragment} can be described as 
 illustrated in Figure \refersec{fig:FortranscalarcoarrayDWARFdescription}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}
         INTEGER x[*]
 \end{lstlisting}
@@ -724,7 +724,7 @@ illustrated in Figure \refersec{fig:FortranscalarcoarrayDWARFdescription}.
 \label{fig:Fortranscalarcoarraysourcefragment}
 \end{figure}
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{dwflisting}
 \begin{alltt}
 10\$:  \DWTAGcoarraytype
@@ -749,7 +749,7 @@ The \addtoindex{Fortran} (simple) array coarray example
 in Figure \refersec{fig:Fortranarraycoarraysourcefragment} can be described as 
 illustrated in Figure \refersec{fig:FortranarraycoarrayDWARFdescription}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
         INTEGER x(10)[*]
 \end{lstlisting}
@@ -757,7 +757,7 @@ illustrated in Figure \refersec{fig:FortranarraycoarrayDWARFdescription}.
 \label{fig:Fortranarraycoarraysourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 10\$:  \DWTAGarraytype
@@ -791,7 +791,7 @@ The \addtoindex{Fortran} multidimensional coarray of a multidimensional array ex
 in Figure \refersec{fig:Fortranmultidimensionalcoarraysourcefragment} can be described as 
 illustrated in Figure \referfol{fig:FortranmultidimensionalcoarrayDWARFdescription}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
         INTEGER x(10,11,12)[2,3,*]
 \end{lstlisting}
@@ -799,7 +799,7 @@ illustrated in Figure \referfol{fig:FortranmultidimensionalcoarrayDWARFdescripti
 \label{fig:Fortranmultidimensionalcoarraysourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 \end{alltt}\bb\vspace{-0.8\baselineskip}\begin{alltt}
@@ -843,7 +843,7 @@ an assumed-rank array in Fortran~2008 with
 supplement~29113:\footnote{Technical Specification ISO/IEC TS
   29113:2012 \emph{Further Interoperability of Fortran with C}}
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}
   SUBROUTINE Foo(x)
     REAL :: x(..)
@@ -860,7 +860,7 @@ Let's assume the Fortran compiler used an array descriptor that
 (in \addtoindex{C}) looks
 like the one shown in Figure~\ref{fig:arraydesc}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}
   struct array_descriptor {
     void *base_addr;
@@ -882,7 +882,7 @@ like the one shown in Figure~\ref{fig:arraydesc}.
 The DWARF type for the array \emph{x} can be described as shown in
 Figure~\refersec{fig:assumedrankdwarf}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{dwflisting}
 \begin{alltt}
 10\$:  \DWTAGarraytype
@@ -942,7 +942,7 @@ entry need to be evaluated for each of the
 \DWATrank{} dimensions as shown by the pseudocode in
 Figure~\refersec{fig:assumedrankdwarfparser}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}
     typedef struct {
         int lower, upper, stride;
@@ -1000,7 +1000,7 @@ Note that unnamed dynamic types are used to avoid replicating
 the full description of the underlying type \texttt{dt} that is shared by
 several variables.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
        PROGRAM Sample
      
@@ -1024,7 +1024,7 @@ several variables.
 \label{fig:fortrandynamictypeexamplesource}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 11$:    \DWTAGstructuretype
@@ -1080,7 +1080,7 @@ Figure \ref{fig:anonymousstructureexampledwarfdescription}
 is appropriate. In this example, \texttt{b} is referenced as if it 
 were defined in the enclosing structure \texttt{foo}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 struct foo {
     int a;
@@ -1101,7 +1101,7 @@ void bar(void)
 \label{fig:anonymousstructureexamplesourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 1$:   \DWTAGstructuretype  
@@ -1124,7 +1124,7 @@ Figure \refersec{fig:adaexamplesourcefragment}
 illustrates two kinds of \addtoindex{Ada} 
 parameterized array, one embedded in a record.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 M : INTEGER := <exp>;
 VEC1 : array (1..M) of INTEGER;
@@ -1253,7 +1253,7 @@ Figure \referfol{fig:packedrecordexamplesourcefragment}
 is used to illustrate the representation of packed unaligned
 \addtoindex{bit fields}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \bb
 \begin{lstlisting}
 TYPE T : PACKED RECORD                  { bit size is 2   }
@@ -1286,7 +1286,7 @@ little-endian
 architectures using the conventions described in 
 Section \refersec{chap:datamemberentries}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -1310,7 +1310,7 @@ Section \refersec{chap:datamemberentries}.
 \label{fig:packedrecordexampledwarfdescription}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \figurepart{2}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -1418,7 +1418,7 @@ that begins at address A and whose size is four bytes. Also,
 high order bits are to the left and low order bits are to
 the right.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{verbatim}
 
@@ -1443,7 +1443,7 @@ the right.
 \label{fig:bigendiandatabitoffsets}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{verbatim}
 
@@ -1488,7 +1488,7 @@ The DWARF representation in
 Figure \refersec{fig:namespaceexample1dwarfdescription}
 is appropriate.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 namespace {
     int i;
@@ -1635,7 +1635,7 @@ is appropriate. In this example, \texttt{a} may be referenced either as a member
 the fully qualified namespace \texttt{A::B}, or as if it were defined
 in the enclosing namespace, \texttt{A}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 namespace A {
     inline namespace B {   // (1) inline namespace
@@ -1659,7 +1659,7 @@ void bar (void)
 \label{fig:namespaceexample2sourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 1$:   \DWTAGnamespace
@@ -1685,7 +1685,7 @@ The DWARF representation in
 Figure \refersec{fig:memberfunctionexampledwarfdescription}
 is appropriate.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 class A
 {
@@ -1699,7 +1699,7 @@ void A::func1(int x) {}
 \label{fig:memberfunctionexamplesourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -1795,7 +1795,7 @@ The DWARF representation in
 Figure \refersec{fig:memberfunctionrefqualexampledwarfdescription}
 is appropriate.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 class A {
 public:
@@ -1812,7 +1812,7 @@ void g() {
 \label{fig:memberfunctionrefqualexamplesourcefragment}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 %\figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -1878,7 +1878,7 @@ in a \DWARFVersionV{} header
 \eb
 as shown in Figure \refersec{fig:preV5LNCTusingV5}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
   Field           Field Name                      Value(s)
@@ -1983,7 +1983,7 @@ Consider the simple source file and the resulting machine
 code for the Intel 8086 processor in 
 Figure \refersec{fig:linenumberprogramexamplemachinecode}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 1: int
 2: main()
@@ -2132,7 +2132,7 @@ pointer). The first column values are byte addresses.
 \textless fs\textgreater\ denotes the stack frame size in bytes, namely 12.
 
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
        ;; start prologue
 foo    sub   R7, R7, <fs>        ; Allocate frame
@@ -2310,7 +2310,7 @@ example involves a nested subprogram \texttt{INNER} that makes uplevel
 references to the formal parameter and local variable of the
 containing subprogram \texttt{OUTER}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 inline procedure OUTER (OUTER_FORMAL : integer) =
     begin
@@ -2833,7 +2833,7 @@ The constant declarations in Figure \refersec{fig:constantexpressionscsource}
 can be represented as illustrated in 
 Figure \refersec{fig:constantexpressionsdwarfdescription}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}[numbers=none]
 constexpr double mass = 9.8;
 constexpr int square (int x) { return x * x; }
@@ -2842,7 +2842,7 @@ float arr[square(9)]; // square() called and inlined
 \caption{Constant expressions: C++ source} \label{fig:constantexpressionscsource}
 \end{figure}
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{dwflisting}
 \begin{alltt}
         ! For variable mass
@@ -2900,7 +2900,7 @@ Figure \refersec{fig:unicodecharacterexamplesource}
 can be described in DWARF as illustrated in 
 Figure \refersec{fig:unicodecharacterexampledwarfdescription}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}[numbers=none]
 // C++ source
 //
@@ -2911,7 +2911,7 @@ char32_t chr_b = U'h';
 \label{fig:unicodecharacterexamplesource}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 
@@ -2947,7 +2947,7 @@ Figure \refersec{fig:ctypesafeenumerationexamplesource}
 can be described in DWARF as illustrated in 
 Figure \refersec{fig:ctypesafeenumerationexampledwarf}.
 
-\begin{figure}[H]
+\begin{figure}[ht]
 \begin{lstlisting}[numbers=none]
 // C++ source
 //
@@ -2958,7 +2958,7 @@ E e1;
 \label{fig:ctypesafeenumerationexamplesource}
 \end{figure}
 
-\begin{figure}[H]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 ! DWARF description
@@ -2992,7 +2992,7 @@ Figure \refersec{fig:ctemplateexample1source}
 can be described in DWARF as illustrated in 
 Figure \refersec{fig:ctemplateexample1dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 // C++ source
 //
@@ -3006,7 +3006,7 @@ wrapper<int> obj;
 \label{fig:ctemplateexample1source}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 ! DWARF description
@@ -3044,7 +3044,7 @@ Figure \refersec{fig:ctemplateexample2source}
 and the DWARF that can describe it in
 Figure \refersec{fig:ctemplateexample2dwarf}.
 
-\begin{figure}[!h]
+\begin{figure}[!ht]
 \begin{lstlisting}
 // C++ source
 //
@@ -3064,7 +3064,7 @@ Figure \refersec{fig:ctemplateexample2dwarf}.
 \label{fig:ctemplateexample2source}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 ! DWARF description
@@ -3125,7 +3125,7 @@ can be described in DWARF as illustrated
 \addtoindexx{template alias example} in 
 Figure \refersec{fig:ctemplatealiasexample1dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 // C++ source, template alias example 1
 //
@@ -3184,7 +3184,7 @@ can be described in DWARF as illustrated
 \addtoindexx{template alias example} in 
 Figure \refersec{fig:ctemplatealiasexample2dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 // C++ source, template alias example 2
 //
@@ -3198,7 +3198,7 @@ X<Z<int>> z;
 \label{fig:ctemplatealiasexample2source}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \addtoindexx{template alias example 2}
 \begin{dwflisting}
 \begin{alltt}
@@ -3278,7 +3278,7 @@ an increment of the volatile variable \texttt{v}. Given these
 assumptions a possible DWARF description is shown in
 Figure \refersec{fig:cimplicitpointerexample1dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 struct S { short a; char b, c; };
 volatile int v;
@@ -3299,7 +3299,7 @@ int main ()
 \label{fig:cimplicitpointerexample1source}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \addtoindexx{implicit pointer example}
 \begin{dwflisting}
 \begin{alltt}
@@ -3374,7 +3374,7 @@ function, \texttt{label1} follows the first \texttt{v++} block,
 Given these assumptions a possible DWARF description is shown in
 Figure \refersec{fig:cimplicitpointerexample2dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 
@@ -3409,7 +3409,7 @@ label3:
 \label{fig:cimplicitpointerexample2source}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \addtoindexx{implicit pointer example}
 \begin{dwflisting}
 \begin{alltt}
@@ -3468,7 +3468,7 @@ Consider the \addtoindex{Fortran 2003} string type example source in
 Figure \referfol{fig:stringtypeexamplesource}. The DWARF representation in
 Figure \refersec{fig:stringtypeexampledwarf} is appropriate.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \addtoindexx{ISO 10646 character set standard}
 \begin{lstlisting}
         program character_kind
@@ -3498,7 +3498,7 @@ Figure \refersec{fig:stringtypeexampledwarf} is appropriate.
 \label{fig:stringtypeexamplesource}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 
@@ -3566,7 +3566,7 @@ Returns a function value in register 0.
 \subsection{Call Site Example \#1 (C)}
 Consider the \addtoindex{C} source in Figure \referfol{fig:callsiteexample1source}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 
 extern void fn1 (long int, long int, long int);
@@ -3663,7 +3663,7 @@ including \texttt{n} over which the following
 location description applies):
 \eb
 
-%\begin{figure}[h]
+%\begin{figure}[ht]
 \begin{dwflisting}
 \bb
 \begin{alltt}
@@ -3720,7 +3720,7 @@ The call sites for all the calls in function \texttt{fn3} are children of the
 if there is any for the whole function). 
 This is shown in Figure \refersec{fig:callsiteexample1dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -3815,7 +3815,7 @@ Figure \refersec{fig:callsiteexample2source}
 which is used to illustrate how Fortran's \doublequote{pass by reference}
 parameters can be handled.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 subroutine fn4 (n)
     integer :: n, x
@@ -3842,7 +3842,7 @@ end subroutine fn5
 \clearpage
 Possible generated code for this source is shown using a suggestive 
 pseudo-\linebreak[0]assembly notation in Figure \refersec{fig:callsiteexample2code}.
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{lstlisting}
 
 fn4:
@@ -3879,7 +3879,7 @@ The location description for variable \texttt{x} in function
 The call sites in (just) function \texttt{fn5} might be as shown in 
 Figure \refersec{fig:callsiteexample2dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 
@@ -3924,7 +3924,7 @@ Consider the \addtoindex{C} source in Figure
 \referfol{ref:macroexamplesource} which is used to illustrate the
 DWARF encoding of macro information (see Section \refersec{chap:macroinformation}).
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \textit{File a.c}
 \begin{lstlisting}
 #include "a.h"
index b4f2352..4022382 100644 (file)
@@ -4,11 +4,9 @@
 \label{chap:thedebuggingentrydie}
 DWARF 
 \addtoindexx{debugging information entry}
-uses 
-\addtoindexx{DIE|see{debugging information entry}}
-a series of debugging information entries (DIEs) to 
-define a low-level
-representation of a source program. 
+uses a series of debugging information entries 
+(DIEs)\addtoindexx{DIE|see{debugging information entry}} 
+to define a low-level representation of a source program. 
 Each debugging information entry consists of an identifying
 \addtoindex{tag} and a series of 
 \addtoindex{attributes}. 
@@ -2451,7 +2449,7 @@ has been specified.
 \needlines{4}
 \textit {For example, the Intel386 \texttrademark\  processor might use the following values:}
 
-\begin{table}[h]
+\begin{table}[ht]
 \caption{Example address class codes}
 \label{tab:inteladdressclasstable}
 \centering
@@ -2692,6 +2690,7 @@ for a non-contiguous range of addresses.
 If an entity has no associated machine code, 
 none of these attributes are specified.
 
+\needlines{4}
 The \definitionx{base address} of the scope for any of the
 debugging information entries listed above is given by either the 
 \DWATlowpcNAME{}\livetargi{chap:DWATlowpcbaseaddressofscope}{}{base address of scope} 
@@ -2757,7 +2756,7 @@ relative to that base.
 The \definitionx{applicable base address} of a \addtoindex{range list} 
 entry is determined by the closest preceding base address 
 selection entry in the same range list (see
-Section \refersec{chap:baseaddressselectionentry}). 
+Section \ref{chap:baseaddressselectionentry}). 
 If there is no such selection
 entry, then the applicable base address defaults to the base
 address of the compilation unit 
index 720dc92..2c4801b 100644 (file)
@@ -141,6 +141,7 @@ like the i386 can represent the same physical machine location with
 different segment and offset pairs.  Identifying aliases is an 
 implementation issue.)
 
+\needlines{6}
 \subsection{Operating System Independence}
 DWARF is widely associated with SVR4 Unix and similar operating 
 systems like BSD and Linux.  DWARF fits well with the section 
@@ -186,7 +187,7 @@ converted into a more efficiently accessed internal representation.
 For the most part, the DWARF data in a section is not the same as 
 this internal representation.
 
-
+\needlines{4}
 \subsection{Efficient Processing} 
 DWARF is designed to be processed efficiently, so that a 
 producer (a compiler) can generate the debug descriptions 
@@ -328,6 +329,7 @@ is eliminated and its contents instead contained in \dotdebuginfo{} sections.
 (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 
 provides the ability to use an MD5 hash to validate 
 the source file version in use, allows pooling 
index 18055f3..6b57826 100644 (file)
@@ -185,6 +185,7 @@ names are placed in the index, and may communicate those rules to
 a cooperating consumer via an augmentation string, described
 below.}
 
+\needlines{4}
 \subsubsection{Structure of the Name Index}
 \label{chap:structureofthenametindex}
 Logically, the name index can be viewed as a list of names, with a
@@ -855,6 +856,7 @@ If there is no hash lookup table, there is no ordering
 \bbeb
 requirement for the name table.
 
+\needlines{6}
 \subsubsubsection{Abbreviations Table}
 The abbreviations table immediately follows the name table. This table
 consists of a series of abbreviation declarations. Its size is given
@@ -912,6 +914,7 @@ The entry pool immediately follows the abbreviations table. The second
 column of each row of the name table points to an offset in the entry
 pool, where a series of index entries for that name is located.
 
+\needlines{4}
 Each index entry in the series begins with an abbreviation code, and is
 followed by the attributes described by the abbreviation declaration
 for that code. The last index entry in the series is followed by a
@@ -1209,6 +1212,7 @@ program, the state of the registers is as show in Table
 \hline
 \end{tabular}
 \end{center}
+\vspace{5mm}
 \end{table}
 
 \textit{The 
@@ -1216,6 +1220,8 @@ program, the state of the registers is as show in Table
 architecturally determined default instruction set. This may
 be fixed by the ABI, or it may be specified by other means,
 for example, by the object file description.}
+
+\needlines{6}
 \subsection{Line Number Program Instructions}
 The state machine instructions in a line number program belong to one of three categories:
 
@@ -1226,7 +1232,7 @@ These have a \HFTubyte{} opcode field and no operands.\vspace{1ex}
 \textit{Most of the instructions in a 
 line number program are special opcodes.}
 
-\needlines{6}
+\needlines{4}
 \item standard opcodes \\
 These have a \HFTubyte{} opcode field which may be followed by zero or more
 \addtoindex{LEB128} operands (except for 
@@ -1236,7 +1242,7 @@ The opcode implies the number of operands and their meanings, but the
 line number program header also specifies the number of operands for
 each standard opcode.
 
-\needlines{6}
+\needlines{4}
 \item extended opcodes \\
 These have a multiple byte format. The first byte is zero; the next bytes
 are an unsigned LEB128\addtoindexx{LEB128!unsigned} integer giving the number of bytes in the
index c3b5ce4..e11d210 100644 (file)
@@ -1563,7 +1563,7 @@ that was expanded inline implicitly by the compiler has a
 set of values for the \DWATinline{} attribute is given in
 Table \refersec{tab:inlinecodes}.
 
-\begin{table}[h]
+\begin{table}[ht]
 \centering
 \caption{Inline codes}
 \label{tab:inlinecodes}
@@ -2541,8 +2541,10 @@ in the midst of a lexical \livelink{chap:lexicalblock}{block} in a
 language that allows executable code in a
 \nolink{block} before a variable declaration, or where one declaration
 containing initialization code may change the scope of a
-subsequent declaration.  Consider the following example \addtoindex{C} code:}
+subsequent declaration.}  
 
+\needlines{4}
+\textit{Consider the following example \addtoindex{C} code:}
 \vspace{3mm}
 \begin{lstlisting}
 float x = 99.99;
index 29528c7..2959b40 100644 (file)
@@ -48,7 +48,7 @@ object files.
 \r
 \section{Kinds of Units}\r
 \r
-\begin{table}[h]\r
+\begin{table}[ht]\r
 \caption{Kinds of Units and Their Characteristics}\r
 \label{tab:kindsofunitsandtheir characteristics}\r
 \footnotesize\r
index 6141e26..4551671 100644 (file)
@@ -123,15 +123,7 @@ output binary include the following:
 \item
 \dotdebugabbrev{} - Contains the abbreviation codes used by the
 skeleton \dotdebuginfo{} section.
-\item
-\dotdebuginfo{} - Contains a skeleton \DWTAGcompileunit{} DIE,
-but no children.
-\item
-\dotdebugstr{} - Contains any strings referenced by the skeleton
-\dotdebuginfo{} sections (via \DWFORMstrp{} or \DWFORMstrx{}).
-\item
-\dotdebugstroffsets{} - Contains the string offsets table for
-the strings in the \dotdebugstr{} section (if \DWFORMstrx is used).
+\bb
 \item
 \dotdebugaddr{} - Contains references to loadable sections,
 indexed by attributes of form \DWFORMaddrx{} or location
@@ -140,8 +132,16 @@ expression
 \eb
 \DWOPaddrx{} opcodes.
 \item
-\dotdebugline{} - Contains the line number tables, unaffected by
-this design. (These could be moved to the .dwo file, but in
+\dotdebugaranges{} - Contains the accelerated range lookup table
+for the compilation unit.
+\item
+\dotdebugframe{} - Contains the frame tables.
+\item
+\dotdebuginfo{} - Contains a skeleton \DWTAGcompileunit{} DIE,
+but no children.
+\item
+\dotdebugline{} - Contains the line number tables.
+(These could be moved to the .dwo file, but in
 order to do so, each \DWLNEsetaddress{} opcode would need to
 be replaced by a new opcode that referenced an entry in the
 \dotdebugaddr{} section. Furthermore, leaving this section in the
@@ -153,12 +153,6 @@ be replaced by a new opcode that referenced an entry in the
 combination with the \dotdebugline{} section.
 \eb
 \item
-\dotdebugframe{} - Contains the frame tables, unaffected by this
-design.
-\item
-\dotdebugranges{} - Contains the range lists, unaffected by this
-design.
-\item
 \dotdebugnames{} - Contains the names for use in
 building an index section. 
 \bbeb
@@ -166,8 +160,14 @@ The section header refers to a
 compilation unit offset, which is the offset of the
 skeleton compilation unit in the \dotdebuginfo{} section.
 \item
-\dotdebugaranges{} - Contains the accelerated range lookup table
-for the compilation unit, unaffected by this design.
+\dotdebugranges{} - Contains the range lists.
+\item
+\dotdebugstr{} - Contains any strings referenced by the skeleton
+\dotdebuginfo{} sections (via \DWFORMstrp{} or \DWFORMstrx{}).
+\item
+\dotdebugstroffsets{} - Contains the string offsets table for
+the strings in the \dotdebugstr{} section (if form \DWFORMstrx{} is used).
+\eb
 \end{itemize}
 
 \needlines{6}
@@ -240,7 +240,7 @@ kinds.
 \eb
 
 
-\begin{table}[h]
+\begin{table}[ht]
 \caption{Unit attributes by unit kind}
 \label{tab:unitattributesbyunitkind}
 \begin{tabular}{P{5.5cm}|cc|ccc}
@@ -322,7 +322,7 @@ When compiled with split DWARF, we will have two DWARF object files,
 \texttt{demo1.dwo} and \texttt{demo2.dwo}.
 
 \vspace{2cm}
-\begin{figure}[h]
+\begin{figure}[ht]
 \textit{File demo1.cc}
 \begin{lstlisting}
 #include "demo.h"
@@ -337,7 +337,7 @@ bool Box::contains(const Point& p) const
 \label{fig:splitobjectexamplesourcefragment1}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \textit{File demo2.cc}
 \begin{lstlisting}
 #include "demo.h"
@@ -382,7 +382,7 @@ bool Line::clip(const Box& b)
 \label{fig:splitobjectexamplesourcefragment2}
 \end{figure}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \textit{File demo.h}
 \begin{lstlisting}
 class A {
@@ -448,19 +448,19 @@ contains just a single DIE, the skeleton compilation unit,
 which may look like 
 Figure \referfol{fig:splitdwafexampleskeletondwarfdescription}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{alltt}
 
     \DWTAGcompileunit
-      \DWATcompdir: (reference to directory name in .debug_str)
-      \DWATdwoname: (reference to "demo1.dwo" in .debug_str)
-      \DWATdwoid: 0x44e413b8a2d1b8f
-      \DWATaddrbase: (reference to .debug_addr section)
-      \DWATrangesbase: (reference to range list in .debug_ranges section)
-      \DWATranges: (offset of range list in .debug_ranges section)
-      \DWATstmtlist: (reference to .debug_line section)
-      \DWATlowpc: 0
+        \DWATcompdir: (reference to directory name in .debug_str)
+        \DWATdwoname: (reference to "demo1.dwo" in .debug_str)
+        \DWATdwoid: 0x44e413b8a2d1b8f
+        \DWATaddrbase: (reference to .debug_addr section)
+        \DWATrangesbase: (reference to range list in .debug_ranges section)
+        \DWATranges: (offset of range list in .debug_ranges section)
+        \DWATstmtlist: (reference to .debug_line section)
+        \DWATlowpc: 0
       
 \end{alltt}
 \end{dwflisting}
@@ -593,11 +593,13 @@ compilation unit.
 form code \DWFORMstrx, referring to slots in the
 \dotdebugstroffsetsdwo{} section.
 
-\needlines{4}
+\bbpareb
+
 \item References to range lists in the \dotdebugranges{} section are
 all relative to the base offset given by \DWATrangesbase{}
 in the skeleton compilation unit.
 
+\needlines{4}
 \item References to relocatable addresses in the object file use the 
 \bbeb 
 form code \DWFORMaddrx, referring to slots in the
@@ -605,11 +607,13 @@ form code \DWFORMaddrx, referring to slots in the
 \DWATaddrbase{} in the skeleton compilation unit.
 \end{itemize}
 
-Figure \refersec{fig:splitobjectexampledemoonedwodwarfexcerpts} presents
+\vspace*{1mm}
+Figure \referfol{fig:splitobjectexampledemoonedwodwarfexcerpts} presents
 \bbeb
 excerpts from the \dotdebuginfodwo{} section for \texttt{demo1.dwo}.
 
-\begin{figure}[h]
+\begin{figure}[ht]
+\vspace{1mm}
 \figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
@@ -620,34 +624,35 @@ excerpts from the \dotdebuginfodwo{} section for \texttt{demo1.dwo}.
         \DWATname [\DWFORMstrx]: (slot 7) "demo1.cc"
         \DWATcompdir [\DWFORMstrx]: (slot 4) (directory name)
         \DWATdwoid [\DWFORMdataeight]: 0x44e413b8a2d1b8f
-1$:   \DWTAGclasstype
-          \DWATname [\DWFORMstrx]: (slot 12) "Point"
-          \DWATsignature [\DWFORMrefsigeight]: 0x2f33248f03ff18ab
-          \DWATdeclaration: true
-2$:     \DWTAGsubprogram
-          \DWATexternal: true
-          \DWATname [\DWFORMstrx]: (slot 12) "Point"
-          \DWATdeclfile: 1
-          \DWATdeclline: 5
-          \DWATlinkagename [\DWFORMstrx]: (slot 16): "_ZN5PointC4Eff"
-          \DWATaccessibility: \DWACCESSpublic
-          \DWATdeclaration: true
-        ...
-3$:   \DWTAGclasstype
-          \DWATname [\DWFORMstring]: "Box"
-          \DWATsignature [\DWFORMrefsigeight]: 0xe97a3917c5a6529b
-          \DWATdeclaration: true
-        ...
-4$:     \DWTAGsubprogram
-            \DWATexternal: true
-            \DWATname [\DWFORMstrx]: (slot 0) "contains"
-            \DWATdeclfile: 1
-            \DWATdeclline: 28
-            \DWATlinkagename [\DWFORMstrx]: (slot 8) "_ZNK3Box8containsERK5Point"
-            \DWATtype: (reference to 7$)
-            \DWATaccessibility: \DWACCESSpublic
+1$:     \DWTAGclasstype
+            \DWATname [\DWFORMstrx]: (slot 12) "Point"
+            \DWATsignature [\DWFORMrefsigeight]: 0x2f33248f03ff18ab
             \DWATdeclaration: true
-        ...
+2$:         \DWTAGsubprogram
+                \DWATexternal: true
+                \DWATname [\DWFORMstrx]: (slot 12) "Point"
+                \DWATdeclfile: 1
+                \DWATdeclline: 5
+                \DWATlinkagename [\DWFORMstrx]: (slot 16): "_ZN5PointC4Eff"
+                \DWATaccessibility: \DWACCESSpublic
+                \DWATdeclaration: true
+            ...
+3$:     \DWTAGclasstype
+            \DWATname [\DWFORMstring]: "Box"
+            \DWATsignature [\DWFORMrefsigeight{}]: 0xe97a3917c5a6529b
+            \DWATdeclaration: true
+          ...
+4$:         \DWTAGsubprogram
+                \DWATexternal: true
+                \DWATname [\DWFORMstrx]: (slot 0) "contains"
+                \DWATdeclfile: 1
+                \DWATdeclline: 28
+                \DWATlinkagename [\DWFORMstrx: (slot 8) "_ZNK3Box8containsERK5Point"
+                \DWATtype: (reference to 7$)
+                \DWATaccessibility: \DWACCESSpublic
+                \DWATdeclaration: true
+          ...
+
 \end{alltt}
 \end{dwflisting}
 \caption{Split object example: \texttt{demo1.dwo} excerpts}
@@ -667,17 +672,17 @@ excerpts from the \dotdebuginfodwo{} section for \texttt{demo1.dwo}.
           \DWAThighpc [\DWFORMdataeight]: 0xbb
           \DWATframebase: \DWOPcallframecfa
           \DWATobjectpointer: (reference to 6$)
-6$:     \DWTAGformalparameter
-            \DWATname [\DWFORMstrx]: (slot 13): "this"
-            \DWATtype: (reference to 8$)
-            \DWATartificial: true
-            \DWATlocation: \DWOPfbreg(-24)
-        \DWTAGformalparameter
-            \DWATname [\DWFORMstring]: "p"
-            \DWATdeclfile: 2
-            \DWATdeclline: 3
-            \DWATtype: (reference to 11$)
-            \DWATlocation: \DWOPfbreg(-32)
+6$:       \DWTAGformalparameter
+              \DWATname [\DWFORMstrx]: (slot 13): "this"
+              \DWATtype: (reference to 8$)
+              \DWATartificial: true
+              \DWATlocation: \DWOPfbreg(-24)
+          \DWTAGformalparameter
+              \DWATname [\DWFORMstring]: "p"
+              \DWATdeclfile: 2
+              \DWATdeclline: 3
+              \DWATtype: (reference to 11$)
+              \DWATlocation: \DWOPfbreg(-32)
       ...
 7$:   \DWTAGbasetype
           \DWATbytesize: 1
@@ -708,6 +713,7 @@ Figure~\ref{fig:splitobjectexampledemoonedwodwarfexcerpts}: Split object example
 \end{center}
 \end{figure}
 
+\needlines{4}
 In the defining declaration for \texttt{Box::contains} at 5\$, the
 \DWATlowpc{} attribute is represented with \DWFORMaddrx,
 referring to slot 0 in the \dotdebugaddr{} table from \texttt{demo1.o}.
@@ -750,9 +756,9 @@ The tool that builds the DWARF package file must understand
 the structure of the \dotdebugstroffsetsdwo{} section in 
 order to apply the necessary adjustments. 
 \bb
-(Section \refersec{app:dwarfpackagefileexample} presents
+Section \refersec{app:dwarfpackagefileexample} presents
+an example of a DWARF package file.
 \eb
-an example of a DWARF package file.)
 
 \needlines{4}
 The \dotdebuglocdwo{} section contains the location lists referenced
@@ -770,17 +776,18 @@ in Section \refersec{datarep:locationlistentriesinsplitobjects}.
         \DWATname [\DWFORMstrx]: (slot 20) "Line"
         \DWATsignature [\DWFORMrefsigeight]: 0x79c7ef0eae7375d1
         \DWATdeclaration: true
-    ...
-2$:   \DWTAGsubprogram
-          \DWATexternal: true
-          \DWATname [\DWFORMstrx]: (slot 19) "clip"
-          \DWATdeclfile: 2
-          \DWATdeclline: 16
-          \DWATlinkagename [\DWFORMstrx]: (slot 2) "_ZN4Line4clipERK3Box"
-          \DWATtype: (reference to DIE for bool)
-          \DWATaccessibility: \DWACCESSpublic
-          \DWATdeclaration: true
-      ...
+        ...
+2$:     \DWTAGsubprogram
+            \DWATexternal: true
+            \DWATname [\DWFORMstrx]: (slot 19) "clip"
+            \DWATdeclfile: 2
+            \DWATdeclline: 16
+            \DWATlinkagename [\DWFORMstrx]: (slot 2) "_ZN4Line4clipERK3Box"
+            \DWATtype: (reference to DIE for bool)
+            \DWATaccessibility: \DWACCESSpublic
+            \DWATdeclaration: true
+        ...
+
 \end{alltt}
 \end{dwflisting}
 \caption{Split object example: \texttt{demo2.dwo} DWARF \dotdebuginfodwo{} excerpts}
@@ -800,26 +807,26 @@ in Section \refersec{datarep:locationlistentriesinsplitobjects}.
           \DWAThighpc [\DWFORMdataeight]: 0x1ec
           \DWATframebase: \DWOPcallframecfa
           \DWATobjectpointer: (reference to 4$)
-4$:     \DWTAGformalparameter
-            \DWATname: (indexed string: 0x11): this
-            \DWATtype: (reference to DIE for type const Point* const)
-            \DWATartificial: 1
-            \DWATlocation: 0x0 (location list)
-5$:     \DWTAGformalparameter
-            \DWATname: b
-            \DWATdeclfile: 1
-            \DWATdeclline: 3
-            \DWATtype: (reference to DIE for type const Box& const)
-            \DWATlocation [\DWFORMsecoffset]: 0x2a
-6$:     \DWTAGlexicalblock
-            \DWATlowpc [\DWFORMaddrx]: (slot 17)
-            \DWAThighpc: 0x1d5
-7$:       \DWTAGvariable
-              \DWATname [\DWFORMstrx]: (slot 28): "slope"
+4$:       \DWTAGformalparameter
+              \DWATname: (indexed string: 0x11): this
+              \DWATtype: (reference to DIE for type const Point* const)
+              \DWATartificial: 1
+              \DWATlocation: 0x0 (location list)
+5$:       \DWTAGformalparameter
+              \DWATname: b
               \DWATdeclfile: 1
-              \DWATdeclline: 5
-              \DWATtype: (reference to DIE for type float)
-              \DWATlocation [\DWFORMsecoffset]: 0x49
+              \DWATdeclline: 3
+              \DWATtype: (reference to DIE for type const Box& const)
+              \DWATlocation [\DWFORMsecoffset]: 0x2a
+6$:       \DWTAGlexicalblock
+              \DWATlowpc [\DWFORMaddrx]: (slot 17)
+              \DWAThighpc: 0x1d5
+7$:           \DWTAGvariable
+                  \DWATname [\DWFORMstrx]: (slot 28): "slope"
+                  \DWATdeclfile: 1
+                  \DWATdeclline: 5
+                  \DWATtype: (reference to DIE for type float)
+                  \DWATlocation [\DWFORMsecoffset]: 0x49
 
 \end{alltt}
 \end{dwflisting}
@@ -864,7 +871,7 @@ location lists at those offsets in the \dotdebuglocdwo{} section.
 \newcommand{\XXLLEeol}{\hyperlink{chap:DWLLEendoflistentry}{end\_of\_list\_entry}
                        \index{DW\_LLE\_end\_of\_list\_entry}}
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{dwflisting}
 \begin{tabular}{rl|rr|rl}
        &  entry type          & \multicolumn{2}{c}{range} 
@@ -975,7 +982,7 @@ resulting package file would contain the sections shown in Figure
 \refersec{fig:sectionsandcontributionsinapackagefile}, 
 with contributions from each input file as shown.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{center}
 \begin{tabular}{P{4.7cm}|P{8cm}}
 \hline
@@ -1005,13 +1012,13 @@ with contributions from each input file as shown.
      \dotdebugstroffsetsdwo{} from \texttt{demo2.dwo}, \hspace*{6mm}adjusted \\
 \hline
   \dotdebugstrdwo{}
-&    \bbeb merged string table \\
+&    \bbeb merged string table generated by package utility \\
 \hline
   \dotdebugcuindex
-&    \bbeb CU index \\
+&    \bbeb CU index generated by package utility \\
 \hline
   \dotdebugtuindex
-&    \bbeb TU index \\
+&    \bbeb TU index generated by package utility \\
 \hline
 \end{tabular}
 \end{center}
@@ -1092,7 +1099,7 @@ Figure \refersec{fig:splitobjectexampledemotwodwodwarfdebuglocdwoexcerpts}
 can be found in \texttt{demo.dwp} at offset 157 (84 + 73) in
 the combined \dotdebuglocdwo{} section.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{center}
 \begin{tabular}{lrrrrrr}
 \\
@@ -1139,7 +1146,7 @@ The sharing of these tables between compilation units and type units
 is typical for some implementations, but is not required by the
 DWARF standard.
 
-\begin{figure}[h]
+\begin{figure}[ht]
 \begin{center}
 \begin{tabular}{lrrrrr}
 \\
index 43b879d..f4116e6 100644 (file)
@@ -101,7 +101,7 @@ for presentation purposes. These groups are not part of this
 DWARF specification.}
 
 \newcommand{\EncodingGroup}[1]{\multicolumn{2}{l}{\hspace{2cm}\bfseries\textit{#1}}}
-\begin{table}[!h]
+\begin{table}[!ht]
 \caption{Encoding attribute values}
 \label{tab:encodingattributevalues}
 \centering
@@ -261,7 +261,7 @@ mean that the type has a leading overpunch, trailing overpunch,
 leading separate or trailing separate sign representation or,
 alternatively, no sign at all.
 
-\begin{table}[h]
+\begin{table}[ht]
 \caption{Decimal sign attribute values}
 \label{tab:decimalsignattributevalues}
 \centering
@@ -461,7 +461,7 @@ source
 \addtoindexx{parameter|see{formal parameter entry}}
 presentation.
 
-\begin{table}[h]
+\begin{table}[ht]
 \caption{Type modifier tags}
 \label{tab:typemodifiertags}
 \centering