Merge branch 'HEAD' of dwarfgit@dwarfstd.org:dwarf-doc.git
authorRon Brender <ron.brender@gmail.com>
Fri, 10 Jul 2015 20:54:20 +0000 (16:54 -0400)
committerRon Brender <ron.brender@gmail.com>
Fri, 10 Jul 2015 20:54:20 +0000 (16:54 -0400)
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/encodingdecoding.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 30e834e..e0dd36b 100644 (file)
@@ -255,7 +255,7 @@ The set of values
 and their meaning for this attribute is given in 
 Table \ref{tab:endianityattributevalues}.
 
-\begin{table}[here]
+\begin{table}[h]
 \caption{Endianity attribute values}
 \label{tab:endianityattributevalues}
 \centering
index d7631cc..9341a32 100644 (file)
@@ -3845,7 +3845,7 @@ This hash function is sometimes informally known as the
 \hrefself{http://en.wikipedia.org/wiki/List\_of\_hash\_functions} or
 \hrefself{http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function)}.} 
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 
 unsigned long \* must be a 32-bit integer type *\
index 3dc69de..149a9d7 100644 (file)
@@ -67,6 +67,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \usepackage{lscape}        % For landscape mode (Appendix B)
 \usepackage{tikz}         % graphics (Appendix B)
 \usetikzlibrary{shapes.geometric}
+\usetikzlibrary{shapes.multipart}
 \usetikzlibrary{arrows,decorations.pathmorphing}
 \usepackage{changebar}     % For change bars in margin
 \usepackage{amssymb}       % For math symbols
@@ -192,7 +193,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % A simple one column table of names; default width is 2 inches
 \newcommand{\simplenametablerule}{\simplerule[2in]}
 \newenvironment{simplenametable}[3][2in]
-    {   \begin{table}[here] \caption{#2} \label{#3}
+    {   \begin{table}[h] \caption{#2} \label{#3}
         \begin{center}
         \renewcommand{\simplenametablerule}{\simplerule[#1]}
         \simplenametablerule \\
index 15b816c..200d431 100644 (file)
@@ -7,7 +7,7 @@ Here are algorithms expressed in a C-like pseudo-code to
 encode and decode signed and unsigned numbers in LEB128
 representation.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 do
 {
@@ -22,7 +22,7 @@ do
 \addtoindexx{LEB128!unsigned, encoding as}
 \end{figure}
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 more = 1;
 negative = (value < 0);
@@ -51,7 +51,7 @@ while(more)
 \addtoindexx{LEB128!signed, encoding as}
 \end{figure}
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 result = 0;
 shift = 0;
@@ -68,7 +68,7 @@ while(true)
 \addtoindexx{LEB128!unsigned, decoding of}
 \end{figure}
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 result = 0;
 shift = 0;
index eb6143d..e083a3d 100644 (file)
@@ -36,7 +36,7 @@ typedef char* strp;
 
 % Ensures we get the following float out before we go on.
 \clearpage
-\begin{figure}[here]
+\begin{figure}[h]
 %\centering
 %\setlength{\linewidth}{1.1\linewidth}
 \begin{minipage}[t]{0.03\linewidth}
@@ -355,7 +355,7 @@ Consider the \addtoindex{Fortran array}\addtoindexx{Fortran 90} source fragment
 \addtoindexx{array type entry!examples}
 Figure \referfol{fig:fortranarrayexamplesourcefragment}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
         type array_ptr
         real :: myvar
@@ -395,7 +395,7 @@ knowledge of this structure and 2) there does not need to
 be an explicit representation of this structure in the DWARF
 input to the debugger.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 struct desc {
     long el_len;       // Element length
@@ -729,7 +729,7 @@ The \addtoindex{Fortran} (simple) array coarray example
 in Figure \refersec{fig:Fortranarraycoarraysourcefragment} can be described as 
 illustrated in Figure \refersec{fig:FortranarraycoarrayDWARFdescription}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
         INTEGER X(10)[*]
 \end{lstlisting}
@@ -737,7 +737,7 @@ illustrated in Figure \refersec{fig:FortranarraycoarrayDWARFdescription}.
 \label{fig:Fortranarraycoarraysourcefragment}
 \end{figure}
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{dwflisting}
 \begin{alltt}
 10\$: \DWTAGarraytype
@@ -768,7 +768,7 @@ The \addtoindex{Fortran} multidimensional coarray of a multidimensional array ex
 in Figure \refersec{fig:Fortranmultidimensionalcoarraysourcefragment} can be described as 
 illustrated in Figure \referfol{fig:FortranmultidimensionalcoarrayDWARFdescription}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
         INTEGER X(10,11,12)[2,3,*]
 \end{lstlisting}
@@ -776,7 +776,7 @@ illustrated in Figure \referfol{fig:FortranmultidimensionalcoarrayDWARFdescripti
 \label{fig:Fortranmultidimensionalcoarraysourcefragment}
 \end{figure}
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{dwflisting}
 \begin{alltt}
 10\$: \DWTAGarraytype
@@ -1103,7 +1103,7 @@ Figure \refersec{fig:adaexamplesourcefragment}
 illustrates two kinds of \addtoindex{Ada} 
 parameterized array, one embedded in a record.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 M : INTEGER := <exp>;
 VEC1 : array (1..M) of INTEGER;
@@ -1232,7 +1232,7 @@ Figure \referfol{fig:packedrecordexamplesourcefragment}
 is used to illustrate the representation of packed unaligned
 \addtoindex{bit fields}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 TYPE T : PACKED RECORD                  ! bit size is 2
          F5 : BOOLEAN;                  ! bit offset is 0
@@ -1845,7 +1845,7 @@ The information found in a \DWARFVersionIV{} line number
 header can be encoded as shown in 
 Figure \refersec{fig:preV5LNCTusingV5}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{dwflisting}
 \begin{alltt}
   Field           Field Name                      Value(s)
@@ -1940,7 +1940,7 @@ Consider the simple source file and the resulting machine
 code for the Intel 8086 processor in 
 Figure \refersec{fig:linenumberprogramexamplemachinecode}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 1: int
 2: main()
@@ -2094,7 +2094,7 @@ pointer). The first column values are byte addresses.
 \textless fs\textgreater\ denotes the stack frame size in bytes, namely 12.
 
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
        ;; start prologue
 foo    sub   R7, R7, <fs>        ; Allocate frame
@@ -2271,7 +2271,7 @@ example involves a nested subprogram \texttt{INNER} that makes uplevel
 references to the formal parameter and local variable of the
 containing subprogram \texttt{OUTER}.
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}
 inline procedure OUTER (OUTER_FORMAL : integer) =
     begin
@@ -2794,7 +2794,7 @@ can be represented as illustrated in
 Figure \refersec{fig:constantexpressionsdwarfdescription}.
 
 
-\begin{figure}[here]
+\begin{figure}[h]
 \begin{lstlisting}[numbers=none]
 constexpr double mass = 9.8;
 constexpr int square (int x) { return x * x; }
index b423654..1f23d71 100644 (file)
@@ -2496,7 +2496,7 @@ has been specified.
 \needlines{4}
 \textit {For example, the Intel386 \texttrademark\  processor might use the following values:}
 
-\begin{table}[here]
+\begin{table}[h]
 \caption{Example address class codes}
 \label{tab:inteladdressclasstable}
 \centering
index fa7716f..39a51bb 100644 (file)
@@ -170,7 +170,129 @@ Figure \referfol{fig:nameindexlayout}.
 \end{enumerate}
 
 \begin{figure}[t]
-\includegraphics[keepaspectratio=true,scale=0.5]{acceleratednameaccessdiagram}
+  \begin{tikzpicture}[every node/.style={draw, anchor=text,
+        node distance=2.5cm,
+        text width=3.5cm, font=\normalsize},
+        description/.style={
+          draw=none,
+          font=\em\footnotesize,
+          node distance=5cm,
+          text width=5cm
+        },
+        table/.style={
+          font=\scriptsize,
+          draw=black,
+          rectangle split,
+          fill=yellow!10
+        },
+        caption/.style={
+          anchor=south,
+          font=\scriptsize,
+          draw=none
+        }]
+    \node (header) [font=\footnotesize,
+                    fill=blue!10,
+                    rectangle split,
+                    rectangle split allocate boxes=8,
+                    rectangle split parts=8]
+          {Header
+            \nodepart{two}
+            CU list
+            \nodepart{three}
+            Local TU list
+            \nodepart{four}
+            Foreign TU list
+            \nodepart{five}
+            Hash table
+            \nodepart{six}
+            Name table
+            \nodepart{seven}
+            Abbrev table
+            \nodepart{eight}
+            Entry pool
+          };
+    \node (cuofs) [table,
+                   rectangle split allocate boxes=4,
+                   rectangle split parts=4]  at (6,0)
+         {CU 0 offset
+          \nodepart{two}
+          CU 1 offset
+          \nodepart{three}
+          CU 2 offset
+          \nodepart{four}
+          \dots
+         };
+    \node (cusecofs) [description,right of=cuofs] {section offset of CU header} ;
+    \node (tuofs) [below of=cuofs,
+                   table,
+                   rectangle split allocate boxes=4,
+                   rectangle split parts=4]
+         {TU 0 offset
+          \nodepart{two}
+          TU 1 offset
+          \nodepart{three}
+          TU 2 offset
+          \nodepart{four}
+          \dots
+         };
+    \node (tusecofs) [description,right of=tuofs] {section offset of TU header} ;
+    \node (tusigs) [below of=tuofs, table,
+                    rectangle split allocate boxes=4,
+                    rectangle split parts=4]
+         {TU $n$ sig.
+          \nodepart{two}
+          TU $n+1$ sig.
+          \nodepart{three}
+          TU $n+2$ sig.
+          \nodepart{four}
+          \dots
+         };
+   \node (typesigs) [description,right of=tusigs] {type signature of foreign TU} ;
+   \matrix (hashtable) [draw,style=dashed] at (2, -9)
+           {\node (buckets) [style=solid, table, text width=3cm,
+                             rectangle split allocate boxes=4,
+                             rectangle split parts=4]
+                  {index to hashes} ;
+            \draw node [caption] at (buckets.north) {Buckets} ;
+            &
+            \node (hashes) [style=solid, table, text width=3cm,
+                            rectangle split allocate boxes=6,
+                            rectangle split parts=6]
+                  {hash value} ;
+            \draw node [caption] at (hashes.north) {Hashes} ;
+            \\
+           };
+    \node (names) [right of=hashes, node distance=5cm,
+                   style=solid,
+                   table,
+                   rectangle split allocate boxes=6,
+                   rectangle split parts=6]
+          {strp \hspace{4em} entry };
+    \draw node [caption] at (names.north) {Names} ;
+    \path (names.north) edge (names.south) ;
+
+    \path[->]
+    (header.two east)    edge (cuofs.west)
+    (header.three east)  edge (tuofs.west)
+    (header.four east)   edge (tusigs.west)
+    (header.five east)   edge (hashtable)
+    (cuofs)              edge (cusecofs)
+    (tuofs)              edge (tusecofs)
+    (tusigs)             edge (typesigs)
+    (buckets.one east)   edge (hashes.one west)
+    (buckets.two east)   edge (hashes.three west)
+    (buckets.three east) edge (hashes.six west)
+    (hashes.one east)    edge (names.one west)
+    (hashes.two east)    edge (names.two west)
+    (hashes.three east)  edge (names.three west)
+    (hashes.four east)   edge (names.four west)
+    (hashes.five east)   edge (names.five west)
+    (hashes.six east)    edge (names.six west)
+    ;
+    \draw[->] (header.six east)
+      .. controls (buckets.north) and (tusigs.south west) ..
+      (names.north west) ;
+  \end{tikzpicture}
 \caption{Name Index Layout}
 \label{fig:nameindexlayout}
 \end{figure}
index a4df619..12c7c44 100644 (file)
@@ -1744,7 +1744,7 @@ a
 set of values for the \DWATinline{} attribute is given in
 Table \refersec{tab:inlinecodes}.
 
-\begin{table}[here]
+\begin{table}[h]
 \centering
 \caption{Inline codes}
 \label{tab:inlinecodes}
index 353ec4f..afd37b4 100644 (file)
@@ -109,7 +109,7 @@ for presentation purposes. These groups are not part of this
 DWARF specification.}
 
 \newcommand{\EncodingGroup}[1]{\multicolumn{2}{l}{\hspace{2cm}\bfseries\textit{#1}}}
-\begin{table}[!here]
+\begin{table}[!h]
 \caption{Encoding attribute values}
 \label{tab:encodingattributevalues}
 \centering
@@ -269,7 +269,7 @@ mean that the type has a leading overpunch, trailing overpunch,
 leading separate or trailing separate sign representation or,
 alternatively, no sign at all.
 
-\begin{table}[here]
+\begin{table}[h]
 \caption{Decimal sign attribute values}
 \label{tab:decimalsignattributevalues}
 \centering
@@ -473,7 +473,7 @@ source
 \addtoindexx{parameter|see{formal parameter entry}}
 presentation.
 
-\begin{table}[here]
+\begin{table}[h]
 \caption{Type modifier tags}
 \label{tab:typemodifiertags}
 \centering