Complete revisions to Appendix B regarding new
authorRon Brender <ron.brender@gmail.com>
Sat, 19 Apr 2014 16:30:51 +0000 (12:30 -0400)
committerRon Brender <ron.brender@gmail.com>
Sat, 19 Apr 2014 16:30:51 +0000 (12:30 -0400)
.debug_macro representation.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex

index f66662a..122a7cb 100644 (file)
@@ -15,6 +15,7 @@ This change summary is included only in draft versions of this document.
 \begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \endhead
 \begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \endhead
+4/19/2014       & Complete revisions to Appendix B (especially for .debug\_macro) \\
 4/17/2014       & 110722.1 (.debug\_macro), Clean up missing target issues \\
 4/15/2014       & 140129.1 (Rust), 140203.1 (hashing of \DWFORMexprlocNAME) \\
 4/14/2014       & 130526.1 (Type unit merge), Fix miscellaneous typos  \\
 4/17/2014       & 110722.1 (.debug\_macro), Clean up missing target issues \\
 4/15/2014       & 140129.1 (Rust), 140203.1 (hashing of \DWFORMexprlocNAME) \\
 4/14/2014       & 130526.1 (Type unit merge), Fix miscellaneous typos  \\
index 8cf3bae..2774cfa 100644 (file)
@@ -10,20 +10,25 @@ the diagram and associated notes on the following pages.
 and split object section pairs (for example, \dotdebuginfo{} 
 versus \dotdebuginfodwo).}
 
 and split object section pairs (for example, \dotdebuginfo{} 
 versus \dotdebuginfodwo).}
 
+\clearpage
+\begin{landscape}
 \begin{figure}[H]
 \begin{figure}[H]
+\scriptsize
 \begin{tikzpicture}
 \begin{tikzpicture}
-    [sect/.style={rectangle, rounded corners=10pt, draw, fill=blue!10, inner sep=.2cm, minimum width=4.5cm},
-        link/.style={rectangle,                       draw,               inner sep=.2cm, minimum width=5.0cm}]
+    [sect/.style={rectangle, rounded corners=10pt, draw, fill=blue!15, 
+        inner sep=.2cm, minimum width=4.0cm},
+        link/.style={rectangle,                       draw,
+        inner sep=.2cm, minimum width=4.5cm}]
 
 % The left column, first sections, then links, from top to bottom
 %
 
 % The left column, first sections, then links, from top to bottom
 %
-\node(zsectara) at ( 0, 16.) [sect] {\dotdebugaranges};
-\node(zlinka)   at ( 0, 14.) [link] {To compilation unit (a)};
-\node(zsectinf) at ( 0, 8.0) [sect] {\begin{tabular}{c} 
+\node(zsectara) at ( 0, 15.0) [sect] {\dotdebugaranges};
+\node(zlinka)   at ( 0, 13.5) [link] {To compilation unit~~(a)};
+\node(zsectinf) at ( 0,  7.5) [sect] {\begin{tabular}{c} 
                                                                         \dotdebuginfo 
                                                                         \end{tabular}};
                                                                         \dotdebuginfo 
                                                                         \end{tabular}};
-\node(zlinkb)   at ( 0, 2.0) [link] {To compilation unit (b)};
-\node(zsectpub) at ( 0, 0.0) [sect] {\begin{tabular}{c} 
+\node(zlinkb)   at ( 0,  1.5) [link] {To compilation unit~~(b)};
+\node(zsectpub) at ( 0,  0.0) [sect] {\begin{tabular}{c} 
                                                                         \dotdebugpubnames \\ 
                                                                         \dotdebugpubtypes 
                                                                         \end{tabular}};
                                                                         \dotdebugpubnames \\ 
                                                                         \dotdebugpubtypes 
                                                                         \end{tabular}};
@@ -35,27 +40,27 @@ versus \dotdebuginfodwo).}
 
 % The middle column, similarly
 %
 
 % The middle column, similarly
 %
-\node(zsectfra) at (6, 16.)   [sect] {\dotdebugframe};
-\node(zlinkc)   at (6, 14.5)  [link] {To abbreviations (c)};
-\node(zlinkd)   at (6, 13.25) [link] {\DWFORMstrp{} (d)};
-\node(zlinke)  at (6, 11.5)  [link] {\begin{tabular}{c}
-                                                                         \DWATstroffsetsbase, \\
-                                                                         \DWFORMstrx{} (e)
+\node(zsectfra) at (5, 15.0)  [sect] {\dotdebugframe};
+\node(zlinkc)   at (5, 13.5)  [link] {To abbreviations~~(c)};
+\node(zlinkd)   at (5, 12.1)  [link] {\DWFORMstrp{}~~(d)};
+\node(zlinke)  at (5, 10.4)  [link] {\begin{tabular}{c}
+                                                                         \DWATstroffsetsbase \\
+                                                                         \DWFORMstrx{}~~~~~~~~~(e) \\
                                                                          \end{tabular}};
                                                                          \end{tabular}};
-\node(zlinkf)   at (6, 9.5)   [link] {\begin{tabular}{c}
-                                                                         \DWOPcallref{} (f) \\
+\node(zlinkf)   at (5,  8.4)  [link] {\begin{tabular}{c}
+                                                                         \DWOPcallref{}~~~~~(f) \\
                                                                          \DWFORMrefaddr
                                                                          \end{tabular}};
                                                                          \DWFORMrefaddr
                                                                          \end{tabular}};
-\node(zlinkg)   at (6,  8.)   [link] {\DWATlocation{}, etc. (g)};
-\node(zlinkh)   at (6,  6.5) [link] {\DWATranges{} (h)};
-\node(zlinki)   at (6,  5.0)  [link] {\DWATmacroinfo{} (i)};
-\node(zlinkj)   at (6,  3.5)  [link] {\DWATstmtlist{} (j)};
-\node(zlinkk)  at (6,  1.)   [link] {\begin{tabular}(c)
-                                                                         \DWATaddrbase,    \\
-                                                                         \DWFORMaddrx, (k) \\
-                                                                         \DWOPaddrx, \\
+\node(zlinki)   at (5,  6.7)  [link] {\DWATmacros{}~~(g)};
+\node(zlinkj)   at (5,  5.4)  [link] {\DWATstmtlist{}~~(h)};
+\node(zlinkh)   at (5,  4.1)  [link] {\DWATranges{}~~(i)};
+\node(zlinkg)   at (5,  2.8)  [link] {\DWATlocation{}, etc.~~(j)};
+\node(zlinkk)  at (5,  0.5)  [link] {\begin{tabular}(c)
+                                                                         \DWATaddrbase    \\
+                                                                         \DWFORMaddrx \\
+                                                                         \DWOPaddrx \\
                                                                          \DWOPconstx
                                                                          \DWOPconstx
-                                                                         \end{tabular}};
+                                                                         \end{tabular} (k)};
 
 % Links between left and center
 %
 
 % Links between left and center
 %
@@ -71,18 +76,37 @@ versus \dotdebuginfodwo).}
 
 % The right column
 %
 
 % The right column
 %
-\node(zsectabb)        at (12, 16) [sect] {\dotdebugabbrev};
-\node(zsectstr)        at (12, 14) [sect] {\dotdebugstr};
-\node(zlinkl)   at (12, 12) [link] {To strings (l)};
-\node(zsectstx) at (12, 10) [sect] {\dotdebugstroffsets};
-\node(zsectloc)        at (12,  8) [sect] {\dotdebugloc{} (m)};
-\node(zsectran)        at (12,  6) [sect] {\dotdebugranges};
-\node(zsectmac)        at (12,  4) [sect] {\dotdebugmacro};
-\node(zsectlin)        at (12,  2) [sect] {\dotdebugline};
-\node(zsectadx) at (12,  0) [sect] {\dotdebugaddr{} (m)};
+\node(zsectabb)        at (10, 15.00) [sect] {\dotdebugabbrev};
+\node(zsectstr)        at (10, 13.75) [sect] {\dotdebugstr};
+\node(zlinkl)   at (10, 12.50) [link] {To strings~~(l)};
+\node(zsectstx) at (10, 11.25) [sect] {\dotdebugstroffsets};
+\node(zlinkm)   at (10,  9.50) [link] {\begin{tabular}{c}
+                                      \DWMACROdefineindirectx \\
+                                      \DWMACROundefindirectx \\
+                                      (m)
+                                      \end{tabular}};
+\node(zsectmac)        at (10,  7.80) [sect] {\dotdebugmacro};
+\node(zlinkn)   at (10,  6.40) [link] {\begin{tabular}{c}
+                                      macroinfo header~~~~~~(n)\\
+                                      \DWMACROstartfile
+                                      \end{tabular}};
+\node(zsectlin)        at (10,  5.00) [sect] {\dotdebugline};
+\node(zsectran)        at (10,  3.85) [sect] {\dotdebugranges};
+\node(zsectloc)        at (10,  2.70) [sect] {\dotdebugloc{}};
+\node(zlinko)   at (10,  1.20) [link] {\begin{tabular}{c}
+                                       \DWOPaddrx \\
+                                       \DWOPconstx
+                                       \end{tabular} (o)};
+\node(zsectadx) at (10,  -0.25) [sect] {\dotdebugaddr{}};
 
 \draw[thick,to reversed-]              (zsectstx) -- (zlinkl);
 \draw[thick,-angle 90]                 (zlinkl) -- (zsectstr);
 
 \draw[thick,to reversed-]              (zsectstx) -- (zlinkl);
 \draw[thick,-angle 90]                 (zlinkl) -- (zsectstr);
+\draw[thick,to reversed-]       (zsectmac) -- (zlinkm);
+\draw[thick,-angle 90]          (zlinkm) -- (zsectstx);
+\draw[thick,to reversed-]       (zsectmac) -- (zlinkn);
+\draw[thick,-angle 90]          (zlinkn) -- (zsectlin);
+\draw[thick,to reversed-]       (zsectloc) -- (zlinko);
+\draw[thick,-angle 90]          (zlinko) -- (zsectadx);
 
 % Links between center and right
 %
 
 % Links between center and right
 %
@@ -95,11 +119,26 @@ versus \dotdebuginfodwo).}
 \draw[thick,-angle 90]         (zlinkj.east) -- (zsectlin.west);
 \draw[thick,-angle 90]         (zlinkk.east) -- (zsectadx.west);
 
 \draw[thick,-angle 90]         (zlinkj.east) -- (zsectlin.west);
 \draw[thick,-angle 90]         (zlinkk.east) -- (zsectadx.west);
 
+\node(zlinky)   at (15.5, 10.5) [link] {\begin{tabular}{c}
+                                        \DWMACROdefineindirect \\
+                                        \DWMACROundefindirect \\
+                                        (p)
+                                        \end{tabular}};
+\node(zlinkz)   at (15.5,  6.0) [link] {\begin{tabular}{c}
+                                        \DWMACROtransparentinclude \\
+                                        (q)
+                                        \end{tabular}};
+
+\draw[thick,to reversed-]       (zsectmac.east) -- (zlinky);
+\draw[thick,-angle 90]          (zlinky) -- (zsectstr.east);
+\draw[<->,thick]                               (zsectmac.east) -- (zlinkz);
+
 \end{tikzpicture}
 \vspace{5mm}
 \caption{Debug section relationships}
 \label{fig:debugsectionrelationships}
 \end{figure}
 \end{tikzpicture}
 \vspace{5mm}
 \caption{Debug section relationships}
 \label{fig:debugsectionrelationships}
 \end{figure}
+\end{landscape}
 
 \clearpage
 \begin{center}
 
 \clearpage
 \begin{center}
@@ -156,24 +195,6 @@ Similarly for attribute operands that have use
 \DWFORMrefaddr.
 
 %g
 \DWFORMrefaddr.
 
 %g
-\item \dotdebuginfo{} to \dotdebugloc \\
-An attribute value of class \livelink{chap:classloclistptr}{loclistptr} 
-(specifically form
-\DWFORMsecoffset) 
-is an offset within the \dotdebugloc{} 
-section of a
-\addtoindex{location list}.
-
-%h
-\item \dotdebuginfo{} to \dotdebugranges \\
-An attribute value of class \livelink{chap:classrangelistptr}{rangelistptr} 
-(specifically form
-\DWFORMsecoffset) 
-is an offset within the \dotdebugranges{} section of
-a range list.
-
-%i
-\needlines{5}
 \item \dotdebuginfo{} to \dotdebugmacro \\
 An attribute value of class 
 \livelink{chap:classmacptr}{macptr} (specifically form
 \item \dotdebuginfo{} to \dotdebugmacro \\
 An attribute value of class 
 \livelink{chap:classmacptr}{macptr} (specifically form
@@ -182,7 +203,7 @@ offset within the
 \dotdebugmacro{} section
 of the beginning of the macro information for the referencing unit.
 
 \dotdebugmacro{} section
 of the beginning of the macro information for the referencing unit.
 
-%j
+%h
 \item \dotdebuginfo{} to \dotdebugline \\
 An attribute value of class 
 \livelink{chap:classlineptr}{lineptr} (specifically form
 \item \dotdebuginfo{} to \dotdebugline \\
 An attribute value of class 
 \livelink{chap:classlineptr}{lineptr} (specifically form
@@ -191,6 +212,24 @@ is an offset in the
 \dotdebugline{} section of the
 beginning of the line number information for the referencing unit.
 
 \dotdebugline{} section of the
 beginning of the line number information for the referencing unit.
 
+%i
+\needlines{5}
+\item \dotdebuginfo{} to \dotdebugranges \\
+An attribute value of class \livelink{chap:classrangelistptr}{rangelistptr} 
+(specifically form
+\DWFORMsecoffset) 
+is an offset within the \dotdebugranges{} section of
+a range list.
+
+%j
+\item \dotdebuginfo{} to \dotdebugloc \\
+An attribute value of class \livelink{chap:classloclistptr}{loclistptr} 
+(specifically form
+\DWFORMsecoffset) 
+is an offset within the \dotdebugloc{} 
+section of a
+\addtoindex{location list}.
+
 %k
 \item \dotdebuginfo{} to \dotdebugaddr \\
 The value of the \DWATaddrbase{} attribute in the
 %k
 \item \dotdebuginfo{} to \dotdebugaddr \\
 The value of the \DWATaddrbase{} attribute in the
@@ -207,10 +246,42 @@ are offsets to the corresponding string text in the
 \dotdebugstr{} section.
 
 %m
 \dotdebugstr{} section.
 
 %m
+\item \dotdebugmacro{} to \dotdebugstroffsets \\
+The second operand of a 
+\DWMACROdefineindirect macroinfo
+entry is an index into the string table in the 
+\dotdebugstr{} section.
+
+
+%n
+\item \dotdebugmacro to \dotdebugline \\
+The second operand of 
+\DWMACROstartfile{} refers to a file entry in the 
+\dotdebugline{} section relative to the start 
+of that section given in the macroinfo header.
+
+%o
 \item \dotdebugloc{} to \dotdebugaddr \\
 \DWOPaddrx{} and \DWOPconstx{} operators that occur in the 
 \dotdebugloc{} section refer indirectly to the 
 \dotdebugaddr{} section by way of the 
 \DWATaddrbase{} attribute in the associated \dotdebuginfo{} 
 section. 
 \item \dotdebugloc{} to \dotdebugaddr \\
 \DWOPaddrx{} and \DWOPconstx{} operators that occur in the 
 \dotdebugloc{} section refer indirectly to the 
 \dotdebugaddr{} section by way of the 
 \DWATaddrbase{} attribute in the associated \dotdebuginfo{} 
 section. 
+
+%p
+\item \dotdebugmacro{} to \dotdebugstroffsets \\
+The second operand of a 
+\DWMACROdefineindirectx macroinfo entry is an index
+into the string offset table in the 
+\dotdebugstroffsets{} section.
+
+%q
+\item \dotdebugmacro{} to \dotdebugmacro \\
+The second operand of a 
+\DWMACROtransparentinclude{} macroinfo
+entry is an offset into another part of the 
+\dotdebugmacro{} section to the header for the 
+sequence to be transparently included.
+
+
 \end{enumerate}
 \end{enumerate}
index 63196e2..8ac192a 100644 (file)
@@ -3,7 +3,7 @@
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
 % 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}{April 17, 2014}
+\newcommand{\docdate}{April 19, 2014}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
@@ -59,6 +59,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \usepackage{needspace}     % For assuring space remaining on a page
 \usepackage{ifthen}        % For conditional processing
 \usepackage{changepage}    % For odd/even page checks
 \usepackage{needspace}     % For assuring space remaining on a page
 \usepackage{ifthen}        % For conditional processing
 \usepackage{changepage}    % For odd/even page checks
+\usepackage{lscape}
 \usepackage{tikz}                 % graphics (Appendix B)
 \usetikzlibrary{shapes.geometric}
 \usetikzlibrary{arrows}
 \usepackage{tikz}                 % graphics (Appendix B)
 \usetikzlibrary{shapes.geometric}
 \usetikzlibrary{arrows}