refclassfixup.py fixes up some class references.
authorDavid Anderson <davea42@earthlink.net>
Tue, 29 May 2012 20:36:03 +0000 (13:36 -0700)
committerDavid Anderson <davea42@earthlink.net>
Tue, 29 May 2012 20:36:03 +0000 (13:36 -0700)
The places changed to add the live links are in
dataobject.tex datarepresentation.tex debugsectionrelationships.tex
generaldescription.tex  using refclassfixup.py to effect the
source changes.  Note that using label and hyperref
in the live* commands defined in dwarf5.tex result in
incorrect links in the pdf (not clear why) so we use
hyperlink and hypertarget instead for now.

dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/tools/refclassfixup.py

index 7d5bd2d..6abb803 100644 (file)
@@ -132,7 +132,7 @@ for the object from the beginning of the first range list entry
 that is not a base selection entry or an end of list entry.
 
 \item Otherwise, the scope of the object is specified using
-a value of class rangelistptr. This value indicates the
+a value of class \livelink{chap:rangelistptr}{rangelistptr}. This value indicates the
 beginning of a range list (see Section 2.17.3).
 \end{enumerate}
 
index 9a2aa99..c458c5b 100644 (file)
@@ -467,14 +467,14 @@ and which are given a common interpretation according to the
 attribute in which the form is used.
 
 Form DW\_FORM\_sec\_offset is a member of more than one class,
-namely lineptr, loclistptr, macptr or rangelistptr; the list
+namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
 of classes allowed by the applicable attribute in 
 Table \refersec{tab:attributeencodings}
 determines the class of the form.
 
 \textit{In DWARF V3 the forms DW\_FORM\_data4 and DW\_FORM\_data8 were
-members of either class constant or one of the classes lineptr,
-loclistptr, macptr or rangelistptr, depending on context. In
+members of either class constant or one of the classes \livelink{chap:lineptr}{lineptr},
+\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
 DWARF V4 DW\_FORM\_data4 and DW\_FORM\_data8 are members of class
 constant in all cases. The new DW\_FORM\_sec\_offset replaces
 their usage for the other classes.}
@@ -546,7 +546,7 @@ unsigned integers respectively, rather than
 DW\_FORM\_data\textless n \textgreater.}
 
 
-\item exprloc \\
+\item \livelink{chap:exprloc}{exprloc} \\
 This is an unsigned LEB128 length followed by the
 number of information bytes specified by the length
 (DW\_FORM\_exprloc). The information bytes contain a DWARF
@@ -564,7 +564,7 @@ it indicates the presence of the attribute. In the second
 case, the attribute is implicitly indicated as present, and
 no value is encoded in the debugging information entry itself.
 
-\item lineptr \\
+\item \livelink{chap:lineptr}{lineptr} \\
 This is an offset into the .debug\_line section
 (DW\_FORM\_sec\_offset). It consists of an offset from the
 beginning of the .debug\_line section to the first byte of
@@ -577,7 +577,7 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item loclistptr \\
+\item \livelink{chap:loclistptr}{loclistptr} \\
 This is an offset into the .debug\_loc section
 (DW\_FORM\_sec\_offset). It consists of an offset from the
 beginning of the .debug\_loc section to the first byte of
@@ -590,7 +590,7 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 
-\item macptr \\
+\item \livelink{chap:macptr}{macptr} \\
 This is an offset into the .debug\_macinfo section
 (DW\_FORM\_sec\_offset). It consists of an offset from the
 beginning of the .debug\_macinfo section to the first byte of
@@ -602,7 +602,7 @@ DWARF format, this offset is a 4\dash byte unsigned value;
 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item rangelistptr \\
+\item \livelink{chap:rangelistptr}{rangelistptr} \\
 This is an offset into the .debug\_ranges section
 (DW\_FORM\_sec\_offset). 
 It consists of an
@@ -617,7 +617,7 @@ format, it is an 8\dash byte unsigned value (see Section
 \refersec{datarep:32bitand64bitdwarfformats}).
 \end{itemize}
 
-\textit{Because classes lineptr, loclistptr, macptr and rangelistptr
+\textit{Because classes \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} and \livelink{chap:rangelistptr}{rangelistptr}
 share a common representation, it is not possible for an
 attribute to allow more than one of these classes}
 
@@ -713,8 +713,8 @@ not. However, the UTF\dash 8 representation is strongly recommended.
 
 \end{itemize}
 
-In no case does an attribute use one of the classes lineptr,
-loclistptr, macptr or rangelistptr to point into either the
+In no case does an attribute use one of the classes \livelink{chap:lineptr}{lineptr},
+\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
 .debug\_info or .debug\_str section.
 
 The form encodings are listed in 
@@ -825,13 +825,13 @@ DW\_CHILDREN\_yes&0x01 \\ \hline
   \hline
 \endlastfoot
 DW\_AT\_sibling&0x01&reference \\
-DW\_AT\_location&0x02&exprloc, loclistptr   \\
+DW\_AT\_location&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
 DW\_AT\_name&0x03&string   \\
 DW\_AT\_ordering&0x09&constant   \\
-DW\_AT\_byte\_size&0x0b&constant, exprloc, reference   \\
-DW\_AT\_bit\_offset&0x0c&constant, exprloc, reference   \\
-DW\_AT\_bit\_size&0x0d&constant, exprloc, reference   \\
-DW\_AT\_stmt\_list&0x10&lineptr   \\
+DW\_AT\_byte\_size&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
+DW\_AT\_bit\_offset&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
+DW\_AT\_bit\_size&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
+DW\_AT\_stmt\_list&0x10&\livelink{chap:lineptr}{lineptr}   \\
 DW\_AT\_low\_pc&0x11&address   \\
 DW\_AT\_high\_pc&0x12&address, constant   \\
 DW\_AT\_language&0x13&constant   \\
@@ -839,7 +839,7 @@ DW\_AT\_discr&0x15&reference   \\
 DW\_AT\_discr\_value&0x16&constant   \\
 DW\_AT\_visibility&0x17&constant   \\
 DW\_AT\_import&0x18&reference   \\
-DW\_AT\_string\_length&0x19&exprloc, loclistptr   \\
+DW\_AT\_string\_length&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
 DW\_AT\_common\_reference&0x1a&reference   \\
 DW\_AT\_comp\_dir&0x1b&string   \\
 DW\_AT\_const\_value&0x1c&block, constant, string   \\
@@ -847,22 +847,22 @@ DW\_AT\_containing\_type&0x1d&reference     \\
 DW\_AT\_default\_value&0x1e&reference     \\
 DW\_AT\_inline&0x20&constant     \\
 DW\_AT\_is\_optional&0x21&flag     \\
-DW\_AT\_lower\_bound&0x22&constant, exprloc, reference     \\
+DW\_AT\_lower\_bound&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
 DW\_AT\_producer&0x25&string     \\
 DW\_AT\_prototyped&0x27&flag     \\
-DW\_AT\_return\_addr&0x2a&exprloc, loclistptr     \\
+DW\_AT\_return\_addr&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
 % FIXME: lower case , not Constant
-DW\_AT\_start\_scope&0x2c&Constant, rangelistptr     \\
-DW\_AT\_bit\_stride&0x2e&constant, exprloc, reference     \\
-DW\_AT\_upper\_bound&0x2f&constant, exprloc, reference     \\
+DW\_AT\_start\_scope&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr}     \\
+DW\_AT\_bit\_stride&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
+DW\_AT\_upper\_bound&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
 DW\_AT\_abstract\_origin&0x31&reference     \\
 DW\_AT\_accessibility&0x32&constant     \\
 DW\_AT\_address\_class&0x33&constant     \\
 DW\_AT\_artificial&0x34&flag     \\
 DW\_AT\_base\_types&0x35&reference     \\
 DW\_AT\_calling\_convention&0x36&constant     \\
-DW\_AT\_count&0x37&constant, exprloc, reference     \\
-DW\_AT\_data\_member\_location&0x38&constant, exprloc, loclistptr     \\
+DW\_AT\_count&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
+DW\_AT\_data\_member\_location&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
 DW\_AT\_decl\_column&0x39&constant     \\
 DW\_AT\_decl\_file&0x3a&constant     \\
 DW\_AT\_decl\_line&0x3b&constant     \\
@@ -870,30 +870,30 @@ DW\_AT\_declaration&0x3c&flag     \\
 DW\_AT\_discr\_list&0x3d&block     \\
 DW\_AT\_encoding&0x3e&constant     \\
 DW\_AT\_external&0x3f&flag     \\
-DW\_AT\_frame\_base&0x40&exprloc, loclistptr     \\
+DW\_AT\_frame\_base&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
 DW\_AT\_friend&0x41&reference     \\
 DW\_AT\_identifier\_case&0x42&constant    \\
-DW\_AT\_macro\_info&0x43&macptr    \\
+DW\_AT\_macro\_info&0x43&\livelink{chap:macptr}{macptr}    \\
 DW\_AT\_namelist\_item&0x44&reference    \\
 DW\_AT\_priority&0x45&reference    \\
-DW\_AT\_segment&0x46&exprloc, loclistptr    \\
+DW\_AT\_segment&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
 DW\_AT\_specification&0x47&reference    \\
-DW\_AT\_static\_link&0x48&exprloc, loclistptr    \\
+DW\_AT\_static\_link&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
 DW\_AT\_type&0x49&reference    \\
-DW\_AT\_use\_location&0x4a&exprloc, loclistptr    \\
+DW\_AT\_use\_location&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
 DW\_AT\_variable\_parameter&0x4b&flag    \\
 DW\_AT\_virtuality&0x4c&constant    \\
-DW\_AT\_vtable\_elem\_location&0x4d&exprloc, loclistptr    \\
+DW\_AT\_vtable\_elem\_location&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
 
 
-DW\_AT\_allocated&0x4e&constant, exprloc, reference     \\
-DW\_AT\_associated&0x4f&constant, exprloc, reference     \\
-DW\_AT\_data\_location&0x50&exprloc     \\
-DW\_AT\_byte\_stride&0x51&constant, exprloc, reference     \\
+DW\_AT\_allocated&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
+DW\_AT\_associated&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
+DW\_AT\_data\_location&0x50&\livelink{chap:exprloc}{exprloc}     \\
+DW\_AT\_byte\_stride&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
 DW\_AT\_entry\_pc&0x52&address     \\
 DW\_AT\_use\_UTF8&0x53&flag     \\
 DW\_AT\_extension&0x54&reference     \\
-DW\_AT\_ranges&0x55&rangelistptr     \\
+DW\_AT\_ranges&0x55&\livelink{chap:rangelistptr}{rangelistptr}     \\
 DW\_AT\_trampoline&0x56&address, flag, reference, string     \\
 DW\_AT\_call\_column&0x57&constant     \\
 DW\_AT\_call\_file&0x58&constant     \\
@@ -961,8 +961,8 @@ DW\_FORM\_ref4&0x13&reference         \\
 DW\_FORM\_ref8&0x14&reference \\
 DW\_FORM\_ref\_udata&0x15&reference  \\
 DW\_FORM\_indirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-DW\_FORM\_sec\_offset \ddag &0x17&lineptr, loclistptr, macptr, rangelistptr \\
-DW\_FORM\_exprloc \ddag &0x18&exprloc \\
+DW\_FORM\_sec\_offset \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
+DW\_FORM\_exprloc \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
 DW\_FORM\_flag\_present \ddag &0x19&flag \\
 DW\_FORM\_ref\_sig8 \ddag &0x20&reference \\
  
index 3f5bb41..d69951c 100644 (file)
@@ -102,24 +102,24 @@ The operand of the DW\_OP\_call\_ref DWARF expression operator is the
 offset of a debugging information entry in the .debug\_info section.
 
 \item .debug\_info \\
-An attribute value of class loclistptr (specifically form
+An attribute value of class \livelink{chap:loclistptr}{loclistptr} (specifically form
 DW\_FORM\_sec\_offset) is an offset within the .debug\_loc section of a
 location list.
 
 \item .debug\_info \\
-An attribute value of class rangelistptr (specifically form
+An attribute value of class \livelink{chap:rangelistptr}{rangelistptr} (specifically form
 DW\_FORM\_sec\_offset) is an offset within the .debug\_ranges section of
 a range list.
 
 
 \item .debug\_info \\
-An attribute value of class macptr (specifically form
+An attribute value of class \livelink{chap:macptr}{macptr} (specifically form
 DW\_FORM\_sec\_offset) is an offset within the .debug\_macinfo section
 of the beginning of the macro information for the referencing unit.
 
 
 \item .debug\_info \\
-An attribute value of class lineptr (specifically form
+An attribute value of class \livelink{chap:lineptr}{lineptr} (specifically form
 DW\_FORM\_sec\_offset) is an offset in the .debug\_line section of the
 beginning of the line number information for the referencing unit.
 \end{enumerate}
index 765332d..bc3f70b 100644 (file)
@@ -43,7 +43,7 @@ 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}{13 May 2012}
+\newcommand{\docdate}{29 May 2012}
 
 \newcommand{\dwf}{DWARF Debugging Information Format}
 \newenvironment{myindentpara}[1]%
@@ -68,11 +68,11 @@ escapeinside={\%*}{*)}  % if you want to add a comment within your code
 
 % Generate a live link in the document
 % use like \livelink{chap:DWOPdup}{DW\_OP\_dup}
-\newcommand{\livelink}[2]{ \hyperref[#1]{#2}\index{#2} }
+\newcommand{\livelink}[2]{\hyperlink{#1}{#2}\index{#2} }
 % livetarg is the declaration this is the target of livelinks.
-\newcommand{\livetarg}[2]{\label{#1}#2\index{#2}}
+\newcommand{\livetarg}[2]{\hypertarget{#1}{#2}\index{#2}}
 % When we want the index entry to look different from the name.
-\newcommand{\livetargi}[3]{\label{#1}#2\index{#3}}
+\newcommand{\livetargi}[3]{\hypertarget{#1}{#2}\index{#3}}
 
 \newcommand{\dash}{\nobreakdash-\hspace{0pt}}  % So we handle dashes ok.
 
index e07b8c7..5eced84 100644 (file)
@@ -1007,9 +1007,8 @@ described below.
 The two forms are distinguished in a context sensitive
 manner. As the value of an attribute, a location description
 is encoded using class \livelink{chap:exprloc}{exprloc}  
-FIXME HYPERREF WRONG
 and a location list is encoded
-using class loclistptr (which serves as an offset into a
+using class \livelink{chap:loclistptr}{loclistptr} (which serves as an offset into a
 separate location list table).
 
 
@@ -1668,10 +1667,10 @@ attributes should be produced.
 \label{chap:noncontiguousaddressranges}
 When the set of addresses of a debugging information entry
 cannot be described as a single contiguous range, the entry has
-a DW\_AT\_ranges attribute whose value is of class rangelistptr
+a DW\_AT\_ranges attribute whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
 and indicates the beginning of a range list. Similarly,
 a DW\_AT\_start\_scope attribute may have a value of class
-rangelistptr for the same reason.  
+\livelink{chap:rangelistptr}{rangelistptr} for the same reason.  
 
 Range lists are contained
 in a separate object file section called .debug\_ranges. A
@@ -1768,14 +1767,15 @@ computed dynamically during execution.  The value of these
 attributes is determined based on the class as follows:
 
 \begin{itemize}
-\item For a constant FIXME HYPERRREF, the value of the constant is the value of
+\item For a \livelink{chap:constant}{constant}, the value of the constant is the value of
 the attribute.
 
-\item For a reference FIXME HYPERRREF, the value is a reference to another
+\item For a \livelink{chap:reference}{reference}, the
+value is a reference to another
 entity which specifies the value of the attribute.
 
-\item For an exprloc, the value is interpreted as a 
-DWARF expression FIXME HYPERREF
+\item For an \livelink{chap:exprloc}{exprloc}, the value is interpreted as a 
+DWARF expression; 
 evaluation of the expression yields the value of
 the attribute.
 \end{itemize}
index d8bccee..e8913b4 100644 (file)
@@ -7,17 +7,17 @@ import sys
 import fileio
 
 refclass = { 
-"address":"chap:address", 
-"block":"chap:block", 
-"constant":"chap:constant", 
+#"address":"chap:address", 
+#"block":"chap:block", 
+#"constant":"chap:constant", 
 "exprloc":"chap:exprloc", 
-"flag":"chap:flag",
+#"flag":"chap:flag",
 "lineptr":"chap:lineptr",
 "loclistptr":"chap:loclistptr",
 "macptr":"chap:macptr",
-"rangelistptr":"chap:rangelistptr",
-"reference":"chap:reference",
-"string":"chap:string" }
+"rangelistptr":"chap:rangelistptr" }
+#"reference":"chap:reference",
+#"string":"chap:string" }
 
 def ischar(tok,c):
    if tok._class != "ind":
@@ -64,7 +64,7 @@ def transfunc(linetoks):
          changes = changes +  1
          append_to_out(outtoks,tmp)
       else:
-        if  ischar(linetoks[tnumin - 1],"{") != "y" or ischar(linetoks[tnumin+1],"}") != "y":
+        if  ischar(linetoks[tnumin - 1],"{") == "n" and ischar(linetoks[tnumin+1],"}") == "n":
           tmp = transformone(t, rawtok);
           append_to_out(outtoks,tmp)
           changes = changes +  1