Complete figure to table conversion; other cleanups
authorRon Brender <ron.brender@gmail.com>
Thu, 31 Jan 2013 23:15:15 +0000 (18:15 -0500)
committerRon Brender <ron.brender@gmail.com>
Thu, 31 Jan 2013 23:15:15 +0000 (18:15 -0500)
18 files changed:
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/copyright.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/encodingdecoding.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/foreword.tex
dwarf5/latexdoc/foreword4.1.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/gnulicense.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/sectionversionnumbers.tex
dwarf5/latexdoc/typeentries.tex

index 63d3d79..0749b47 100644 (file)
@@ -439,7 +439,8 @@ means includes all three of the
 &\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}  \\
 
 \hline
-\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}  \\
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+&DECL  \\
 &\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}  \\
 &\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}  \\
 &\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}  \\
index 3730811..9ebccb1 100644 (file)
@@ -190,9 +190,9 @@ Implementations should clearly document their naming conventions.
 
 In the following, it will be helpful to refer to the examples
 in 
-Figure \ref{app:duplicateeliminationexample1csource}
+Figure \ref{fig:duplicateeliminationexample1csource}
 through 
-Figure \ref{app:duplicateeliminationexample2companiondwarf}
+Figure \ref{fig:duplicateeliminationexample2companiondwarf}
 of 
 Section \refersec{app:examples}.
 
@@ -214,7 +214,7 @@ is some string specific to the
 producer, which has a language\dash designation embedded in the
 name when appropriate. (Alternatively, the language name
 could be embedded in the 
-\textless gid\dash number \textgreater).
+\textless gid\dash number\textgreater).
 
 
 \item  [\textless file\dash designator\textgreater]
@@ -293,13 +293,13 @@ In general, every point in the
 \addtoindexx{section group}
 section group 
 \addtoindex{.debug\_info} that
-could be referenced from outside by any compilation unit must
+could be referenced from outside by \emph{any} compilation unit must
 normally have an external name generated for it in the linker
 symbol table, whether the current compilation references all
 those points or not.
 
-The completeness of the set of names generated is a
-quality\dash of\dash implementation issue.
+\textit{The completeness of the set of names generated is a
+quality\dash of\dash implementation issue.}
 
 It is up to the producer to ensure that if 
 \textless die\dash numbers\textgreater\ 
@@ -405,7 +405,7 @@ from another \addtoindex{.debug\_info} (from anywhere), the
 name should be used for an external symbol and a relocation
 generated based on that name.
 
-When referencing into a 
+\textit{When referencing into a 
 \addtoindexx{section group}
 non-section group 
 \addtoindex{.debug\_info},
@@ -414,7 +414,7 @@ from another \addtoindex{.debug\_info} (from anywhere)
 still the form to be used, but a section\dash relative relocation
 generated by use of a non-exported name (often called an
 ``internal name'') may be used for references within the
-same object file.
+same object file.}
 
 \subsection{Examples}
 \label{app:examples}
@@ -453,13 +453,13 @@ is used to illustrate the DWARF
 representation intended to allow duplicate elimination.
 
 \begin{figure}[t]
-\textbf{File wa.h:}
+\textit{File wa.h}
 \begin{lstlisting}[numbers=none]
 struct A {
    int i;
 };
 \end{lstlisting}
-\textbf{File wa.c:}
+\textit{File wa.c}
 \begin{lstlisting}[numbers=none]
 #include "wa.h";
 int
@@ -1242,51 +1242,42 @@ Figure \refersec{fig:typesignatureexampleusage}.
 \subsection{Type Signature Computation Grammar}
 \label{app:typesignaturecomputationgrammar}
 
-This section
+Figure \refersec{fig:typesignaturecomputationgrammar}
 \addtoindexx{type signature!computation grammar}
 presents a semi-formal grammar that may aid in understanding
 how the bytes of the flattened type description are formed
-during the type signature computation algorithm of Section
+during the type signature computation algorithm of
 Section \refersec{datarep:typesignaturecomputation}. 
 
+\begin{figure}[h]
+\begin{dwflisting}
 %FIXME: The index entries here with \addtoindexx are ineffective.
 \begin{alltt}
 signature
     : opt-context debug-entry attributes children
-
 opt-context           // Step 2
     : 'C' tag-code string opt-context
     : empty
-
 debug-entry           // Step 3
     : 'D' tag-code
-
 attributes            // Steps 4, 5, 6
     : attribute attributes
     : empty
-
 attribute
     : 'A' at-code form-encoded-value     // Normal attributes
-    : 'N' at-code opt-context 'E' string // Reference to type
-                                         // by name
-    : 'R' at-code back-ref               // Back-reference 
-                                         // to visited type
+    : 'N' at-code opt-context 'E' string // Reference to type by name
+    : 'R' at-code back-ref               // Back-reference to visited type
     : 'T' at-code signature              // Recursive type
-    
 children             //  Step 7
     : child children
     : '0'
-
 child
     : 'S' tag-code string
     : signature
-
 tag-code
     : <ULEB128>
-
 at-code
     : <ULEB128>
-    
 form-encoded-value
     : \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} value \addtoindexx{constant class}
     : \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} value \addtoindexx{flag class}
@@ -1300,23 +1291,21 @@ form-encoded-value
     : 'x0c'
 \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \addtoindexx{constant class}
     : 'x0d'
-    
 value
     : <SLEB128>
-    
 \nolink{block}
-    : <ULEB128> <fixed-length-block>
-                      // The ULEB128 gives the length of the \nolink{block}
+    : <ULEB128> <fixed-length-block> // The ULEB128 gives the length of the \nolink{block}
 back-ref
     : <ULEB128>
-    
 string
     : <null-terminated-string>
-    
 empty
     :
 \end{alltt}
-
+\end{dwflisting}
+\caption{Type signature computation grammar}
+\label{fig:typesignaturecomputationgrammar}
+\end{figure}
 
 \section{Summary of Compression Techniques}
 \label{app:summaryofcompressiontechniques}
@@ -1365,16 +1354,9 @@ by the static linker are simply discarded.
 
 References to other 
 \addtoindex{.debug\_info} sections follow the approach
-suggested above, but the naming rule might be slightly
-different in that the 
-\begin{alltt}
-<file-designator> 
-\end{alltt}
-should be interpreted
-as a 
-\begin{alltt}
-<function-designator>.
-\end{alltt}
+suggested above, but the naming rule is slightly
+different in that the \texttt{\textless file-designator\textgreater} 
+should be interpreted as a \texttt{\textless file-designator\textgreater}.
 
 
 
index 098ae97..c0359c7 100644 (file)
@@ -53,7 +53,7 @@ Trademarks:
 \begin{itemize}
 \item Intel386 is a trademark of Intel Corporation.
 
-\item Java is a trademark of Sun Microsystems, Inc.
+\item Java is a trademark of Oracle, Inc.
 
 \item All other trademarks found herein are property of their respective owners.
 
index 4584829..92a80d4 100644 (file)
@@ -76,6 +76,7 @@ In a variable entry representing a non-defining declaration of a variable, the l
 specified modifies the location specified by the defining declaration and only applies for the
 scope of the variable entry; if no location is specified, then the location specified in the
 defining declaration applies.
+
 The location of a variable may be further specified with 
 \addtoindexx{segment attribute!and data segment}
 a 
@@ -243,21 +244,23 @@ of data for the given type is assumed.
 
 The set of values
 and their meaning for this attribute is given in 
-Figure \ref{fig:endianityattributevalues}.
+Table \ref{tab:endianityattributevalues}.
 
-\begin{figure}[here]
+\begin{table}[here]
+\caption{Endianity attribute values}
+\label{tab:endianityattributevalues}
 \centering
-\begin{tabular}{lp{9cm}}
+\begin{tabular}{l|p{9cm}}
+\hline
 Name&Meaning\\ \hline
 \livetarg{chap:DWENDdefault}{DW\-\_END\-\_default} &  Default endian encoding
-  (equivalent to the absence of a 
+  (equivalent to the \mbox{absence} of a 
   \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute) \\
 \livetarg{chap:DWENDbig}{DW\-\_END\-\_big} & Big\dash endian encoding \\
 \livetarg{chap:DWENDlittle}{DW\-\_END\-\_little}& Little-endian encoding \\
+\hline
 \end{tabular}
-\caption{Endianity attribute values}
-\label{fig:endianityattributevalues}
-\end{figure}
+\end{table}
 
 
 These represent the default encoding formats as defined by
index 920c5d0..a951f62 100644 (file)
@@ -224,10 +224,11 @@ of DWARF format as follows. For the 32\dash bit DWARF format,
 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
 format, the value is a 64\dash bit unsigned integer.
 \begin{center}
-\begin{tabular}{lll}
+\begin{tabular}{ll}
 Form & Role  \\ \hline
 \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in \addtoindex{.debug\_info} \\
-\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than \addtoindex{.debug\_info} or \addtoindex{.debug\_str} \\
+\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& 
+        \parbox{5.5cm}{offset in a section other than \addtoindex{.debug\_info} or \addtoindex{.debug\_str}} \\
 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in \addtoindex{.debug\_str} \\
 \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&offset in \addtoindex{.debug\_info} \\
 \end{tabular}
@@ -283,7 +284,8 @@ the object file. Each such contribution consists of a
 compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}) 
 followed by a
-single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
+single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or 
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
 information entry, together with its children.
 
 For each type defined in a compilation unit, a contribution may
@@ -486,6 +488,85 @@ number that encodes the entry’s tag. The encodings for the
 tag names are given in 
 Table \refersec{tab:tagencodings}.
 
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|l}
+  \hline
+  \caption{Tag encodings} \label{tab:tagencodings} \\
+  \hline \bfseries Tag name&\bfseries Value\\ \hline
+\endfirsthead
+  \bfseries Tag name&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
+\endlastfoot
+\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
+\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
+\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
+\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
+\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
+\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
+\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
+\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
+\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
+\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
+\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
+\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
+\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
+\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
+\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
+\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
+\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
+\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
+\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
+\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
+\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
+\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
+\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
+\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
+\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
+\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
+\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
+\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
+\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
+\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
+\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
+\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
+\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
+\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
+\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
+\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
+\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
+\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
+\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
+\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
+\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
+\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
+\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
+\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
+\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
+\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
+\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
+\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
+\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
+\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
+\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
+\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
+\end{longtable}
+\end{centering}
+
 Following the tag encoding is a 1\dash byte value that determines
 whether a debugging information entry using this abbreviation
 has child entries or not. If the value is 
@@ -504,6 +585,25 @@ Table \refersec{tab:childdeterminationencodings}
 Section \refersec{chap:relationshipofdebugginginformationentries}, 
 each chain of sibling entries is terminated by a null entry.)
 
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|l}
+  \caption{Child determination encodings}
+  \label{tab:childdeterminationencodings}
+  \addtoindexx{Child determination encodings} \\
+  \hline \bfseries Children determination name&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries Children determination name&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+\endlastfoot
+\livelink{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}&0x00 \\ 
+\livelink{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes}&0x01 \\ \hline
+\end{longtable}
+\end{centering}
+
 Finally, the child encoding is followed by a series of
 attribute specifications. Each attribute specification
 consists of two parts. The first part is an unsigned LEB128
@@ -532,6 +632,7 @@ Appendix \refersec{app:compilationunitsandabbreviationstableexample}
 for a depiction of the organization of the
 debugging information.}
 
+
 \subsection{Attribute Encodings}
 \label{datarep:attributeencodings}
 
@@ -561,7 +662,8 @@ of classes allowed by the applicable attribute in
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
-\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
+\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and 
+\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
 \addtoindexx{lineptr class}
 members 
 \addtoindexx{rangelistptr class}
@@ -728,7 +830,8 @@ This is an
 \addtoindexx{section offset!in class macptr value}
 offset into the 
 \addtoindex{.debug\_macinfo} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
+It consists of an offset from the
 beginning of the \addtoindex{.debug\_macinfo} 
 section to the first byte of
 the data making up the macro information list for the compilation
@@ -797,7 +900,8 @@ information entry within a
 it may refer to an entry in a different compilation unit
 from the unit containing the reference, and may refer to an
 entry in a different shared object.  This type of reference
-(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
+(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) 
+is an offset from the beginning of the
 \addtoindex{.debug\_info} 
 section of the target executable or shared object;
 it is relocatable in a relocatable object file and frequently
@@ -811,7 +915,8 @@ unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \textit{A debugging information entry that may be referenced by
-another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
+another compilation unit using 
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
 global symbolic name.}
 
 \textit{For a reference from one executable or shared object to
@@ -887,109 +992,13 @@ of
 the 
 \addtoindexx{macptr class}
 classes \livelink{chap:lineptr}{lineptr},
-\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
+\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or 
+\livelink{chap:rangelistptr}{rangelistptr} to point into either the
 \addtoindex{.debug\_info} or \addtoindex{.debug\_str} section.
 
 The form encodings are listed in 
 Table \refersec{tab:attributeformencodings}.
 
-\begin{centering}
-\setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l}
-  \caption{Tag encodings} \label{tab:tagencodings} \\
-  \hline \bfseries Tag name&\bfseries Value\\ \hline
-\endfirsthead
-  \bfseries Tag name&\bfseries Value \\ \hline
-\endhead
-  \hline \emph{Continued on next page}
-\endfoot
-  \hline
-  \ddag New in \addtoindex{DWARF Version 4}
-\endlastfoot
-\livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
-\livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
-\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
-\livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
-\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
-\livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
-\livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
-\livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
-\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
-\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
-\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
-\livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
-\livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
-\livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
-\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
-\livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
-\livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
-\livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
-\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
-\livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
-\livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
-\livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
-\livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
-\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
-\livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
-\livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
-\livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
-\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
-\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
-\livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
-\livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
-\livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
-\livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
-\livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
-\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
-\livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
-\livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
-\livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
-\livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
-\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
-\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
-\livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
-\livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
-\livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
-\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
-\livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
-\livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
-\livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
-\livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
-\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
-\livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
-\livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
-\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
-\livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
-\livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
-\livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
-\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
-\livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
-\livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
-\livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
-\end{longtable}
-\end{centering}
-
-
-\begin{centering}
-\setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l}
-  \caption{Child determination encodings}
-  \label{tab:childdeterminationencodings}
-  \addtoindexx{Child determination encodings} \\
-  \hline \bfseries Children determination name&\bfseries Value \\ \hline
-\endfirsthead
-  \bfseries Children determination name&\bfseries Value \\ \hline
-\endhead
-  \hline \emph{Continued on next page}
-\endfoot
-  \hline
-\endlastfoot
-\livelink{chap:DWCHILDRENno}{DW\-\_CHILDREN\-\_no}&0x00 \\ 
-\livelink{chap:DWCHILDRENyes}{DW\-\_CHILDREN\-\_yes}&0x01 \\ \hline
-\end{longtable}
-\end{centering}
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
@@ -1004,7 +1013,7 @@ Table \refersec{tab:attributeformencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \ddag New in \addtoindex{DWARF Version 4}
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 \livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference 
         \addtoindexx{sibling attribute!encoding} \\
@@ -1210,7 +1219,7 @@ Table \refersec{tab:attributeformencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \ddag New in \addtoindex{DWARF Version 4}
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
 \livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&\livelink{chap:block}{block} \\
@@ -1371,7 +1380,7 @@ Table \refersec{tab:dwarfoperationencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{l|l|l|l}
+\begin{longtable}{l|l|c|l}
   \caption{DWARF operation encodings} \label{tab:dwarfoperationencodings} \\
   \hline & &\bfseries No. of  &\\ 
   \bfseries Operation&\bfseries Code &\bfseries Operands &\bfseries Notes\\ \hline
@@ -1382,7 +1391,7 @@ Table \refersec{tab:dwarfoperationencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \ddag New in \addtoindex{DWARF Version 4}
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
@@ -1536,7 +1545,7 @@ Table \refersec{tab:basetypeencodingvalues}
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \ddag New in \addtoindex{DWARF Version 4}
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
@@ -1741,7 +1750,7 @@ defined language.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \dag See text
+  \dag \ \textit{See text}
 \endlastfoot
 
 \livelink{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&0x0001&0       \\
@@ -1846,9 +1855,9 @@ Table \refersec{tab:inlineencodings}.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
   \caption{Inline encodings} \label{tab:inlineencodings}\\
-  \hline \bfseries Iline Code name&\bfseries Value \\ \hline
+  \hline \bfseries Inline Code name&\bfseries Value \\ \hline
 \endfirsthead
-  \bfseries Iline Code name&\bfseries Value\\ \hline
+  \bfseries Inline Code name&\bfseries Value\\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
@@ -2103,7 +2112,7 @@ Table \refersec{tab:linenumberstandardopcodeencodings}.
 \livelink{chap:DWLNSsetcolumn}{DW\-\_LNS\-\_set\-\_column}&0x05 \\
 \livelink{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt}&0x06 \\
 \livelink{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}&0x07 \\
-\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}*0x08 \\
+\livelink{chap:DWLNSconstaddpc}{DW\-\_LNS\-\_const\-\_add\-\_pc}&0x08 \\
 \livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}&0x09 \\
 \livelink{chap:DWLNSsetprologueend}{DW\-\_LNS\-\_set\-\_prologue\-\_end}&0x0a \\
 \livelink{chap:DWLNSsetepiloguebegin}{DW\-\_LNS\-\_set\-\_epilogue\-\_begin}&0x0b \\
@@ -2128,7 +2137,7 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
   \hline \emph{Continued on next page}
 \endfoot
   \hline
-  \ddag New in \addtoindex{DWARF Version 4}
+  \ddag \ \textit{New in \addtoindex{DWARF Version 4}}
 \endlastfoot
 
 \livelink{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence}&0x01    \\
@@ -2155,6 +2164,7 @@ The encodings
 are given in 
 Table \refersec{tab:macinfotypeencodings}.
 
+\clearpage
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
@@ -2408,57 +2418,58 @@ the debugging information entry.
 the debugging information entry, in the order listed below,
 append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
-
-\begin{itemize}
-\item \livelink{chap:DWATname}{DW\-\_AT\-\_name}
-\item \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
-\item \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
-\item \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}
-\item \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}
-\item \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
-\item \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
-\item \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
-\item \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
-\item \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
-\item \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
-\item \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
-\item \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
-\item \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
-\item \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
-\item \livelink{chap:DWATcount}{DW\-\_AT\-\_count}
-\item \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
-\item \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
-\item \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
-\item \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
-\item \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
-\item \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
-\item \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
-\item \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}
-\item \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
-\item \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
-\item \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
-\item \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
-\item \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}
-\item \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
-\item \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
-\item \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
-\item \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
-\item \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}
-\item \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}
-\item \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
-\item \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
-\item \livelink{chap:DWATsmall}{DW\-\_AT\-\_small}
-\item \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
-\item \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
-\item \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
-\item \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
-\item \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
-\item \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
-\item \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
-\item \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
-\item \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
-\item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
-\end{itemize}
+\begin{center}
+\autocols[0pt]{c}{2}{l}{
+\livelink{chap:DWATname}{DW\-\_AT\-\_name},
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility},
+\livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class},
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated},
+\livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial},
+\livelink{chap:DWATassociated}{DW\-\_AT\-\_associated},
+\livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale},
+\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size},
+\livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride},
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride},
+\livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr},
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value},
+\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type},
+\livelink{chap:DWATcount}{DW\-\_AT\-\_count},
+\livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset},
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location},
+\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location},
+\livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale},
+\livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign},
+\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value},
+\livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count},
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr},
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list},
+\livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value},
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding},
+\livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class},
+\livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity},
+\livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit},
+\livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional},
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location},
+\livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound},
+\livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable},
+\livelink{chap:DWATordering}{DW\-\_AT\-\_ordering},
+\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string},
+\livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped},
+\livelink{chap:DWATsmall}{DW\-\_AT\-\_small},
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment},
+\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length},
+\livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled},
+\livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound},
+\livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location},
+\livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8},
+\livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter},
+\livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality},
+\livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility},
+\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
+}
+\end{center}
 
 Note that except for the initial 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
index 6140acd..0e089eb 100644 (file)
@@ -6,7 +6,7 @@ each of which holds a particular kind of information. In some
 cases, information in one section refers to information in one 
 or more of the others. These relationships are illustrated by 
 the diagram and associated notes on the following pages.
-\vspace{0.3in}
+\clearpage
 
 \setlength\maxovaldiam{80pt}
 \thicklines
@@ -80,9 +80,9 @@ the diagram and associated notes on the following pages.
 \end{picture}
 
 \clearpage
-\begin{centering}
+\begin{center}
    \textbf{Notes}
-\end{centering}
+\end{center}
 \begin{enumerate}[(a)]  
 \item  \addtoindex{.debug\_aranges}  \\
 The debug\_info\_offset value in
index fa5f76e..6d1bb6d 100644 (file)
@@ -48,15 +48,18 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \usepackage[plainpages=false,pdfpagelabels,pagebackref]{hyperref} % Lets us generate colored active links inside a pdf.
 \makeindex  % This and the makeidx package allow \index to create index entries.
 
-\newcommand{\docdate}{28 January 2013}
+\renewcommand{\familydefault}{phv}  % font family helvetica
+
+\newcommand{\docdate}{31 January 2013}
 
 \newcommand{\dwf}{DWARF Debugging Information Format}
+
 \newenvironment{myindentpara}[1]%
- {\begin{list}{}%
-   {\setlength{\leftmargin}{#1}}%
-   \item[]%
- }
- {\end{list}}
 {\begin{list}{}%
+    {\setlength{\leftmargin}{#1}}%
+    \item[]%
 }
 {\end{list}}
 
 % broken somehow.
 %\newcommand{\myindent1}[1]{\begin{myindentpara}{1cm}#1\end{myindentpara}}
@@ -115,7 +118,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \newcommand{\singlequote}[1]{\textquoteleft #1\textquoteright}
 
 % Better naming for the lowest level section header
-\newcommand{\subsubsubsection}[1]{\paragraph{#1}}
+\newcommand{\subsubsubsection}[1]{\paragraph{#1.}}
 
 % Reduce vertical space at beginning of a list
 \setlength{\topsep}{0in}
@@ -127,19 +130,20 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
     }
 
 % A simple rule used in simple tables; default length is 2 inches
-\newcommand{\simplerule}[1][2in]{\rule[4pt]{#1}{1pt}}
+\newcommand{\simplerule}[1][2in]{\rule[4pt]{#1}{0.5pt}}
 
 % 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}[here] \caption{#2} \label{#3}
         \begin{center}
         \renewcommand{\simplenametablerule}{\simplerule[#1]}
         \simplenametablerule \\
-        \textbf{Name} \\
-        \simplenametablerule \\
+        \begin{tabular*}{#1}{l}
         }
-    {   \simplenametablerule \\
+    {   \end{tabular*}
+        \vspace{4pt} \\
+        \simplenametablerule \\
         \end{center}
         \end{table}
         }
@@ -165,9 +169,10 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \includegraphics[keepaspectratio=true,scale=1.0]{DWlogo}
 
 \centering
-\vspace{1in}
+\vspace{3cm}
 \href{http://www.dwarfstd.org}{\dwf\ Committee}
+
+\vspace{2cm} 
 \url{http://www.dwarfstd.org}
 
 \large
@@ -240,19 +245,19 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % Define the levels of sectionality that are numbered.
 \setcounter{secnumdepth}{5}
 \include{introduction}
-\include{generaldescription}    \emptypage
-\include{programscope}
-\include{dataobject}            \emptypage
-\include{typeentries}           \emptypage
-\include{otherdebugginginformation}
-\include{datarepresentation}    \emptypage
+\include{generaldescription}            \emptypage
+\include{programscope}                  \emptypage
+\include{dataobject}                    \emptypage
+\include{typeentries}                   \emptypage
+\include{otherdebugginginformation}     \emptypage
+\include{datarepresentation}
 %  The \appendix toggles us into appendix chapters
 \appendix
 \include{attributesbytag}
-\include{debugsectionrelationships}
-\include{encodingdecoding}      \emptypage
-\include{examples}
-\include{compression}
+\include{debugsectionrelationships}     \emptypage
+\include{encodingdecoding}              \emptypage
+\include{examples}                      \emptypage
+\include{compression}                   \emptypage
 \include{sectionversionnumbers}
 \include{gnulicense}
 \printindex
index 48b4b1a..e15020a 100644 (file)
@@ -8,8 +8,6 @@ encode and decode signed and unsigned numbers in LEB128
 representation.
 
 \begin{figure}[here]
-\caption{Algorithm to encode an unsigned integer}
-\addtoindexx{LEB128!unsigned, encoding as}
 \begin{lstlisting}
 do
 {
@@ -20,11 +18,11 @@ do
     emit byte;
 } while (value != 0);
 \end{lstlisting}
+\caption{Algorithm to encode an unsigned integer}
+\addtoindexx{LEB128!unsigned, encoding as}
 \end{figure}
 
 \begin{figure}[here]
-\caption{Algorithm to encode a signed integer}
-\addtoindexx{LEB128!signed, encoding as}
 \begin{lstlisting}
 more = 1;
 negative = (value < 0);
@@ -49,11 +47,11 @@ while(more)
     emit byte;
 }
 \end{lstlisting}
+\caption{Algorithm to encode a signed integer}
+\addtoindexx{LEB128!signed, encoding as}
 \end{figure}
 
 \begin{figure}[here]
-\caption{Algorithm to decode an unsigned LEB128 integer}
-\addtoindexx{LEB128!unsigned, decoding of}
 \begin{lstlisting}
 result = 0;
 shift = 0;
@@ -66,11 +64,11 @@ while(true)
     shift += 7;
 }
 \end{lstlisting}
+\caption{Algorithm to decode an unsigned LEB128 integer}
+\addtoindexx{LEB128!unsigned, decoding of}
 \end{figure}
 
 \begin{figure}[here]
-\caption{Algorithm to decode a signed LEB128 integer}
-\addtoindexx{LEB128!signed, decoding of}
 \begin{lstlisting}
 result = 0;
 shift = 0;
@@ -88,4 +86,6 @@ if ((shift <size) \&\& (sign bit of byte is set))
     /* sign extend */
     result |= - (1 << shift);
 \end{lstlisting}
+\caption{Algorithm to decode a signed LEB128 integer}
+\addtoindexx{LEB128!signed, decoding of}
 \end{figure}
index 5786a39..1767dd4 100644 (file)
@@ -295,7 +295,8 @@ The DWARF description is shown
 \addtoindexx{Fortran 90}
 in Figure \refersec{fig:fortran90exampledwarfdescription}.
 
-\begin{figure}[b]
+\begin{figure}[h]
+\figurepart{1}{2}
 \begin{dwflisting}
 \begin{alltt}
 ! Description for type of 'ap'
@@ -315,15 +316,6 @@ in Figure \refersec{fig:fortran90exampledwarfdescription}.
             \livelink{chap:DWOPlit}{DW\-\_OP\-\_lit}<n> ! where n == offset(base)
             \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}
             \livelink{chap:DWOPderef}{DW\-\_OP\-\_deref}) ! Type of index of array 'ap'
-\end{alltt}
-\end{dwflisting}
-\caption{Fortran 90 example: DWARF description}
-\label{fig:fortran90exampledwarfdescription}
-\end{figure}
-
-\begin{figure}
-\begin{dwflisting}
-\begin{alltt}
 2\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
         ! No name, default stride
         \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
@@ -348,6 +340,16 @@ in Figure \refersec{fig:fortran90exampledwarfdescription}.
         !                 offset(dims\_str, [lower|upper]\_bound)
         !  That is, the expression does not get longer for each successive 
         !  dimension (other than to express the larger offsets involved).
+\end{alltt}
+\end{dwflisting}
+\caption{Fortran 90 example: DWARF description}
+\label{fig:fortran90exampledwarfdescription}
+\end{figure}
+
+\begin{figure}
+\figurepart{2}{2}
+\begin{dwflisting}
+\begin{alltt}
 3\$: \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
         \livelink{chap:DWATname}{DW\-\_AT\-\_name}("array\_ptr")
         \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(constant sizeof(REAL) + sizeof(desc<1>))
@@ -371,22 +373,11 @@ in Figure \refersec{fig:fortran90exampledwarfdescription}.
             \livetarg{chap:DWOPlit2}{DW\-\_OP\-\_lit2}
             ! Mask for 'ptr\_alloc' \nolink{flag}
             \livelink{chap:DWOPand}{DW\-\_OP\-\_and})
-\end{alltt}
-\end{dwflisting}
-\begin{center}
-Figure~\ref{fig:fortran90exampledwarfdescription} Fortran 90 example: DWARF description \textit{(continued)}
-\end{center}
-\end{figure}
-
-\begin{figure}
-\begin{dwflisting}
-\begin{alltt}
         \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}(expression= ! Get raw data address
             \livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}
             \livelink{chap:DWOPlit}{DW\-\_OP\-\_lit}<n> ! where n = offset(base)
             \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}
             \livelink{chap:DWOPderef}{DW\-\_OP\-\_deref})
-
 7\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
         ! No name, default stride
         \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
@@ -400,7 +391,6 @@ Figure~\ref{fig:fortran90exampledwarfdescription} Fortran 90 example: DWARF desc
             \livelink{chap:DWOPlit}{DW\-\_OP\-\_lit}<n> ! where n == ...
             \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}
             \livelink{chap:DWOPderef}{DW\-\_OP\-\_deref})
-
 8\$: \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
         \livelink{chap:DWATname}{DW\-\_AT\-\_name}("arrays")
         \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 6\$)
@@ -469,6 +459,8 @@ For c), the default stride applies. Since there is no
 \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} attribute, use the size of the array element
 type, which is the size of type array\_ptr (at 3\$).
 
+\clearpage
+
 Having acquired all the necessary data, perform the indexing
 operation in the usual manner -  which has nothing to do with
 any of the attributes involved up to now. Those just provide
@@ -886,6 +878,9 @@ Figure~\ref{fig:namespaceexampledwarfdescription}: Namespace example: DWARF desc
 
 Consider the member function example fragment in 
 Figure \refersec{fig:memberfunctionexamplesourcefragment}.
+The DWARF representation in 
+Figure \refersec{fig:memberfunctionexampledwarfdescription}
+is appropriate.
 
 \begin{figure}[Here]
 \begin{lstlisting}
@@ -901,10 +896,6 @@ void A::func1(int x) {}
 \label{fig:memberfunctionexamplesourcefragment}
 \end{figure}
 
-The DWARF representation in 
-Section \refersec{fig:memberfunctionexampledwarfdescription}
-is appropriate.
-
 \begin{figure}[h]
 \begin{dwflisting}
 \begin{alltt}
@@ -1053,7 +1044,7 @@ of n).
 \newpage
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{lll}
+\begin{longtable}{l|l|l}
   \caption{Line number program example: one encoding}
   \label{tab:linenumberprogramexampleoneencoding} \\
   \hline \bfseries Opcode &\bfseries Operand &\bfseries Byte Stream \\ \hline
@@ -1084,7 +1075,7 @@ this encoding occupies 22 bytes.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{lll}
+\begin{longtable}{l|l|l}
   \caption{Line number program example: alternate encoding} 
   \label{tab:linenumberprogramexamplealternateencoding} \\
   \hline \bfseries Opcode &\bfseries Operand &\bfseries Byte Stream \\ \hline
@@ -1197,7 +1188,7 @@ Table \refersec{tab:callframeinformationexampleconceptualmatrix}:
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{lllllllllll}
+\begin{longtable}{l|llllllllll}
   \caption{Call frame information example: conceptual matrix} 
   \label{tab:callframeinformationexampleconceptualmatrix} \\
   \hline \bfseries Location & \bfseries CFA & \bfseries R0 & \bfseries R1 & \bfseries R2 & \bfseries R3 & \bfseries R4 & \bfseries R5 & \bfseries R6 & \bfseries R7 & \bfseries R8 \\ \hline
@@ -1223,12 +1214,14 @@ foo+80&[R7]+0&s&u&u&u&s&s&s&a&r1 \\
 \end{longtable}
 \end{centering}
 
+\clearpage      % ?????
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{lll}
+\begin{longtable}{l|ll}
   \caption{Call frame information example: common information entry encoding} 
-  \label{tab:callframeinformationexamplecommoninformationentryencoding} \\
+  \label{tab:callframeinformationexamplecommoninformationentryencoding} 
+  \\
   \hline \bfseries Address &\bfseries Value &\bfseries Comment \\ \hline
 \endfirsthead
   \bfseries Address &\bfseries Value &\bfseries Comment \\ \hline
@@ -1276,7 +1269,7 @@ Table \refersec{tab:callframeinformationexampleframedescriptionentryencoding}:
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
-\begin{longtable}{lll}
+\begin{longtable}{l|ll}
   \caption{Call frame information example: frame description entry encoding} 
   \label{tab:callframeinformationexampleframedescriptionentryencoding} \\
   \hline \bfseries Address &\bfseries Value &\bfseries Comment \\ \hline
@@ -1293,15 +1286,15 @@ fde+8&foo&initial\_location \\
 fde+12&84&address\_range \\
 fde+16&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1)&instructions \\
 fde+17&\livelink{chap:DWCFAdefcfaoffset}{DW\-\_CFA\-\_def\-\_cfa\-\_offset}(12)& \textless fs\textgreater \\
-fde+19&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1)&4/ \textless caf\textgreater \\
-fde+20&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(8,1)&-4/ \textless daf\textgreater (2nd parameter) \\
+fde+19&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1)&4/\textless caf\textgreater \\
+fde+20&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(8,1)&-4/\textless daf\textgreater (2nd parameter) \\
 fde+22&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1)& \\
-fde+23&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(6,2)&-8/ \textless daf\textgreater (2nd parameter)  \\
+fde+23&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(6,2)&-8/\textless daf\textgreater (2nd parameter)  \\
 fde+25&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1) & \\
 fde+26&\livelink{chap:DWCFAdefcfaregister}{DW\-\_CFA\-\_def\-\_cfa\-\_register}(6) & \\
 fde+28&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1) & \\
-fde+29&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(4,3)&-12/ \textless daf\textgreater (2nd parameter) \\
-fde+31&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(12)&44/ \textless caf\textgreater \\
+fde+29&\livelink{chap:DWCFAoffset}{DW\-\_CFA\-\_offset}(4,3)&-12/\textless daf\textgreater (2nd parameter) \\
+fde+31&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(12)&44/\textless caf\textgreater \\
 fde+32&\livelink{chap:DWCFArestore}{DW\-\_CFA\-\_restore}(4)& \\
 fde+33&\livelink{chap:DWCFAadvanceloc}{DW\-\_CFA\-\_advance\-\_loc}(1) & \\
 fde+34&\livelink{chap:DWCFArestore}{DW\-\_CFA\-\_restore}(6) & \\
index 8f2ab76..c5f5d84 100644 (file)
@@ -1,8 +1,8 @@
 \renewcommand{\abstractname}{Foreword}
-\setlength{\parindent}{0pt}
 \begin{abstract}
 \nonzeroparskip
 \setlength{\parindent}{0pt}
+\ \break
 The \dwf\ Committee was originally organized in 1988 as the
 Programming Languages Special Interest Group (PLSIG) of Unix
 International, Inc., a trade group organized to promote Unix
index d9800e1..0666a07 100644 (file)
@@ -3,13 +3,13 @@
 \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 most programming language source and DWARF listings
+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).
index 63ec15f..804cfac 100644 (file)
@@ -20,21 +20,18 @@ and the attributes define the specific characteristics of the entry.
 
 The set of tag names 
 \addtoindexx{tag names|see{debugging information entry}}
-is listed in Figure \refersec{tab:tagnames}. 
+is listed in Table \refersec{tab:tagnames}. 
 The debugging information entries they identify are
 described in Sections 3, 4 and 5.
 
 % These each need to link to definition page: FIXME
 
-\begin{figure}
-%\begin{table}
-%\begin{tabular}{|}
-%\caption{Tag names}
-%\label{tab:tagnames}
-%\hline
-%\end{tabular)
-%\end{table}
-\autorows[0pt]{c}{2}{l}{
+
+\begin{table}[p]
+\caption{Tag names}
+\label{tab:tagnames}
+\simplerule[6in]
+\autocols[0pt]{c}{2}{l}{
 \livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration},
 \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type},
 \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type},
@@ -96,9 +93,8 @@ described in Sections 3, 4 and 5.
 \livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type},
 \livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt},
 }
-\caption{Tag names}
-\label{tab:tagnames}
-\end{figure}
+\simplerule[6in]
+\end{table}
 
 
 \textit{The debugging information entry descriptions 
@@ -201,6 +197,7 @@ actually declared in the source}{objects or types that are not actually declared
 &\livelinki{chap:DWATbitstrideenumerationstridedimensionofarraytype}{Enumeration stride (dimension of array type)}{enumeration stride (dimension of array type)} \\
 \livetarg{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} 
 &\livelinki{chap:DWATbytesizedataobjectordatatypesize}{Data object or data type size}{data object or data type size} \\
+\newpage
 \livetarg{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride} 
 &\livelinki{chap:DWATbytestridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
 &\livelinki{chap:DWATbytestridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
@@ -392,7 +389,7 @@ actually declared in the source}{objects or types that are not actually declared
 % Attribute Class entries need a ref to definition point.
 \setlength{\extrarowheight}{0.1cm}
 
-\begin{tabular}{l|p{10cm}} \hline
+\begin{tabular}{l|p{11cm}} \hline
 Attribute Class & General Use and Encoding \\ \hline
 \livetargi{chap:address}{address}{address class}
 &Refers to some location in the address space of the described program.
@@ -447,8 +444,8 @@ for that type.  \\
 (non\dash null) bytes. Data in this class are generally
 printable strings. Strings may be represented directly in
 the debugging information entry or as an offset in a separate
-string table.
+string table. \\
+\hline
 \end{tabular}
 \end{table}
 
@@ -599,7 +596,7 @@ is larger than can be stored in a single stack element, the
 value is truncated to the element size and the low\dash order bits
 are pushed on the stack.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPlit0}{DW\-\_OP\-\_lit0}, \livetarg{chap:DWOPlit1}{DW\-\_OP\-\_lit1}, \dots, \livetarg{chap:DWOPlit31}{DW\-\_OP\-\_lit31} \\
 The \livetarg{chap:DWOPlit}{DW\-\_OP\-\_lit}n operations encode the unsigned literal values
 from 0 through 31, inclusive.
@@ -635,7 +632,7 @@ The following operations push a value onto the stack that is
 the result of adding the contents of a register to a given
 signed offset.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 
 \item \livetarg{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} \\
 The \livelink{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} operation provides a signed LEB128 offset
@@ -668,7 +665,7 @@ operations manipulate the DWARF stack. Operations
 that index the stack assume that the top of the stack (most
 recently added entry) has index 0.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPdup}{DW\-\_OP\-\_dup} \\
 The \livelink{chap:DWOPdup}{DW\-\_OP\-\_dup} operation duplicates the value at the top of the stack.
 
@@ -724,11 +721,11 @@ target machine before being pushed onto the expression stack.
 \item \livetarg{chap:DWOPxderef}{DW\-\_OP\-\_xderef} \\
 The \livelink{chap:DWOPxderef}{DW\-\_OP\-\_xderef} operation provides an extended dereference
 mechanism. The entry at the top of the stack is treated as an
-address. The second stack entry is treated as an ``address
-space identifier'' for those architectures that support
+address. The second stack entry is treated as an \doublequote{address
+space identifier} for those architectures that support
 \addtoindexi{multiple}{address space!multiple}
 address spaces. The top two stack elements are popped,
-and a data item is retrieved through an implementation\dash defined
+and a data item is retrieved through an implementation-defined
 address calculation and pushed as the new stack top. The size
 of the data retrieved from the 
 \addtoindexi{dereferenced}{address!dereference operator}
@@ -832,7 +829,7 @@ performed modulo one plus the largest representable address
 bits). 
 Such operations do not cause an exception on overflow.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPabs}{DW\-\_OP\-\_abs}  \\
 The \livelink{chap:DWOPabs}{DW\-\_OP\-\_abs} operation pops the top stack entry, interprets
 it as a signed value and pushes its absolute value. If the
@@ -882,7 +879,8 @@ the result.
 
 \textit{This operation is supplied specifically to be
 able to encode more field offsets in two bytes than can be
-done with “\livelink{chap:DWOPlit}{DW\-\_OP\-\_lit\textit{n}} \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}”.}
+done with
+\doublequote{\livelink{chap:DWOPlit}{DW\-\_OP\-\_lit\textit{n}} \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}}.}
 
 \item \livetarg{chap:DWOPshl}{DW\-\_OP\-\_shl} \\
 The \livelink{chap:DWOPshl}{DW\-\_OP\-\_shl} operation pops the top two stack entries,
@@ -915,7 +913,7 @@ pushes the result.
 The 
 \addtoindexx{DWARF expression!control flow operations}
 following operations provide simple control of the flow of a DWARF expression.
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item  \livetarg{chap:DWOPle}{DW\-\_OP\-\_le}, \livetarg{chap:DWOPge}{DW\-\_OP\-\_ge}, \livetarg{chap:DWOPeq}{DW\-\_OP\-\_eq}, \livetarg{chap:DWOPlt}{DW\-\_OP\-\_lt}, \livetarg{chap:DWOPgt}{DW\-\_OP\-\_gt}, \livetarg{chap:DWOPne}{DW\-\_OP\-\_ne} \\
 The six relational operators each:
 \begin{itemize}
@@ -1007,20 +1005,19 @@ by prior agreement between the calling and called expressions.
 There 
 \addtoindexx{DWARF expression!special operations}
 is one special operation currently defined:
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPnop}{DW\-\_OP\-\_nop} \\
 The \livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} operation is a place holder. It has no effect
 on the location stack or any of its values.
-
 \end{enumerate}
+
 \subsection{Example Stack Operations}
 \textit {The 
 \addtoindexx{DWARF expression!examples}
 stack operations defined in 
 Section \refersec{chap:stackoperations}.
 are fairly conventional, but the following
-examples illustrate their behavior graphically.
-}
+examples illustrate their behavior graphically.}
 
 \begin{tabular}{rrcrr} 
  &Before & Operation&& After \\
@@ -1035,7 +1032,7 @@ examples illustrate their behavior graphically.
 2 &1000& & &          \\
 
 & & & & \\
-0 & 17 & \livelink{chap:DWOPpick}{DW\-\_OP\-\_pick} & 0 & 1000 \\
+0 & 17 & \livelink{chap:DWOPpick}{DW\-\_OP\-\_pick, 2} & 0 & 1000 \\
 1 & 29 & & 1&17 \\
 2 &1000& &2&29 \\
   &    & &3&1000 \\
@@ -1075,7 +1072,7 @@ an object whose location changes over the object’s lifetime.}
 Information about the location of program objects is provided
 by location descriptions. Location descriptions can be either
 of two forms:
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \textit{Single location descriptions}, 
 which 
 \addtoindexx{location description!single}
@@ -1092,7 +1089,7 @@ as its lifetime is either static or the same as the lexical
 and it does not move during its lifetime.
 
 Single location descriptions are of two kinds:
-\begin{enumerate}[a]
+\begin{enumerate}[a)]
 \item Simple location descriptions, which describe the location
 \addtoindexx{location description!simple}
 of one contiguous piece (usually all) of an object. A simple
@@ -1135,7 +1132,7 @@ location list table).
 \subsection{Single Location Descriptions}
 A single location description is either:
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item A simple location description, representing an object
 \addtoindexx{location description!simple}
 which 
@@ -1163,7 +1160,6 @@ contiguous piece or all of an object or value.
 
 
 \subsubsubsection{Memory Location Descriptions}
-
 A 
 \addtoindexx{location description!memory}
 memory location description 
@@ -1175,7 +1171,6 @@ Section \refersec{chap:dwarfexpressions}
 a piece or all of an object or other entity in memory.
 
 \subsubsubsection{Register Location Descriptions}
-
 A register location description consists of a register name
 operation, which represents a piece or all of an object
 located in a given register.
@@ -1201,7 +1196,7 @@ density and should be shared by all users of a given
 architecture. It is recommended that this mapping be defined
 by the ABI authoring committee for each architecture.
 }
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPreg0}{DW\-\_OP\-\_reg0}, \livetarg{chap:DWOPreg1}{DW\-\_OP\-\_reg1}, ..., \livetarg{chap:DWOPreg31}{DW\-\_OP\-\_reg31} \\
 The \livetarg{chap:DWOPreg}{DW\-\_OP\-\_reg}n operations encode the names of up to 32
 registers, numbered from 0 through 31, inclusive. The object
@@ -1219,8 +1214,7 @@ one of the register based addressing operations, such as
 (Section \refersec{chap:registerbasedaddressing})}.
 
 
-\paragraph{Implicit Location Descriptions}
-
+\subsubsubsection{Implicit Location Descriptions}
 An \addtoindex{implicit location description}
 represents a piece or all
 \addtoindexx{location description!implicit}
@@ -1235,7 +1229,7 @@ The following DWARF operations may be used to specify a value
 that has no location in the program but is a known constant
 or is computed from other locations and values in the program.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value} \\
 The \livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value} operation specifies an immediate value
 using two operands: an unsigned LEB128 length, followed by
@@ -1277,7 +1271,7 @@ Each composition operation is immediately preceded by a simple
 location description which describes the location where part
 of the resultant value is contained.
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item \livetarg{chap:DWOPpiece}{DW\-\_OP\-\_piece} \\
 The \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} operation takes a 
 single operand, which is an
@@ -1317,7 +1311,8 @@ a sequence of bits using the least significant bits of that
 value.  
 \end{enumerate}
 
-\textit{\livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece} is used instead of \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} when
+\textit{\livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece} is 
+used instead of \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} when
 the piece to be assembled into a value or assigned to is not
 byte-sized or is not at the start of a register or addressable
 unit of memory.}
@@ -1430,7 +1425,7 @@ end of list entry.
 A 
 \addtoindexx{location list!entry}
 location list entry consists of:
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item A beginning address offset. 
 This address offset has the \addtoindex{size of an address} and is
 relative to the applicable base address of the compilation
@@ -1482,7 +1477,7 @@ A base
 selection 
 \addtoindexi{entry}{base address selection entry!in location list}
 consists of:
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item The value of the largest representable 
 address offset (for example, 0xffffffff when the size of
 an address is 32 bits).
@@ -1558,7 +1553,7 @@ attribute, whose
 value is a constant drawn from the set of codes listed in Table 
 \refersec{tab:accessibilitycodes}.
 
-\begin{simplenametable}{Accessibility codes}{tab:accessibilitycodes}
+\begin{simplenametable}[1.9in]{Accessibility codes}{tab:accessibilitycodes}
 \livetarg{chap:DWACCESSpublic}{DW\-\_ACCESS\-\_public}          \\
 \livetarg{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}        \\
 \livetarg{chap:DWACCESSprotected}{DW\-\_ACCESS\-\_protected}    \\
@@ -1581,7 +1576,7 @@ attribute\addtoindexx{visibility attribute}, whose value is a
 constant drawn from the set of codes listed in 
 Table \refersec{tab:visibilitycodes}.
 
-\begin{simplenametable}{Visibility Codes}{tab:visibilitycodes}
+\begin{simplenametable}[1.5in]{Visibility Codes}{tab:visibilitycodes}
 \livetarg{chap:DWVISlocal}{DW\-\_VIS\-\_local}          \\
 \livetarg{chap:DWVISexported}{DW\-\_VIS\-\_exported}    \\
 \livetarg{chap:DWVISqualified}{DW\-\_VIS\-\_qualified}  \\
@@ -1600,7 +1595,7 @@ attribute\addtoindexx{virtuality attribute}, whose value is a constant drawn
 from the set of codes listed in 
 Table \refersec{tab:virtualitycodes}.
 
-\begin{simplenametable}[2.5in]{Virtuality codes}{tab:virtualitycodes}
+\begin{simplenametable}[2.4in]{Virtuality codes}{tab:virtualitycodes}
 \livetarg{chap:DWVIRTUALITYnone}{DW\-\_VIRTUALITY\-\_none}                      \\
 \livetarg{chap:DWVIRTUALITYvirtual}{DW\-\_VIRTUALITY\-\_virtual}                \\
 \livetarg{chap:DWVIRTUALITYpurevirtual}{DW\-\_VIRTUALITY\-\_pure\-\_virtual}    \\
@@ -1700,9 +1695,12 @@ has been specified.
 
 \textit {For example, the Intel386 ™ processor might use the following values:}
 
-\begin{figure}[here]
+\begin{table}[here]
+\caption{Example address class codes}
+\label{tab:inteladdressclasstable}
 \centering
-\begin{tabular}{lll} 
+\begin{tabular}{l|c|l}
+\hline
 Name&Value&Meaning  \\
 \hline
 \textit{DW\-\_ADDR\-\_none}&   0 & \textit{no class specified} \\
@@ -1710,11 +1708,10 @@ Name&Value&Meaning  \\
 \textit{DW\-\_ADDR\-\_far16}&  2 & \textit{16\dash bit offset, 16\dash bit segment} \\
 \textit{DW\-\_ADDR\-\_huge16}& 3 & \textit{16\dash bit offset, 16\dash bit segment} \\
 \textit{DW\-\_ADDR\-\_near32}& 4 & \textit{32\dash bit offset, no segment} \\
-\textit{DW\-\_ADDR\-\_far32}&  5 & \textit{32\dash bit offset, 16\dash bit segment}
+\textit{DW\-\_ADDR\-\_far32}&  5 & \textit{32\dash bit offset, 16\dash bit segment} \\
+\hline
 \end{tabular}
-\caption{Example address class codes}
-\label{fig:inteladdressclasstable}
-\end{figure}
+\end{table}
 
 \section{Non-Defining Declarations and Completions}
 \label{nondefiningdeclarationsandcompletions}
@@ -2037,7 +2034,7 @@ end of list entry.
 
 A \addtoindex{range list} entry consists of:
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item A beginning address offset. This address offset has the 
 \addtoindex{size of an address} and is relative to
 the applicable base address of the compilation unit referencing this 
@@ -2080,7 +2077,7 @@ the entries be ordered in any particular way.
 
 A base address selection entry consists of:
 
-\begin{enumerate}[1]
+\begin{enumerate}[1.]
 \item The value of the largest representable address offset (for example, 0xffffffff when the size of
 an address is 32 bits).
 
@@ -2228,7 +2225,7 @@ attribute is interpreted in bits.
 \textit{Some language implementations, notably 
 \addtoindex{C++} and similar
 languages, 
-make use of implementation defined names within
+make use of implementation-defined names within
 object files that are different from the identifier names
 (see Section \refersec{chap:identifiernames}) of entities as they appear in the
 source. Such names, sometimes known 
index 849c9c2..aaaebc1 100644 (file)
@@ -498,7 +498,7 @@ with this:
 
 
 \begin{myindentpara}{2cm}
-with the Invariant Sections being list THEIR TITLES, with
+with the Invariant Sections being LIST THEIR TITLES, with
 the Front-Cover Texts being LIST, and with the Back-Cover Texts
 being LIST.
 \end{myindentpara}
index c0407fc..194f47c 100644 (file)
@@ -12,7 +12,8 @@ compiler or debugger.
 Instead, the goal is to create a method
 of communicating an accurate picture of the source program
 to any debugger in a form that is extensible to different
-languages while retaining compatibility.  
+languages while retaining compatibility.
+  
 The design of the
 debugging information format is open-ended, allowing for
 the addition of new debugging information to accommodate new
index 4a5fc68..5bee11b 100644 (file)
@@ -257,7 +257,6 @@ in the \addtoindex{.debug\_line}
 section could be represented as a large
 matrix, with one row for each instruction in the emitted
 object code. The matrix would have columns for:}
-
 \begin{itemize}
 \item \textit{the source file name}
 \item \textit{the source line number}
@@ -265,7 +264,6 @@ object code. The matrix would have columns for:}
 \item \textit{whether this instruction is the beginning of a \addtoindex{basic block}}
 \item \textit{and so on}
 \end{itemize}
-
 \textit{Such a matrix, however, would be impractically large. We
 shrink it with two techniques. First, we delete from
 the matrix each row whose file, line, source column and
@@ -328,7 +326,7 @@ The line number information state machine has the following
 registers:
 \begin{longtable}{l|p{9cm}}
   \caption{State Machine Registers } \\
-  \hline \\ \bfseries Register name&\bfseries Meaning\\ \hline
+  \hline \bfseries Register name&\bfseries Meaning\\ \hline
 \endfirsthead
   \bfseries Register name&\bfseries Meaning\\ \hline
 \endhead
@@ -410,21 +408,21 @@ exists for a given source position, the discriminator value
 should be zero. \\
 \end{longtable}
 
+\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:
 
-%\begin{tabular}{lp{8cm}}
-\begin{tabular}{lp{11cm}}
+\begin{tabular}{lp{9cm}}
 address & 0 \\
 \addtoindex{op\_index} & 0 \\
 file & 1 \\
 line & 1 \\
 column & 0 \\
 \addtoindex{is\_stmt} & determined by \addtoindex{default\_is\_stmt} in the line number program header \\
-\addtoindex{basic\_block} & ``false'' \addtoindexx{basic block} \\
-\addtoindex{end\_sequence} & ``false'' \\
-\addtoindex{prologue\_end} & ``false'' \\
-\addtoindex{epilogue\_begin} & ``false'' \\
+\addtoindex{basic\_block}    & \doublequote{false} \addtoindexx{basic block} \\
+\addtoindex{end\_sequence}   & \doublequote{false} \\
+\addtoindex{prologue\_end}   & \doublequote{false} \\
+\addtoindex{epilogue\_begin} & \doublequote{false} \\
 \addtoindex{isa} & 0 \\
 discriminator & 0 \\
 \end{tabular}
@@ -434,33 +432,34 @@ discriminator & 0 \\
 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.}
-
 \subsection{Line Number Program Instructions}
-
 The state machine instructions in a line number program belong to one of three categories:
 
-\begin{tabular}{lp{10cm}}
-special opcodes &
-These have a \addtoindex{ubyte} opcode field and no operands.
+\begin{description}
+\item[special opcodes]
+
+These have a \addtoindex{ubyte} opcode field and no operands.\vspace{1ex}
 
 \textit{Most of the instructions in a 
 line number program are special opcodes.} \\
 
-standard opcodes &
+\item[standard opcodes]
+
 These have a \addtoindex{ubyte} opcode field which may be followed by zero or more
 \addtoindex{LEB128} operands (except for 
-\livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc}, see below).
+\mbox{\livelink{chap:DWLNSfixedadvancepc}{DW\-\_LNS\-\_fixed\-\_advance\-\_pc},} see below).
 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. \\
 
-extended opcodes &
+\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
 instruction itself (does not include the first zero byte or the size). The
 remaining bytes are the instruction itself (which begins with a \addtoindex{ubyte}
 extended opcode). \\
-\end{tabular}
+\end{description}
 
 
 \subsection{The Line Number Program Header}
@@ -774,7 +773,7 @@ is the result of the adjusted opcode divided by the
 line\_range. The new address and \addtoindex{op\_index} values
 are given by
 \begin{alltt}
-  \textit{adjusted opcode} = opcode  opcode\_base
+  \textit{adjusted opcode} = opcode \dash opcode\_base
   \textit{operation advance} = \textit{adjusted opcode} / line\_range
 
   new address = address +
@@ -814,7 +813,6 @@ within the range [-3, 8] and (because of the limited number
 of opcodes available) when the difference between addresses
 is within the range [0, 20], but not all line advances are
 available for the maximum \addtoindex{operation advance} (see below).}
-
 \textit{The opcode mapping would be:}
 \begin{alltt}\textit{
                         Line Advance
@@ -1121,15 +1119,15 @@ The valid \addtoindex{macinfo types} are as follows:
 
 \begin{tabular}{ll}
 \livelink{chap:DWMACINFOdefine}{DW\-\_MACINFO\-\_define} 
-&A macro definition.\\
+&A macro definition\\
 \livelink{chap:DWMACINFOundef}{DW\-\_MACINFO\-\_undef}
-&A macro undefinition.\\
+&A macro undefinition\\
 \livelink{chap:DWMACINFOstartfile}{DW\-\_MACINFO\-\_start\-\_file}
-&The start of a new source file inclusion.\\
+&The start of a new source file inclusion\\
 \livelink{chap:DWMACINFOendfile}{DW\-\_MACINFO\-\_end\-\_file}
-&The end of the current source file inclusion.\\
+&The end of the current source file inclusion\\
 \livelink{chap:DWMACINFOvendorext}{DW\-\_MACINFO\-\_vendor\-\_ext}
-& Vendor specific macro information directives.\\
+& Vendor specific macro information directives\\
 \end{tabular}
 
 \subsubsection{Define and Undefine Entries}
@@ -1405,9 +1403,9 @@ contain rules that describe whether a given register has been
 saved and the rule to find the value for the register in the
 previous frame.
 
+\clearpage
 The register rules are:
 
-
 \begin{tabular}{lp{8cm}}
 undefined 
 &A register that has this rule has no recoverable value in the previous frame.
index 695bb74..cc153e2 100644 (file)
@@ -130,14 +130,14 @@ integer code
 \addtoindexx{language attribute}
 indicating the source language of the compilation
 unit. The set of language names and their meanings are given
-in 
-Figure \refersec{fig:languagenames}.
+in Table \refersec{tab:languagenames}.
 
-\begin{figure}[here]
+\begin{table}[here]
 \centering
 \caption{Language names}
-\label{fig:languagenames}
-\begin{tabular}{ll}
+\label{tab:languagenames}
+\begin{tabular}{l|l}
+\hline
 Language name & Meaning\\ \hline
 \livetarg{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag&ISO \addtoindex{Ada}:1983 \addtoindexx{Ada} \\
 \livetarg{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag&ISO Ada:1995 \addtoindexx{Ada} \\
@@ -159,9 +159,9 @@ Language name & Meaning\\ \hline
 \livetarg{chap:DWLANGPLI}{DW\-\_LANG\-\_PLI} \dag & ANSI \addtoindex{PL/I}:1976\\
 \livetarg{chap:DWLANGPython}{DW\-\_LANG\-\_Python} \dag & \addtoindex{Python}\\
 \livetarg{chap:DWLANGUPC}{DW\-\_LANG\-\_UPC} &\addtoindex{Unified Parallel C}\addtoindexx{UPC}\\ \hline
-\dag \ \ Support for these languages is limited.& \\
+\dag \ \ \textit{Support for these languages is limited.}& \\
 \end{tabular}
-\end{figure}
+\end{table}
 
 \item A \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}
 attribute whose value is 
@@ -222,19 +222,15 @@ whose integer
 \hypertarget{chap:DWATidentifiercaseidentifiercaserule}
 constant value is a code describing the treatment
 of identifiers within this compilation unit. The
-set of identifier case codes 
-is given in Figure
-\refersec{fig:identifiercasecodes}.
-
-\begin{figure}[here]
-\autorows[0pt]{c}{1}{l}{
-\livelink{chap:DWIDcasesensitive}{DW\-\_ID\-\_case\-\_sensitive},
-\livelink{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case},
-\livelink{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case},
-\livelink{chap:DWIDcaseinsensitive}{DW\-\_ID\-\_case\-\_insensitive}
-}
-\caption{Identifier case codes}\label{fig:identifiercasecodes}
-\end{figure}
+set of identifier case codes is given in
+Table \refersec{tab:identifiercasecodes}.
+
+\begin{simplenametable}{Identifier case codes}{tab:identifiercasecodes}
+\livelink{chap:DWIDcasesensitive}{DW\-\_ID\-\_case\-\_sensitive}        \\
+\livelink{chap:DWIDupcase}{DW\-\_ID\-\_up\-\_case}                      \\
+\livelink{chap:DWIDdowncase}{DW\-\_ID\-\_down\-\_case}                  \\
+\livelink{chap:DWIDcaseinsensitive}{DW\-\_ID\-\_case\-\_insensitive}    \\
+\end{simplenametable}
 
 \livetarg{chap:DWIDcasesensitive}{DW\-\_ID\-\_case\-\_sensitive} is the default for all compilation units
 that do not have this attribute.  It indicates that names given
@@ -368,7 +364,7 @@ whose
 \addtoindexx{language attribute}
 constant value is an integer code indicating the source
 language used to define the type. The set of language names
-and their meanings are given in Figure \refersec{fig:languagenames}.
+and their meanings are given in Table \refersec{tab:languagenames}.
 
 A \addtoindex{type unit} entry for a given type T owns a debugging
 information entry that represents a defining declaration
@@ -769,16 +765,18 @@ and entry
 points:
 
 \begin{tabular}{lp{9.0cm}}
-\livetarg{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} & A subroutine or function. \\
+\livetarg{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} & A subroutine or function \\
 \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine} & A particular inlined 
 \addtoindexx{inlined subprogram entry}
-instance of a subroutine or function. \\
-\livetarg{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point} & An alternate entry point. \\
+instance of a subroutine or function \\
+\livetarg{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point} & An alternate entry point \\
 \end{tabular}
 
 \subsection{General Subroutine and Entry Point Information}
 \label{chap:generalsubroutineandentrypointinformation}
-
+The subroutine or entry point entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} 
+attribute whose value is a null-terminated string containing the 
+subroutine or entry point name as it appears in the source.
 It may also have a \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute as
 described in Section \refersec{chap:linkagenames}.
 
@@ -831,16 +829,13 @@ contain a
 \livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}
 attribute, whose value is an integer constant. The set of
 calling convention codes is given in 
-Figure \refersec{fig:callingconventioncodes}.
+Table \refersec{tab:callingconventioncodes}.
 
-\begin{figure}[here]
-\autorows[0pt]{c}{1}{l}{
-\addtoindex{DW\-\_CC\-\_normal},
-\addtoindex{DW\-\_CC\-\_program},
-\addtoindex{DW\-\_CC\-\_nocall},
-}
-\caption{Calling convention codes}\label{fig:callingconventioncodes}
-\end{figure}
+\begin{simplenametable}[1.4in]{Calling convention codes}{tab:callingconventioncodes}
+\addtoindex{DW\-\_CC\-\_normal}        \\
+\addtoindex{DW\-\_CC\-\_program}       \\
+\addtoindex{DW\-\_CC\-\_nocall}        \\
+\end{simplenametable}
 
 If this attribute is not present, or its value is the constant
 \livetarg{chap:DWCCnormal}{DW\-\_CC\-\_normal}, then the subroutine may be safely called by
@@ -1081,7 +1076,6 @@ compact. However, these are not equivalent in general.}
 relative to the first unit of storage allocated for the
 procedure’s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
 can be used in several ways:}
-
 \begin{enumerate}[1.]
 \item \textit{In procedures that need 
 \addtoindexx{location list}
@@ -1233,23 +1227,25 @@ that was expanded inline implicitly by the compiler has
 a
 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute whose value is an integer constant. The
 set of values for the \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute is given in
-Figure \refersec{fig:inlinecodes}.
+Table \refersec{tab:inlinecodes}.
 
-\begin{figure}[here]
+\begin{table}[here]
 \centering
 \caption{Inline codes}
-\label{fig:inlinecodes}
-\begin{tabular}{lp{9cm}}
+\label{tab:inlinecodes}
+\begin{tabular}{l|p{9cm}}
+\hline
 Name&Meaning\\ \hline
 \livetarg{chap:DWINLnotinlined}{DW\-\_INL\-\_not\-\_inlined} & Not declared inline nor inlined by the
-  compiler(equivalent to the absence of the containing
+  compiler (equivalent to the absence of the containing \break
   \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute) \\
 \livetarg{chap:DWINLinlined}{DW\-\_INL\-\_inlined} & Not declared inline but inlined by the compiler \\
 \livetarg{chap:DWINLdeclarednotinlined}{DW\-\_INL\-\_declared\-\_not\-\_inlined} & Declared inline but 
   not inlined by the compiler \\
 \livetarg{chap:DWINLdeclaredinlined}{DW\-\_INL\-\_declared\-\_inlined} & Declared inline and inlined by the compiler \\
+\hline
 \end{tabular}
-\end{figure}
+\end{table}
 
 \textit{In \addtoindex{C++}, a function or a constructor declared with
 constexpr is implicitly declared inline. The abstract inline
index e57ce75..dffb6f6 100644 (file)
@@ -32,7 +32,7 @@ and \addtoindex{.debug\_types} section version number.
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{lccc}
   \caption{Section version numbers} \label{tab:sectionversionnumbers} \\
-  \hline \\ \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 \\ \hline
+  \hline \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 \\ \hline
 \endfirsthead
    \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 \\ \hline
 \endhead
index a3138be..8827004 100644 (file)
@@ -39,9 +39,10 @@ A base type entry has
 a \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute describing
 how the base type is encoded and is to be interpreted. The
 value of this attribute is an integer constant. The set of
-values and their meanings for the \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute
+values and their meanings for the
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute
 is given in 
-Figure \refersec{fig:encodingattributevalues}
+Table \refersec{tab:encodingattributevalues}
 and following text.  
 
 A base type entry
@@ -125,7 +126,6 @@ support its use for compatibility.}
 \textit{The 
 \addtoindex{DWARF Version 3}
 definition of these attributes is as follows.}
-
 \begin{myindentpara}{1cm}
 \textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
 attribute, whose value
@@ -173,12 +173,15 @@ and optionally \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offs
 \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}}
 \end{itemize}
 
-\begin{figure}[!here]
+\begin{table}[!here]
+\caption{Encoding attribute values}
+\label{tab:encodingattributevalues}
 \centering
-\begin{tabular}{lp{9cm}}
+\begin{tabular}{l|p{8cm}}
+\hline
 Name&Meaning\\ \hline
-\livetarg{chap:DWATEaddress}{DW\-\_ATE\-\_address} &  linear machine address (for
-  segmented addresses see
+\livetarg{chap:DWATEaddress}{DW\-\_ATE\-\_address} & linear machine address (for segmented\break
+  addresses see
   Section \refersec{chap:segmentedaddresses}) \\
 \livetarg{chap:DWATEboolean}{DW\-\_ATE\-\_boolean}& true or false \\
 
@@ -198,10 +201,9 @@ floating\dash point number \\
 \livetarg{chap:DWATEunsignedfixed}{DW\-\_ATE\-\_unsigned\-\_fixed}& unsigned fixed\dash point scaled integer \\
 \livetarg{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} & decimal floating\dash point number \\ 
 \livetarg{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} & \addtoindex{Unicode} character \\
+\hline
 \end{tabular}
-\caption{Encoding attribute values}
-\label{fig:encodingattributevalues}
-\end{figure}
+\end{table}
 
 \textit{The \livelink{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} encoding is intended for
 floating\dash point representations that have a power\dash of\dash ten
@@ -242,12 +244,38 @@ A \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute
 \addtoindexx{decimal sign attribute}
 is an integer constant that
 conveys the representation of the sign of the decimal type
-(see Figure \refersec{fig:decimalsignattributevalues}). 
+(see Figure \refersec{tab:decimalsignattributevalues}). 
 Its integer constant value is interpreted to
 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}[here]
+\caption{Decimal sign attribute values}
+\label{tab:decimalsignattributevalues}
+\centering
+\begin{tabular}{l|p{9cm}}
+\hline
+ Name & Meaning \\
+\hline
+\livetarg{chap:DWDSunsigned}{DW\-\_DS\-\_unsigned} &  Unsigned \\
+\livetarg{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & Sign
+is encoded in the most significant digit in a target\dash dependent  manner \\
+\livetarg{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & Sign
+is encoded in the least significant digit in a target\dash dependent manner \\
+\livetarg{chap:DWDSleadingseparate}{DW\-\_DS\-\_leading\-\_separate} 
+& Decimal type: Sign is a ``+'' or ``-'' character 
+to the left of the most significant digit. \\
+\livetarg{chap:DWDStrailingseparate}{DW\-\_DS\-\_trailing\-\_separate} 
+& Decimal type: Sign is a ``+'' or ``-'' character 
+to the right of the least significant digit. \\
+&Packed decimal type: Least significant nibble contains
+a target\dash dependent value
+indicating positive or negative. \\
+\hline
+\end{tabular}
+\end{table}
+
 The 
 \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
 attribute 
@@ -356,29 +384,6 @@ entry for the type.
 is defined with the \addtoindex{Ada} small
 attribute in mind.}
 
-\begin{figure}[here]
-\centering
-\begin{tabular}{lp{9cm}}
-Name&Meaning\\ \hline
-\livetarg{chap:DWDSunsigned}{DW\-\_DS\-\_unsigned} &  unsigned \\
-\livetarg{chap:DWDSleadingoverpunch}{DW\-\_DS\-\_leading\-\_overpunch} & Sign
-is encoded in the most significant digit in a target\dash dependent  manner \\
-\livetarg{chap:DWDStrailingoverpunch}{DW\-\_DS\-\_trailing\-\_overpunch} & Sign
-is encoded in the least significant digit in a target\dash dependent manner \\
-\livetarg{chap:DWDSleadingseparate}{DW\-\_DS\-\_leading\-\_separate} 
-& Decimal type: Sign is a ``+'' or ``-'' character 
-to the left of the most significant digit. \\
-\livetarg{chap:DWDStrailingseparate}{DW\-\_DS\-\_trailing\-\_separate} 
-& Decimal type: Sign is a ``+'' or ``-'' character 
-to the right of the least significant digit. \\
-&Packed decimal type: Least significant nibble contains
-a target\dash dependent value
-indicating positive or negative. \\
-\end{tabular}
-\caption{Decimal sign attribute values}
-\label{fig:decimalsignattributevalues}
-\end{figure}
-
 \section{Unspecified Type Entries}
 \label{chap:unspecifiedtypeentries}
 \addtoindexx{unspecified type entry}
@@ -425,7 +430,7 @@ definition is deferred to a separate compilation unit).
 A base or user\dash defined type may be modified in different ways
 in different languages. A type modifier is represented in
 DWARF by a debugging information entry with one of the tags
-given in Figure \refersec{fig:typemodifiertags}.
+given in Table \refersec{tab:typemodifiertags}.
 \addtoindexx{type modifier|see{constant type entry}}
 \addtoindexx{type modifier|see{reference type entry}}
 \addtoindexx{type modifier|see{restricted type entry}}
@@ -498,9 +503,12 @@ source
 \addtoindexx{parameter|see{formal parameter entry}}
 presentation.
 
-\begin{figure}[here]
+\begin{table}[here]
+\caption{Type modifier tags}
+\label{tab:typemodifiertags}
 \centering
-\begin{tabular}{lp{9cm}}
+\begin{tabular}{l|p{9cm}}
+\hline
 Name&Meaning\\ \hline
 \livetarg{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} &  C or C++ const qualified type
 \addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
@@ -528,21 +536,20 @@ reference to an object of the type being modified
 \addtoindexx{shared qualified type entry} \\
 \livetarg{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&C or C++ volatile qualified type 
 \addtoindex{volatile qualified type entry} \\
+\hline
 \end{tabular}
-\caption{Type modifier tags}
-\label{fig:typemodifiertags}
-\end{figure}
+\end{table}
 
 %The following clearpage prevents splitting the example across pages.
-\clearpage
-\textit{As examples of how type modifiers are ordered, take the following C
-declarations:}
-
-\begin{alltt}
+\textit{As examples of how type modifiers are ordered, consider the following
+\addtoindex{C} declarations:}
+\begin{lstlisting}[numbers=none]
    const unsigned char * volatile p;
-\end{alltt}
+\end{lstlisting}
 \textit{which represents a volatile pointer to a constant
 character. This is encoded in DWARF as:}
+
+\begin{dwflisting}
 \begin{alltt}
         \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}(p) -->
             \livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type} -->
@@ -550,12 +557,16 @@ character. This is encoded in DWARF as:}
                     \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} -->
                         \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}(unsigned char)
 \end{alltt}
+\end{dwflisting}
+
 \textit{On the other hand}
-\begin{alltt}                        
+\begin{lstlisting}[numbers=none]                        
    volatile unsigned char * const restrict p;
-\end{alltt}
+\end{lstlisting}
 \textit{represents a restricted constant
 pointer to a volatile character. This is encoded as:}
+
+\begin{dwflisting}
 \begin{alltt}
         \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}(p) -->
             \livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type} -->
@@ -564,6 +575,7 @@ pointer to a volatile character. This is encoded as:}
                         \livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type} -->
                             \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}(unsigned char)
 \end{alltt}
+\end{dwflisting}
 
 \section{Typedef Entries}
 \label{chap:typedefentries}
@@ -623,7 +635,7 @@ have a \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute whose intege
 interpreted to mean either row-major or column-major ordering
 of array elements. The set of values and their meanings
 for the ordering attribute are listed in 
-Figure \refersec{fig:arrayordering}. 
+Table \refersec{tab:arrayordering}. 
 If no
 ordering attribute is present, the default ordering for the
 source language (which is indicated by the 
@@ -632,13 +644,10 @@ attribute
 \addtoindexx{language attribute}
 of the enclosing compilation unit entry) is assumed.
 
-\begin{figure}[here]
-\autorows[0pt]{c}{1}{l}{
-\livetarg{chap:DWORDcolmajor}{DW\-\_ORD\-\_col\-\_major},
-\livetarg{chap:DWORDrowmajor}{DW\-\_ORD\-\_row\-\_major}
-}
-\caption{Array ordering}\label{fig:arrayordering}
-\end{figure}
+\begin{simplenametable}[1.6in]{Array ordering}{tab:arrayordering}
+\livetarg{chap:DWORDcolmajor}{DW\-\_ORD\-\_col\-\_major} \\
+\livetarg{chap:DWORDrowmajor}{DW\-\_ORD\-\_row\-\_major} \\
+\end{simplenametable}
 
 The ordering attribute may optionally appear on one-dimensional
 arrays; it will be ignored.
@@ -856,7 +865,7 @@ and will have a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribu
 \textit{Consider a nested class whose 
 definition occurs outside of the containing class definition, as in:}
 
-\begin{lstlisting}
+\begin{lstlisting}[numbers=none]
 struct A {
     struct B;
 };
@@ -1220,15 +1229,16 @@ struct S {
 };
 \end{lstlisting}
 
-\textit{The following diagrams show the structure layout
+\textit{Figures \referfol{fig:bigendiandatabitoffsets} and
+\refersec{fig:littleendiandatabitoffsets}
+show the structure layout
 and data bit offsets for example big\dash\   and little\dash endian
 architectures, respectively. Both diagrams show a structure
 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.}
 
-\textit{Big\dash Endian Data Bit Offsets:}
-
+\begin{figure}[h]
 \begin{verbatim}
     j:0
     k:5
@@ -1245,8 +1255,11 @@ the right.}
     |       |            |          |               |               | 
     +---------------------------------------------------------------+ 
 \end{verbatim}
+\caption{Big-endian data bit offsets}
+\label{fig:bigendiandatabitoffsets}
+\end{figure}
 
-\textit{Little\dash  Endian Data Bit Offsets:}
+\begin{figure}[h]
 \begin{verbatim}
     j:0
     k:5
@@ -1256,14 +1269,15 @@ the right.}
     |       A       |     A + 1     |    A + 2      |    A + 3      | 
 
                                         <-  Data bit offsets increase 
-
     +---------------+---------------+---------------+---------------+
     |31           24|23           16|15     11|10       5|4        0|
     |     <pad>     |        n      |    m    |    k     |     j    |
     |               |               |         |          |          |
     +---------------------------------------------------------------+
-
 \end{verbatim}
+\caption{Little-endian data bit offsets}
+\label{fig:littleendiandatabitoffsets}
+\end{figure}
 
 \textit{Note that data member bit offsets in this example are the
 same for both big\dash\ and little\dash endian architectures even
@@ -1305,7 +1319,6 @@ use for compatibility.}
 \addtoindex{DWARF Version 3} 
 definitions of these attributes are
 as follows.}
-
 \begin{myindentpara}{1cm}
 \textit{If the data member entry describes a bit field, then that
 entry has the following attributes:}
@@ -1653,15 +1666,12 @@ two LEB128 numbers, the low value of the range followed by the
 high value. Both values follow the rules for signedness just
 described. The discriminant value descriptor is an integer
 constant that may have one of the values given in 
-Figure \refersec{fig:discriminantdescriptorvalues}.
-
-\begin{figure}[here]
-\autorows[0pt]{c}{1}{l}{
-\addtoindex{DW\-\_DSC\-\_label},
-\addtoindex{DW\-\_DSC\-\_range}
-}
-\caption{Discriminant descriptor values}\label{fig:discriminantdescriptorvalues}
-\end{figure}
+Table \refersec{tab:discriminantdescriptorvalues}.
+
+\begin{simplenametable}[1.4in]{Discriminant descriptor values}{tab:discriminantdescriptorvalues}
+\addtoindex{DW\-\_DSC\-\_label} \\
+\addtoindex{DW\-\_DSC\-\_range} \\
+\end{simplenametable}
 
 If a variant entry has neither a \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
 attribute nor a \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute, or if it has
@@ -2040,7 +2050,7 @@ this execution of the program).
 
 \textit{This allows the representation of a \addtoindex{UPC} shared array such as}
 
-\begin{lstlisting}
+\begin{lstlisting}[numbers=none]
 int shared foo[34*THREADS][10][20];
 \end{lstlisting}
 
@@ -2196,7 +2206,7 @@ whose address is being calculated.
 
 \textit{For an expression such as}
 
-\begin{lstlisting}
+\begin{lstlisting}[numbers=none]
     object.*mbr_ptr
 \end{lstlisting}
 % FIXME: object and mbr\_ptr should be distinguished from italic. See DW4.