Final cleanups before group review. Only Appendix B Figure is pending...
authorRon Brender <ron.brender@gmail.com>
Sun, 10 Feb 2013 10:08:00 +0000 (05:08 -0500)
committerRon Brender <ron.brender@gmail.com>
Sun, 10 Feb 2013 10:08:00 +0000 (05:08 -0500)
Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/copyright.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 0749b47..202fa4a 100644 (file)
@@ -85,6 +85,7 @@ means includes all three of the
 &\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string} \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
 &\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} \\
 &\livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string} \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} \\
 &\livelink{chap:DWATsmall}{DW\-\_AT\-\_small} \\
+\\
 
 \hline
 \livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}
 
 \hline
 \livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}
@@ -664,6 +665,8 @@ means includes all three of the
 &\livelink{chap:DWATname}{DW\-\_AT\-\_name}   \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}   \\
 &\livelink{chap:DWATtype}{DW\-\_AT\-\_type}   \\
 &\livelink{chap:DWATname}{DW\-\_AT\-\_name}   \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}   \\
 &\livelink{chap:DWATtype}{DW\-\_AT\-\_type}   \\
+\\
+\\
 
 \hline
 \livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter} 
 
 \hline
 \livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter} 
@@ -794,6 +797,7 @@ means includes all three of the
 &\livelink{chap:DWATname}{DW\-\_AT\-\_name}    \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}    \\
 &\livelink{chap:DWATtype}{DW\-\_AT\-\_type}    \\
 &\livelink{chap:DWATname}{DW\-\_AT\-\_name}    \\
 &\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}    \\
 &\livelink{chap:DWATtype}{DW\-\_AT\-\_type}    \\
+\\
 
 \hline
 \livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}
 
 \hline
 \livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}
index 8bc8996..cf73725 100644 (file)
@@ -101,8 +101,8 @@ within an object file with the property that the entire set
 of section contributions must be retained or discarded as a
 whole; no partial elimination is allowed. Section groups can
 generally be handled by a linker in two ways:
 of section contributions must be retained or discarded as a
 whole; no partial elimination is allowed. Section groups can
 generally be handled by a linker in two ways:
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
 \item Given multiple identical (duplicate) section groups,
 \addtoindexx{section group}
 one of them is chosen to be kept and used, while the rest
 \item Given multiple identical (duplicate) section groups,
 \addtoindexx{section group}
 one of them is chosen to be kept and used, while the rest
@@ -142,8 +142,7 @@ how to match up references and definitions.
 What is minimally needed from the object file format and system
 linker (outside of DWARF itself, and normal object/linker
 facilities such as simple relocations) are:
 What is minimally needed from the object file format and system
 linker (outside of DWARF itself, and normal object/linker
 facilities such as simple relocations) are:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item A means of referencing from inside one \addtoindex{.debug\_info}
 compilation unit to another 
 
 \item A means of referencing from inside one \addtoindex{.debug\_info}
 compilation unit to another 
index c0359c7..c33d7dd 100644 (file)
@@ -4,10 +4,13 @@
 \setlength{\parindent}{0pt}
 \nonzeroparskip
 
 \setlength{\parindent}{0pt}
 \nonzeroparskip
 
-\dwf, Version 4.1 (Draft)
+\begin{center}
+\dwf, Version 4.1
 
 
-Copyright \copyright 2010, 2013 \dwf\ Committee
+Copyright\copyright 2010, 2013 \dwf\ Committee
+\end{center}
 
 
+\vspace{4ex}
 Permission is granted to copy, 
 distribute and/or modify this document under the terms of the
 GNU Free Documentation License, Version 1.3; with no 
 Permission is granted to copy, 
 distribute and/or modify this document under the terms of the
 GNU Free Documentation License, Version 1.3; with no 
index 92a80d4..f50a9e2 100644 (file)
@@ -25,7 +25,7 @@ have true named constants.}
 
 The debugging information entry for a program variable,
 formal parameter or constant may have the following attributes:
 
 The debugging information entry for a program variable,
 formal parameter or constant may have the following attributes:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item A \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 \addtoindexx{name attribute}
 whose value is a null-terminated
 \item A \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 \addtoindexx{name attribute}
 whose value is a null-terminated
@@ -175,7 +175,7 @@ an
 object is smaller than (that is, is a subset of the addresses
 of) the scope most closely enclosing the object. There are
 two cases:
 object is smaller than (that is, is a subset of the addresses
 of) the scope most closely enclosing the object. There are
 two cases:
-\begin{enumerate}[a)]
+\begin{enumerate}[a) ]
 \item If the scope of the object entry includes all of the
 containing scope except for a contiguous sequence of bytes at
 the beginning of that containing scope, then the scope of the
 \item If the scope of the object entry includes all of the
 containing scope except for a contiguous sequence of bytes at
 the beginning of that containing scope, then the scope of the
index df34b70..dff36d3 100644 (file)
@@ -54,8 +54,8 @@ other vendors.
 To ensure that extensions added by one vendor may be safely
 ignored by consumers that do not understand those extensions,
 the following rules should be followed:
 To ensure that extensions added by one vendor may be safely
 ignored by consumers that do not understand those extensions,
 the following rules should be followed:
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
 \item New attributes should be added in such a way that a
 debugger may recognize the format of a new attribute value
 without knowing the content of that attribute value.
 \item New attributes should be added in such a way that a
 debugger may recognize the format of a new attribute value
 without knowing the content of that attribute value.
@@ -153,7 +153,8 @@ can coexist and be distinguished within a single linked object.
 The differences between the 32\dash\   and 64\dash bit 
 DWARF formats are
 detailed in the following:
 The differences between the 32\dash\   and 64\dash bit 
 DWARF formats are
 detailed in the following:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
+
 \item  In the 32\dash bit DWARF format, an 
 \addtoindex{initial length field}
 (see 
 \item  In the 32\dash bit DWARF format, an 
 \addtoindex{initial length field}
 (see 
@@ -318,8 +319,7 @@ units may share the same table.
 
 \subsubsection{Compilation Unit Header}
 \label{datarep:compilationunitheader}
 
 \subsubsection{Compilation Unit Header}
 \label{datarep:compilationunitheader}
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
@@ -373,8 +373,7 @@ contributing to the description of a type that has been
 placed in its own \addtoindex{type unit}, within the 
 \addtoindex{.debug\_types} section,
 consists of the following information:
 placed in its own \addtoindex{type unit}, within the 
 \addtoindex{.debug\_types} section,
 consists of the following information:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
@@ -1946,9 +1945,8 @@ Each set of entries in the table of global names contained
 in the \addtoindex{.debug\_pubnames} and 
 \addtoindex{.debug\_pubtypes} sections begins
 with a header consisting of:
 in the \addtoindex{.debug\_pubnames} and 
 \addtoindex{.debug\_pubtypes} sections begins
 with a header consisting of:
+\begin{enumerate}[1. ]
 
 
-
-\begin{enumerate}[1.]
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 A 4\dash byte or 12\dash byte unsigned integer 
@@ -2015,8 +2013,7 @@ offset containing the value 0.
 Each set of entries in the table of address ranges contained
 in the \addtoindex{.debug\_aranges}
 section begins with a header containing:
 Each set of entries in the table of address ranges contained
 in the \addtoindex{.debug\_aranges}
 section begins with a header containing:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 % FIXME The unit length text is not fully consistent across
 % these tables.
 
 % FIXME The unit length text is not fully consistent across
 % these tables.
 
@@ -2401,8 +2398,7 @@ The type signature for a type T0 is formed from the
 of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
 of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item Start with an empty sequence S and a list V of visited
 types, where V is initialized to a list containing the type
 
 \item Start with an empty sequence S and a list V of visited
 types, where V is initialized to a list containing the type
@@ -2599,6 +2595,7 @@ if all of the type entries that it contains or refers to in
 Steps 6 and 7 can themselves each be considered for a separate
 \addtoindex{type unit}.}
 
 Steps 6 and 7 can themselves each be considered for a separate
 \addtoindex{type unit}.}
 
+\needlines{4}
 Where the DWARF producer may reasonably choose two or more
 different forms for a given attribute, it should choose
 the simplest possible form in computing the signature. (For
 Where the DWARF producer may reasonably choose two or more
 different forms for a given attribute, it should choose
 the simplest possible form in computing the signature. (For
index 1b2292e..85dcb00 100644 (file)
@@ -3,6 +3,8 @@
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
+\newcommand{\docdate}{10 February 2013 (***Draft***)}
+%
 \usepackage{url} % For color in letters. Links instead?
 \usepackage{color} % For color in letters. Links instead?
 \usepackage{ellipsis} % Provides ... as \dots
 \usepackage{url} % For color in letters. Links instead?
 \usepackage{color} % For color in letters. Links instead?
 \usepackage{ellipsis} % Provides ... as \dots
@@ -51,8 +53,6 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 
 \renewcommand{\familydefault}{phv}  % font family helvetica
 
 
 \renewcommand{\familydefault}{phv}  % font family helvetica
 
-\newcommand{\docdate}{7 February 2013}
-
 \newcommand{\dwf}{DWARF Debugging Information Format}
 
 \newenvironment{myindentpara}[1]%
 \newcommand{\dwf}{DWARF Debugging Information Format}
 
 \newenvironment{myindentpara}[1]%
@@ -130,6 +130,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 
 % And description lists with normal (not bold) text
 \renewcommand{\descriptionlabel}[1]{\hspace{\labelsep}\textnormal{#1}}
 
 % And description lists with normal (not bold) text
 \renewcommand{\descriptionlabel}[1]{\hspace{\labelsep}\textnormal{#1}}
+\newcommand{\descriptionlabelnl}[1]{\item[#1] \mbox{}\\}
 
 % Reduce vertical space at beginning of a list
 \setlength{\topsep}{0in}
 
 % Reduce vertical space at beginning of a list
 \setlength{\topsep}{0in}
index f6307cf..ac77afb 100644 (file)
@@ -285,7 +285,7 @@ indicates the 1\dash dimensional version of \texttt{desc}.)
 
 \newpage
 Finally, the following notation is useful:
 
 \newpage
 Finally, the following notation is useful:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item  sizeof(type): size in bytes of entities of the given type
 \item offset(type, comp): offset in bytes of the comp component
 within an entity of the given type
 \item  sizeof(type): size in bytes of entities of the given type
 \item offset(type, comp): offset in bytes of the comp component
 within an entity of the given type
@@ -415,8 +415,7 @@ debug> print arrays(5)%ap(2)
 \end{lstlisting}
 
 Interpretation of this expression proceeds as follows:
 \end{lstlisting}
 
 Interpretation of this expression proceeds as follows:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item Lookup name arrays. We find that it is a variable,
 whose type is given by the unnamed type at 6\$. Notice that
 
 \item Lookup name arrays. We find that it is a variable,
 whose type is given by the unnamed type at 6\$. Notice that
@@ -425,8 +424,7 @@ the type is an array type.
 
 \item Find the 5$^{th}$ element of that array object. To do array
 indexing requires several pieces of information:
 
 \item Find the 5$^{th}$ element of that array object. To do array
 indexing requires several pieces of information:
-
-\begin{enumerate}[a)]
+\begin{enumerate}[a) ]
 
 \item  the address of the array data
 
 
 \item  the address of the array data
 
@@ -480,14 +478,13 @@ symbol table.
 
 \item  Find the second element of the array object found in step 3. To do array indexing requires
 several pieces of information:
 
 \item  Find the second element of the array object found in step 3. To do array indexing requires
 several pieces of information:
-
-\begin{enumerate}[a)]
+\begin{enumerate}[a) ]
 \item  the address of the array storage
 
 \item  the lower bounds of the array \\
 % Using plain [] here gives trouble.
 \lbrack To check that 2 is within bounds we would require the upper
 \item  the address of the array storage
 
 \item  the lower bounds of the array \\
 % Using plain [] here gives trouble.
 \lbrack To check that 2 is within bounds we would require the upper
-%bound too, but we\textquoteright ll skip that for this example \rbrack
+bound too, but we will skip that for this example \rbrack
 
 \item  the stride
 
 
 \item  the stride
 
@@ -558,8 +555,7 @@ Figure \refersec{fig:adaexampledwarfdescription}.
 
 
 Interesting aspects about this example are:
 
 
 Interesting aspects about this example are:
-
-\begin{enumerate}[1)]
+\begin{enumerate}[1. ]
 \item The array VEC2 is ``immediately'' contained within structure
 REC2 (there is no intermediate descriptor or indirection),
 which is reflected in the absence of a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
 \item The array VEC2 is ``immediately'' contained within structure
 REC2 (there is no intermediate descriptor or indirection),
 which is reflected in the absence of a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
@@ -1351,8 +1347,7 @@ reduces to a simpler single level subset of the two level
 approaches considered here.)
 
 The approaches are:
 approaches considered here.)
 
 The approaches are:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item  Inline both OUTER and INNER in all cases
 
 \item Inline OUTER, multiple INNERs \\
 \item  Inline both OUTER and INNER in all cases
 
 \item Inline OUTER, multiple INNERs \\
index a19018b..9d3d5d6 100644 (file)
@@ -190,7 +190,7 @@ actually declared in the source}{objects or types that are not actually declared
 &\livelinki{chap:DWATbitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
 \livetarg{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} 
 &\livelinki{chap:DWATbitsizebasetypebitsize}{Base type bit size}{base type bit size} \\
 &\livelinki{chap:DWATbitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
 \livetarg{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} 
 &\livelinki{chap:DWATbitsizebasetypebitsize}{Base type bit size}{base type bit size} \\
-&\livelink{chap:DWATbitsizedatamemberbitsize}{Data member bit size}{data member bit size} \\
+&\livelinki{chap:DWATbitsizedatamemberbitsize}{Data member bit size}{data member bit size} \\
 \livetarg{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} 
 &\livelinki{chap:DWATbitstridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
 &\livelinki{chap:DWATbitstridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
 \livetarg{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride} 
 &\livelinki{chap:DWATbitstridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
 &\livelinki{chap:DWATbitstridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
index 265546a..95790d3 100644 (file)
@@ -89,7 +89,7 @@ instance there is no need to have a
 for the member function.}
 
 Each set begins with a header containing four values:
 for the member function.}
 
 Each set begins with a header containing four values:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
@@ -157,7 +157,7 @@ portion of the program\textquoteright s address space that is covered by
 a single compilation unit.
 
 Each set begins with a header containing five values:
 a single compilation unit.
 
 Each set begins with a header containing five values:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 The total length of all of the
 \item unit\_length (initial length) \\
 \addtoindexx{unit\_length}
 The total length of all of the
@@ -435,31 +435,28 @@ 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:
 
 \subsection{Line Number Program Instructions}
 The state machine instructions in a line number program belong to one of three categories:
 
-\begin{description}
-\item[special opcodes]
-
+\begin{enumerate}[1. ]
+\item special opcodes \\
 These have a \addtoindex{ubyte} opcode field and no operands.\vspace{1ex}
 
 \textit{Most of the instructions in a 
 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.} \\
-
-\item[standard opcodes]
+line number program are special opcodes.}
 
 
+\item standard opcodes \\
 These have a \addtoindex{ubyte} opcode field which may be followed by zero or more
 \addtoindex{LEB128} operands (except for 
 \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
 These have a \addtoindex{ubyte} opcode field which may be followed by zero or more
 \addtoindex{LEB128} operands (except for 
 \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. \\
-
-\item[extended opcodes]
+each standard opcode.
 
 
+\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). \\
 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{description}
+\end{enumerate}
 
 
 \subsection{The Line Number Program Header}
 
 
 \subsection{The Line Number Program Header}
@@ -474,7 +471,7 @@ used throughout the rest of the line number program.
 The line number program for each compilation unit begins with
 a header containing the following fields in order:
 
 The line number program for each compilation unit begins with
 a header containing the following fields in order:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item unit\_length (initial length)  \\
 \addtoindexx{unit\_length}
 The size in bytes of the line number information for this
 \item unit\_length (initial length)  \\
 \addtoindexx{unit\_length}
 The size in bytes of the line number information for this
@@ -517,6 +514,7 @@ For non-VLIW
 architectures, this field is 1, the \addtoindex{op\_index register} is always
 0, and the operation pointer is simply the address register.
 
 architectures, this field is 1, the \addtoindex{op\_index register} is always
 0, and the operation pointer is simply the address register.
 
+\needlines{4}
 \item default\_is\_stmt (\addtoindex{ubyte}) \\
 \addtoindexx{default\_is\_stmt}
 The initial value of the \addtoindex{is\_stmt} register.  
 \item default\_is\_stmt (\addtoindex{ubyte}) \\
 \addtoindexx{default\_is\_stmt}
 The initial value of the \addtoindex{is\_stmt} register.  
@@ -690,7 +688,7 @@ scheduling or other optimization.)
 \label{chap:specialopcodes}
 Each \addtoindex{ubyte} special opcode has the following effect on the state machine:
 
 \label{chap:specialopcodes}
 Each \addtoindex{ubyte} special opcode has the following effect on the state machine:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item  Add a signed integer to the line register.
 
 
 \item  Add a signed integer to the line register.
 
@@ -814,7 +812,11 @@ 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).}
 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:}
+
+\textit{The resulting opcode mapping is shown in
+Figure \refersec{fig:examplelinenumberspecialopcodemapping}.}
+
+\begin{figure}[ht]
 \begin{alltt}\textit{
                         Line Advance
    Operation  
 \begin{alltt}\textit{
                         Line Advance
    Operation  
@@ -842,7 +844,9 @@ available for the maximum \addtoindex{operation advance} (see below).}
           19   241 242 243 244 245 246 247 248 249 250 251 252
           20   253 254 255
 }\end{alltt}
           19   241 242 243 244 245 246 247 248 249 250 251 252
           20   253 254 255
 }\end{alltt}
-
+\caption{Example line number special opcode mapping}
+\label{fig:examplelinenumberspecialopcodemapping}
+\end{figure}
 
 \textit{There is no requirement that the expression 
 255 - \addtoindex{line\_base} + 1 be an integral multiple of
 
 \textit{There is no requirement that the expression 
 255 - \addtoindex{line\_base} + 1 be an integral multiple of
@@ -855,7 +859,7 @@ available for the maximum \addtoindex{operation advance} (see below).}
 The standard opcodes, their applicable operands and the
 actions performed by these opcodes are as follows:
 
 The standard opcodes, their applicable operands and the
 actions performed by these opcodes are as follows:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item \textbf{DW\-\_LNS\-\_copy} \\
 The \livetarg{chap:DWLNScopy}{DW\-\_LNS\-\_copy} 
 
 \item \textbf{DW\-\_LNS\-\_copy} \\
 The \livetarg{chap:DWLNScopy}{DW\-\_LNS\-\_copy} 
@@ -892,11 +896,13 @@ The \livetarg{chap:DWLNSsetcolumn}{DW\-\_LNS\-\_set\-\_column} opcode takes a
 single unsigned LEB128\addtoindexx{LEB128!unsigned} operand and stores it in the column
 register of the state machine.
 
 single unsigned LEB128\addtoindexx{LEB128!unsigned} operand and stores it in the column
 register of the state machine.
 
+\needlines{4}
 \item \textbf{DW\-\_LNS\-\_negate\-\_stmt} \\
 The \livetarg{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt} opcode takes no
 operands. It sets the \addtoindex{is\_stmt} register of the state machine
 to the logical negation of its current value.
 
 \item \textbf{DW\-\_LNS\-\_negate\-\_stmt} \\
 The \livetarg{chap:DWLNSnegatestmt}{DW\-\_LNS\-\_negate\-\_stmt} opcode takes no
 operands. It sets the \addtoindex{is\_stmt} register of the state machine
 to the logical negation of its current value.
 
+\needlines{4}
 \item \textbf{DW\-\_LNS\-\_set\-\_basic\-\_block} \\
 The \livetarg{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}
 opcode
 \item \textbf{DW\-\_LNS\-\_set\-\_basic\-\_block} \\
 The \livetarg{chap:DWLNSsetbasicblock}{DW\-\_LNS\-\_set\-\_basic\-\_block}
 opcode
@@ -1001,7 +1007,7 @@ register of the state machine.
 
 The extended opcodes are as follows:
 
 
 The extended opcodes are as follows:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item \textbf{DW\-\_LNE\-\_end\-\_sequence} \\
 The \livetarg{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence} opcode takes no operands. It sets the
 
 \item \textbf{DW\-\_LNE\-\_end\-\_sequence} \\
 The \livetarg{chap:DWLNEendsequence}{DW\-\_LNE\-\_end\-\_sequence} opcode takes no operands. It sets the
@@ -1016,6 +1022,7 @@ number program sequence must end with a \livelink{chap:DWLNEendsequence}{DW\-\_L
 instruction which creates a row whose address is that of the
 byte after the last target machine instruction of the sequence.
 
 instruction which creates a row whose address is that of the
 byte after the last target machine instruction of the sequence.
 
+\needlines{5}
 \item \textbf{DW\-\_LNE\-\_set\-\_address} \\
 The \livetarg{chap:DWLNEsetaddress}{DW\-\_LNE\-\_set\-\_address} opcode takes a single relocatable
 address as an operand. The size of the operand is the size
 \item \textbf{DW\-\_LNE\-\_set\-\_address} \\
 The \livetarg{chap:DWLNEsetaddress}{DW\-\_LNE\-\_set\-\_address} opcode takes a single relocatable
 address as an operand. The size of the operand is the size
@@ -1031,8 +1038,7 @@ stores a relocatable value into it instead.}
 \item \textbf{DW\-\_LNE\-\_define\-\_file} \\
 
 The \livetarg{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file} opcode takes four operands:
 \item \textbf{DW\-\_LNE\-\_define\-\_file} \\
 
 The \livetarg{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file} opcode takes four operands:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item A null\dash terminated string containing the full or relative
 path name of a source file. If the entry contains a file
 
 \item A null\dash terminated string containing the full or relative
 path name of a source file. If the entry contains a file
@@ -1079,8 +1085,6 @@ parameter, an unsigned LEB128\addtoindexx{LEB128!unsigned}
 integer. It sets the
 \addtoindex{discriminator} register to the new value.
 
 integer. It sets the
 \addtoindex{discriminator} register to the new value.
 
-
-
 \end{enumerate}
 
 \textit{Appendix \refersec{app:linenumberprogramexample} 
 \end{enumerate}
 
 \textit{Appendix \refersec{app:linenumberprogramexample} 
@@ -1254,13 +1258,10 @@ to any definitions or undefinitions given explicitly by the
 user on the command line.
 
 
 user on the command line.
 
 
-
+\needlines{6}
 \section{Call Frame Information}
 \label{chap:callframeinformation}
 
 \section{Call Frame Information}
 \label{chap:callframeinformation}
 
-
-
-
 \textit{Debuggers often need to be able to view and modify the state of any subroutine activation that is
 \addtoindexx{activation!call frame}
 on the call stack. An activation consists of:}
 \textit{Debuggers often need to be able to view and modify the state of any subroutine activation that is
 \addtoindexx{activation!call frame}
 on the call stack. An activation consists of:}
@@ -1469,8 +1470,7 @@ A Common Information Entry holds information that is shared
 among many Frame Description Entries. There is at least one
 CIE in every non-empty \addtoindex{.debug\_frame} section. A CIE contains
 the following fields, in order:
 among many Frame Description Entries. There is at least one
 CIE in every non-empty \addtoindex{.debug\_frame} section. A CIE contains
 the following fields, in order:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item length (initial length)  \\
 A constant that gives the number of bytes of the CIE structure,
 not including the length field itself 
 \item length (initial length)  \\
 A constant that gives the number of bytes of the CIE structure,
 not including the length field itself 
@@ -1528,8 +1528,8 @@ size of a segment selector in this CIE and any FDEs that
 use it, in bytes.
 
 \item  \addtoindex{code\_alignment\_factor} (unsigned LEB128) 
 use it, in bytes.
 
 \item  \addtoindex{code\_alignment\_factor} (unsigned LEB128) 
-\addtoindexx{LEB128!unsigned}\addtoindexx{unsigned LEB128|see{LEB128, unsigned}} \\
-\addtoindex{code alignment factor}
+\addtoindexx{LEB128!unsigned}\addtoindexx{unsigned LEB128|see{LEB128, unsigned}}
+\addtoindexx{code alignment factor} \\
 A 
 \addtoindexx{\textless caf\textgreater|see{code alignment factor}}
 constant that is factored out of all advance location
 A 
 \addtoindexx{\textless caf\textgreater|see{code alignment factor}}
 constant that is factored out of all advance location
@@ -1566,8 +1566,7 @@ match the length value above.
 \end{enumerate}
 
 An FDE contains the following fields, in order:
 \end{enumerate}
 
 An FDE contains the following fields, in order:
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item length (initial length)  \\
 
 A constant that gives the number of bytes of the header and
 \item length (initial length)  \\
 
 A constant that gives the number of bytes of the header and
@@ -1604,7 +1603,7 @@ of bytes of program instructions described by this entry.
 \item instructions (array of \addtoindex{ubyte}) \\
 A sequence of table defining instructions that are described below.
 
 \item instructions (array of \addtoindex{ubyte}) \\
 A sequence of table defining instructions that are described below.
 
-\item 6. padding (array of \addtoindex{ubyte}) \\
+\item padding (array of \addtoindex{ubyte}) \\
 Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions 
 to make the size of this entry match the length value above.
 \end{enumerate}
 Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions 
 to make the size of this entry match the length value above.
 \end{enumerate}
@@ -1648,8 +1647,7 @@ and \livelink{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression}.}
 
 \subsubsection{Row Creation Instructions}
 \label{chap:rowcreationinstructions}
 
 \subsubsection{Row Creation Instructions}
 \label{chap:rowcreationinstructions}
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item \textbf{DW\-\_CFA\-\_set\-\_loc} \\
 The \livetarg{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc} instruction 
 
 \item \textbf{DW\-\_CFA\-\_set\-\_loc} \\
 The \livetarg{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc} instruction 
@@ -1700,8 +1698,8 @@ and size of the delta operand.
 
 \subsubsection{CFA Definition Instructions}
 \label{chap:cfadefinitioninstructions}
 
 \subsubsection{CFA Definition Instructions}
 \label{chap:cfadefinitioninstructions}
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
 \item \textbf{DW\-\_CFA\-\_def\-\_cfa} \\
 The \livetarg{chap:DWCFAdefcfa}{DW\-\_CFA\-\_def\-\_cfa}
 instruction takes two unsigned LEB128\addtoindexx{LEB128!unsigned}
 \item \textbf{DW\-\_CFA\-\_def\-\_cfa} \\
 The \livetarg{chap:DWCFAdefcfa}{DW\-\_CFA\-\_def\-\_cfa}
 instruction takes two unsigned LEB128\addtoindexx{LEB128!unsigned}
@@ -1766,8 +1764,8 @@ expression operators that can be used.}
 
 \subsubsection{Register Rule Instructions}
 \label{chap:registerruleinstructions}
 
 \subsubsection{Register Rule Instructions}
 \label{chap:registerruleinstructions}
+\begin{enumerate}[1. ]
 
 
-\begin{enumerate}[1.]
 \item \textbf{DW\-\_CFA\-\_undefined} \\
 The \livetarg{chap:DWCFAundefined}{DW\-\_CFA\-\_undefined} instruction takes a single unsigned
 LEB128\addtoindexx{LEB128!unsigned} operand that represents a register number. The required
 \item \textbf{DW\-\_CFA\-\_undefined} \\
 The \livetarg{chap:DWCFAundefined}{DW\-\_CFA\-\_undefined} instruction takes a single unsigned
 LEB128\addtoindexx{LEB128!unsigned} operand that represents a register number. The required
@@ -1895,14 +1893,14 @@ into the
 body of a function.}
 
 
 body of a function.}
 
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item \textbf{DW\-\_CFA\-\_remember\-\_state} \\
 The \livetarg{chap:DWCFArememberstate}{DW\-\_CFA\-\_remember\-\_state} instruction takes no operands. The
 required action is to push the set of rules for every register
 onto an implicit stack.
 
 
 \item \textbf{DW\-\_CFA\-\_remember\-\_state} \\
 The \livetarg{chap:DWCFArememberstate}{DW\-\_CFA\-\_remember\-\_state} instruction takes no operands. The
 required action is to push the set of rules for every register
 onto an implicit stack.
 
-
+\needlines{4}
 \item \textbf{DW\-\_CFA\-\_restore\-\_state} \\
 The \livetarg{chap:DWCFArestorestate}{DW\-\_CFA\-\_restore\-\_state} instruction takes no operands. The
 required action is to pop the set of rules off the implicit
 \item \textbf{DW\-\_CFA\-\_restore\-\_state} \\
 The \livetarg{chap:DWCFArestorestate}{DW\-\_CFA\-\_restore\-\_state} instruction takes no operands. The
 required action is to pop the set of rules off the implicit
@@ -1912,7 +1910,7 @@ stack and place them in the current row.
 
 \subsubsection{Padding Instruction}
 \label{chap:paddinginstruction}
 
 \subsubsection{Padding Instruction}
 \label{chap:paddinginstruction}
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item \textbf{DW\-\_CFA\-\_nop} \\
 The \livetarg{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instruction has no operands and no required
 actions. It is used as padding to make a CIE or FDE an
 \item \textbf{DW\-\_CFA\-\_nop} \\
 The \livetarg{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instruction has no operands and no required
 actions. It is used as padding to make a CIE or FDE an
@@ -1927,8 +1925,7 @@ appropriate size
 (L1), one searches through the FDE headers looking at the
 initial\_location and address\_range values to see if L1 is
 contained in the FDE. If so, then:}
 (L1), one searches through the FDE headers looking at the
 initial\_location and address\_range values to see if L1 is
 contained in the FDE. If so, then:}
-
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 
 \item \textit{Initialize a register set by reading the
 initial\_instructions field of the associated CIE.}
 
 \item \textit{Initialize a register set by reading the
 initial\_instructions field of the associated CIE.}
index cff986a..769ee10 100644 (file)
@@ -80,7 +80,7 @@ Section \refersec{chap:importedunitentries}).
 
 Compilation unit entries may have the following 
 attributes:
 
 Compilation unit entries may have the following 
 attributes:
-\begin{enumerate}[1]
+\begin{enumerate}[1]
 \item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and 
 \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
 \addtoindexx{high PC attribute}
 \item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and 
 \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
 \addtoindexx{high PC attribute}
@@ -1078,7 +1078,7 @@ compact. However, these are not equivalent in general.}
 relative to the first unit of storage allocated for the
 procedure\textquoteright s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
 can be used in several ways:}
 relative to the first unit of storage allocated for the
 procedure\textquoteright s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
 can be used in several ways:}
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item \textit{In procedures that need 
 \addtoindexx{location list}
 location lists to locate local
 \item \textit{In procedures that need 
 \addtoindexx{location list}
 location lists to locate local
@@ -1115,7 +1115,7 @@ In the context of supporting nested subroutines, the
 \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute value should obey the following
 constraints:
 
 \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute value should obey the following
 constraints:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item It should compute a value that does not change during the
 life of the procedure, and
 
 \item It should compute a value that does not change during the
 life of the procedure, and
 
@@ -1175,7 +1175,7 @@ will have the same types of child entries as would an entry
 for a subroutine defined explicitly using the instantiation
 types. The exceptions are:
 
 for a subroutine defined explicitly using the instantiation
 types. The exceptions are:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item Each formal parameterized type declaration appearing in the
 template definition is represented by a debugging information
 entry with the 
 \item Each formal parameterized type declaration appearing in the
 template definition is represented by a debugging information
 entry with the 
@@ -1501,7 +1501,7 @@ inlined instance tree will be closely analogous to the
 structure and content of its associated abstract instance
 tree. There are a few exceptions:
 
 structure and content of its associated abstract instance
 tree. There are a few exceptions:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item An entry in the concrete instance tree may be omitted if
 it contains only a 
 \addtoindexx{abstract origin attribute}
 \item An entry in the concrete instance tree may be omitted if
 it contains only a 
 \addtoindexx{abstract origin attribute}
@@ -1580,7 +1580,7 @@ concrete out\dash of\dash line instance of a given subroutine and the
 representation of a concrete inlined instance of that same
 subroutine are as follows:
 
 representation of a concrete inlined instance of that same
 subroutine are as follows:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item  The root entry for a concrete out\dash of\dash line instance
 of a given inlined subroutine has the same tag as does its
 associated (abstract) inlined subroutine entry (that is, tag
 \item  The root entry for a concrete out\dash of\dash line instance
 of a given inlined subroutine has the same tag as does its
 associated (abstract) inlined subroutine entry (that is, tag
@@ -1614,7 +1614,7 @@ subroutine, the following rules apply to their abstract and
 \addtoindexx{concrete instance!nested}
 concrete instance trees:
 
 \addtoindexx{concrete instance!nested}
 concrete instance trees:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item The abstract instance tree for the nested subroutine is
 described within the abstract instance tree for the outer
 subroutine according to the rules in 
 \item The abstract instance tree for the nested subroutine is
 described within the abstract instance tree for the outer
 subroutine according to the rules in 
index 9f45b6e..054d5d6 100644 (file)
@@ -1129,7 +1129,7 @@ is required.
 For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
 \addtoindexx{data member location attribute}
 there are two cases:
 For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
 \addtoindexx{data member location attribute}
 there are two cases:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item If the value is an integer constant, it is the offset
 in bytes from the beginning of the containing entity. If
 the beginning of the containing entity has a non-zero bit
 \item If the value is an integer constant, it is the offset
 in bytes from the beginning of the containing entity. If
 the beginning of the containing entity has a non-zero bit
@@ -1531,7 +1531,7 @@ and have the same types of child entries as would an entry
 for a class type defined explicitly using the instantiation
 types and values. The exceptions are:
 
 for a class type defined explicitly using the instantiation
 types and values. The exceptions are:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item Each formal parameterized type declaration appearing in the
 template definition is represented by a debugging information
 entry with the tag 
 \item Each formal parameterized type declaration appearing in the
 template definition is represented by a debugging information
 entry with the tag 
@@ -1772,7 +1772,7 @@ If an enumeration type has type safe
 \addtoindexx{type safe enumeration types}
 semantics such that
 
 \addtoindexx{type safe enumeration types}
 semantics such that
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item Enumerators are contained in the scope of the enumeration type, and/or
 
 \item Enumerators are not implicitly converted to another type
 \item Enumerators are contained in the scope of the enumeration type, and/or
 
 \item Enumerators are not implicitly converted to another type
@@ -1897,7 +1897,7 @@ Each debugging information entry owned by a subroutine
 type entry has a tag whose value has one of two possible
 interpretations:
 
 type entry has a tag whose value has one of two possible
 interpretations:
 
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item The formal parameters of a parameter list (that have a
 specific type) are represented by a debugging information entry
 with the tag \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}. 
 \item The formal parameters of a parameter list (that have a
 specific type) are represented by a debugging information entry
 with the tag \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}. 
@@ -2375,7 +2375,7 @@ named by the template alias.
 
 \needlines{4}
 The template alias entry has the following child entries:
 
 \needlines{4}
 The template alias entry has the following child entries:
-\begin{enumerate}[1.]
+\begin{enumerate}[1. ]
 \item Each formal parameterized type declaration appearing
 in the template alias declaration is represented
 by a debugging information entry with the tag
 \item Each formal parameterized type declaration appearing
 in the template alias declaration is represented
 by a debugging information entry with the tag