A few miscelleaneous corrections including especially fixing the spacing
[dwarf-doc.git] / dwarf5 / latexdoc / compression.tex
index f77d5fd..dd81740 100644 (file)
@@ -55,24 +55,24 @@ A traditional relocatable object output
 from a single compilation might contain sections 
 named:
 \begin{alltt}
-    \addtoindex{.data}
-    \addtoindex{.text}
-    \addtoindex{.debug\_info}
-    \addtoindex{.debug\_abbrev}
-    \addtoindex{.debug\_line}
-    \addtoindex{.debug\_aranges}
+    \dotdata{}
+    \dottext{}
+    \dotdebuginfo{}
+    \dotdebugabbrev{}
+    \dotdebugline{}
+    \dotdebugaranges{}
 \end{alltt}
 A relocatable object from a compilation system 
 attempting duplicate DWARF elimination might
 contain sections as in:
 
 \begin{alltt}
-    \addtoindex{.data}
-    \addtoindex{.text}
-    \addtoindex{.debug\_info}
-    \addtoindex{.debug\_abbrev}
-    \addtoindex{.debug\_line}
-    \addtoindex{.debug\_aranges}
+    \dotdata{}
+    \dottext{}
+    \dotdebuginfo{}
+    \dotdebugabbrev{}
+    \dotdebugline{}
+    \dotdebugaranges{}
 \end{alltt}
 
 followed (or preceded, the order is not significant) 
@@ -81,27 +81,28 @@ by a series of
 section groups:
 \begin{alltt}
 ==== Section group 1
-    \addtoindex{.debug\_info}
-    \addtoindex{.debug\_abbrev}
-    \addtoindex{.debug\_line}
+    \dotdebuginfo{}
+    \dotdebugabbrev{}
+    \dotdebugline{}
 ==== ...
 ==== Section group N
-    \addtoindex{.debug\_info}
-    \addtoindex{.debug\_abbrev}
-    \addtoindex{.debug\_line}
+    \dotdebuginfo{}
+    \dotdebugabbrev{}
+    \dotdebugline{}
 \end{alltt}
 
 where each \addtoindex{section group} might or might not contain executable
-code (\textit{.text} sections) or data (\textit{.data} sections).
+code (\dottext{} sections) or data (\dotdata{} sections).
 
+\needlines{6}
 A \textit{\addtoindex{section group}} is a named set 
 of section contributions
 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:
+\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
@@ -113,7 +114,6 @@ section outside of the \addtoindex{section group},
 the section group
 is discarded.
 
-
 \end{enumerate}
 
 
@@ -129,7 +129,7 @@ discard one group and arrange that all references in A.o and
 B.o apply to the remaining one of the two identical section
 groups. This saves space.
 
-An important part of making it possible to “redirect”
+An important part of making it possible to \doublequote{redirect}
 references to the surviving 
 \addtoindex{section group} is the use of
 consistently chosen linker global symbols for referring to
@@ -142,16 +142,15 @@ 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:
+\begin{enumerate}[1. ]
 
-\begin{enumerate}[1.]
-
-\item A means of referencing from inside one \addtoindex{.debug\_info}
+\item A means of referencing from inside one \dotdebuginfo{}
 compilation unit to another 
-\addtoindex{.debug\_info} compilation unit
-(\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} provides this).
+\dotdebuginfo{} compilation unit
+(\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} provides this).
 
 \item A means of having multiple contributions to specific sections
-(for example, \addtoindex{.debug\_info}, and so on) in a single object file.
+(for example, \dotdebuginfo{}, and so on) in a single object file.
 
 \item  A means of identifying a \addtoindex{section group} (giving it a name).
 
@@ -170,7 +169,7 @@ corresponds closely to the similarly named concepts in the
 ELF object file representation. 
 The notion of \addtoindex{section group} is
 an abstraction of common extensions of the ELF representation
-widely known as ``COMDATs'' or ``COMDAT sections''. (Other
+widely known as \doublequote{COMDATs} or \doublequote{COMDAT sections.} (Other
 object file representations provide COMDAT\dash style mechanisms as
 well.) There are several variations in the COMDAT schemes in
 common use, any of which should be sufficient for the purposes
@@ -191,9 +190,9 @@ Implementations should clearly document their naming conventions.
 
 In the following, it will be helpful to refer to the examples
 in 
-Figure \refersec{app:duplicateeliminationexample1csource}
+Figure \ref{fig:duplicateeliminationexample1csource}
 through 
-Figure \refersec{app:duplicateeliminationexample2companiondwarf}
+Figure \ref{fig:duplicateeliminationexample2companiondwarf}
 of 
 Section \refersec{app:examples}.
 
@@ -203,27 +202,27 @@ Section groups must have a \addtoindex{section group} name.
 \addtoindexx{section group!name}
 For the subsequent 
 \addtoindex{C++} example, a name like
-
-<producer-prefix>.<file-designator>.<gid-number>
-
+\begin{alltt}
+    <producer-prefix>.<file-designator>.<gid-number>
+\end{alltt}
 will suffice, where
 
-\begin{itemize}
+\begin{description}
 
-\item  \textless producer\dash prefix \textgreater 
+\item  [\textless producer\dash prefix\textgreater] 
 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
+\item  [\textless file\dash designator\textgreater]
 names the file, such as wa.h in
 the example.
 
 
-\item  \textless gid\dash number \textgreater
+\item  [\textless gid\dash number\textgreater]
 is a string generated to identify the
 specific wa.h header file in such a way that
 
@@ -231,27 +230,27 @@ specific wa.h header file in such a way that
 
 \item  a 'matching' output from another compile generates
 the same 
-\textless gid\dash number \textgreater,
+\textless gid\dash number\textgreater,
 and
 
-\item  a non\dash matching output (say because of \#defines)
+\item  a non\dash matching output (say because of \texttt{\#defines})
 generates a different 
-\textless gid\dash number \textgreater.
+\textless gid\dash number\textgreater.
 \end{itemize}
 
-\end{itemize}
+\end{description}
 
 \textit{It may be useful to think of a 
-\textless gid\dash number \textgreater
+\textless gid\dash number\textgreater
 as a kind
-of ``digital signature'' that allows a fast test for the
+of \doublequote{digital signature} that allows a fast test for the
 equality of two 
 \addtoindexx{section group}
 section groups.}
 
 So, for example, the \addtoindex{section group} 
 corresponding to file wa.h
-above is given the name \textit{my.compiler.company.cpp.wa.h.123456}.
+above is given the name \texttt{my.compiler.company.cpp.wa.h.123456}.
 
 
 
@@ -274,40 +273,39 @@ such as
 \end{alltt}
 
 where
-\begin{itemize}
-\item \textless prefix \textgreater\  
+\begin{description}
+\item [\textless prefix\textgreater]  
 distinguishes this as a DWARF debug info name, and should identify the producer
 and, when appropriate, the language.
-\item \textless file\dash designator\textgreater\  
+\item [\textless file\dash designator\textgreater]  
 and 
-\textless gid\dash number \textgreater
+\texttt{\textless gid\dash number\textgreater} 
 are as above.
 
-\item  \textless die\dash number \textgreater
+\item  [\textless die\dash number\textgreater]
 could be a number sequentially assigned 
 to entities (tokens, perhaps) found
 during compilation.
 
-\end{itemize}
+\end{description}
 
 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
+\dotdebuginfo{} that
+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 
-<die-numbers>
-\textless die\dash numbers \textgreater
+\textless die\dash numbers\textgreater\ 
 in separate compilations would not match properly then a
 distinct 
-\textless gid\dash number \textgreater
+\textless gid\dash number\textgreater\ 
 is generated.
 
 Note that only 
@@ -325,30 +323,31 @@ relocations).
 (This is a consequence of separate compilation, not a rule
 imposed by this document.)
 
-\textit{Local labels use references with form \livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}
+\textit{Local labels use references with form \livelink{chap:DWFORMref4}{DW\_FORM\_ref4}
 or 
-\livelink{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}. 
+\livelink{chap:DWFORMref8}{DW\_FORM\_ref8}. 
 (These are affected by relocations
 so 
-\livelink{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}, 
-\livelink{chap:DWFORMref1}{DW\-\_FORM\-\_ref1} and 
-\livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2} are
+\livelink{chap:DWFORMrefudata}{DW\_FORM\_ref\_udata}, 
+\livelink{chap:DWFORMref1}{DW\_FORM\_ref1} and 
+\livelink{chap:DWFORMref2}{DW\_FORM\_ref2} are
 normally not usable and 
-\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} is not necessary
+\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} is not necessary
 for a local label.)}
 
-\textbf{Use of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} versus 
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}}
+
+\subsubsection{Use of DW\_TAG\_compile\_unit versus 
+DW\_TAG\_partial\_unit}
 
 A \addtoindex{section group} compilation unit that uses 
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
 is like any other compilation unit, in that its contents
 are evaluated by consumers as though it were an ordinary
 compilation unit.
 
 An \#include directive appearing outside any other
 declarations is a good candidate to be represented using
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}. 
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}. 
 However, an \#include appearing inside
 a \addtoindex{C++} namespace declaration or a function, for example, is
 not a good candidate because the entities included are not
@@ -357,8 +356,8 @@ necessarily file level entities.
 This also applies to \addtoindex{Fortran} INCLUDE lines when declarations
 are included into a procedure or module context.
 
-Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} (instead
-of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}) 
+Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} (instead
+of \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}) 
 in a \addtoindex{section group} 
 whenever the section group 
 contents are not necessarily globally visible. 
@@ -366,58 +365,60 @@ This
 directs consumers to ignore that compilation unit when scanning
 top level declarations and definitions.
 
-The \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} compilation unit will be referenced
+The \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} compilation unit will be referenced
 from elsewhere and the referencing locations give the
 appropriate context for interpreting the partial compilation
 unit.
 
-A \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} entry may have, as appropriate, any of
-the attributes assigned to a \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}.
+A \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} entry may have, as appropriate, any of
+the attributes assigned to a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}.
 
 
-\textbf{Use of \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}}
+\subsubsection{Use of DW\_TAG\_imported\_unit}
 
-A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry has an
-\livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging information entry.
+A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry has an
+\livelink{chap:DWATimport}{DW\_AT\_import} attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging information entry.
 
-A \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} debugging information entry refers
+A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry refers
 to a 
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or 
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or 
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
 information entry to specify that the 
-\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} contents logically appear at the point
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} contents logically appear at the point
 of the 
-\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} entry.
+\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} entry.
 
 
-\textbf{Use of \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}}
+\subsubsection{Use of DW\_FORM\_ref\_addr}
 
 Use 
-\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} to reference from one compilation
+\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} to reference from one compilation
 unit's debugging information entries to those of another
 compilation unit.
 
+\needlines{4}
 When referencing into a removable \addtoindex{section group}
-\addtoindex{.debug\_info}
-from another \addtoindex{.debug\_info} (from anywhere), the
+\dotdebuginfo{}
+from another \dotdebuginfo{} (from anywhere), the
 \begin{alltt}
-<prefix>.<file-designator>.<gid-number>.<die-number>
+    <prefix>.<file-designator>.<gid-number>.<die-number>
 \end{alltt}
 name should be used for an external symbol and a relocation
 generated based on that name.
 
-When referencing into a 
+\needlines{4}
+\textit{When referencing into a 
 \addtoindexx{section group}
 non-section group 
-\addtoindex{.debug\_info},
-from another \addtoindex{.debug\_info} (from anywhere) 
-\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} is
+\dotdebuginfo{},
+from another \dotdebuginfo{} (from anywhere) 
+\livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} is
 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.
+\doublequote{internal name}) may be used for references within the
+same object file.}
 
 \subsection{Examples}
 \label{app:examples}
@@ -429,17 +430,17 @@ concrete basis for discussion.
 
 In these examples, the focus is on the arrangement of DWARF
 information into sections (specifically the 
-\addtoindex{.debug\_info}
+\dotdebuginfo{}
 section) and the naming conventions used to achieve references
 into 
 \addtoindexx{section group}
 section groups. 
 In practice, all of the examples that
 follow involve DWARF sections other than just 
-\addtoindex{.debug\_info}
-(for example, \addtoindex{.debug\_line}, 
-\addtoindex{.debug\_aranges}, or others);
-however, only the \addtoindex{.debug\_info}
+\dotdebuginfo{}
+(for example, \dotdebugline{}, 
+\dotdebugaranges{}, or others);
+however, only the \dotdebuginfo{}
 section is shown to keep the
 examples compact and easier to read.
 
@@ -448,27 +449,22 @@ the underlying object language is not (and varies from system to system).
 
 \subsubsection{C++ Example}
 
-The addtoindex{C++} source 
+The \addtoindex{C++} source 
 \addtoindexx{DWARF duplicate elimination!C++ example}
 in 
-Section \refersec{app:duplicateeliminationexample1csource}
+Figure \refersec{fig:duplicateeliminationexample1csource}
 is used to illustrate the DWARF
 representation intended to allow duplicate elimination.
 
-\paragraph{Duplicate elimination example 1: C++ Source} 
-\label{app:duplicateeliminationexample1csource}
-
-File wa.h
-
-\begin{lstlisting}
+\begin{figure}[ht]
+\textit{File wa.h}
+\begin{lstlisting}[numbers=none]
 struct A {
    int i;
 };
 \end{lstlisting}
-
-File wa.C
-
-\begin{lstlisting}
+\textit{File wa.c}
+\begin{lstlisting}[numbers=none]
 #include "wa.h";
 int
 f(A &a)
@@ -476,71 +472,82 @@ f(A &a)
     return a.i + 2;
 }
 \end{lstlisting}
+\caption{Duplicate elimination example \#1: C++ Source}
+\label{fig:duplicateeliminationexample1csource}
+\end{figure}
 
-
-section \refersec{app:duplicateeliminationexample1dwarfsectiongroup}
+Figure \refersec{fig:duplicateeliminationexample1dwarfsectiongroup}
 shows the \addtoindex{section group} corresponding to the included file 
 wa.h.
 
-
-\paragraph{Duplicate elimination example 1: DWARF section group} 
-
-\label{app:duplicateeliminationexample1dwarfsectiongroup}
+\begin{figure}
+\begin{dwflisting}
 % FIXME: the DWFORMrefn could use rethinking
 \begin{alltt}
 ==== Section group name:
     my.compiler.company.cpp.wa.h.123456
-== section \addtoindex{.debug\_info}
-DW.cpp.wa.h.123456.1: ! linker global symbol
-    \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
-        \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}(\livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus})
+== section \dotdebuginfo{}
+DW.cpp.wa.h.123456.1:     ! linker global symbol
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+        \livelink{chap:DWATlanguage}{DW\_AT\_language}(\livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus})
         ...  ! other unit attributes
-DW.cpp.wa.h.123456.2: ! linker global symbol
-    \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}("int")
-DW.cpp.wa.h.123456.3: ! linker global symbol
-    \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}("A")
-DW.cpp.wa.h.123456.4: ! linker global symbol
-        \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}("i")
-        \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(\livelink{chap:DWFORMrefn}{DW\-\_FORM\-\_refn} to DW.cpp.wa.h.123456.2)
+DW.cpp.wa.h.123456.2:     ! linker global symbol
+    \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+        \livelink{chap:DWATname}{DW\_AT\_name}("int")
+DW.cpp.wa.h.123456.3:     ! linker global symbol
+    \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+        \livelink{chap:DWATname}{DW\_AT\_name}("A")
+DW.cpp.wa.h.123456.4:     ! linker global symbol
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+        \livelink{chap:DWATname}{DW\_AT\_name}("i")
+        \livelink{chap:DWATtype}{DW\_AT\_type}(\livelink{chap:DWFORMrefn}{DW\_FORM\_refn} to DW.cpp.wa.h.123456.2)
             ! (This is a local reference, so the more
-            ! compact form \livetarg{chap:DWFORMrefn}{DW\-\_FORM\-\_refn} 
+            ! compact form \livetarg{chap:DWFORMrefn}{DW\_FORM\_refn} 
             ! for n 1,2,4, or 8 can be used)
 \end{alltt}
-
-
-Figure \refersec{app:duplicateeliminationexample1primarycompilationunit}
-shows the ``normal'' DWARF sections, which are not part of
+\end{dwflisting}
+\vspace{2mm}
+\caption{Duplicate elimination example \#1: DWARF section group} 
+\label{fig:duplicateeliminationexample1dwarfsectiongroup}
+\end{figure}
+
+Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit}
+shows the \doublequote{normal} DWARF sections, which are not part of
 any \addtoindex{section group}, 
 and how they make use of the information
 in the \addtoindex{section group} shown above.
 
-\paragraph{Duplicate elimination example 1: primary compilation unit} 
-\label{app:duplicateeliminationexample1primarycompilationunit}
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
-== section .text
+== section \dottext{}
     [generated code for function f]
-== section \addtoindex{.debug\_info}
-    \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
-.L1:                   ! local (non-linker) symbol
-        \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.cpp.wa.h.123456.3)
-        \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name}("f")
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.cpp.wa.h.123456.2)
-            \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
-                \livelink{chap:DWATname}{DW\-\_AT\-\_name}("a")
-                \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to .L1)
+== section \dotdebuginfo{}
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+.L1:                           ! local (non-linker) symbol
+        \livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
+            \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.cpp.wa.h.123456.3)
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+            \livelink{chap:DWATname}{DW\_AT\_name}("f")
+            \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.cpp.wa.h.123456.2)
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+                \livelink{chap:DWATname}{DW\_AT\_name}("a")
+                \livelink{chap:DWATtype}{DW\_AT\_type}(reference to .L1)
         ...
 \end{alltt}
-
-This example uses \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} for the \addtoindex{section group},
+\end{dwflisting}
+\caption{Duplicate elimination example \#1: primary compilation unit} 
+\label{fig:duplicateeliminationexample1primarycompilationunit}
+\end{figure}
+
+\needlines{4}
+This example uses \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} 
+for the \addtoindex{section group},
 implying that the contents of the compilation unit are
 globally visible (in accordance with 
 \addtoindex{C++} language rules).
-\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} is not needed for the same reason.
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} 
+is not needed for the same reason.
 
 \subsubsection{Fortran Example}
 
@@ -548,176 +555,183 @@ globally visible (in accordance with
 For a \addtoindex{Fortran}
 \addtoindexx{DWARF duplicate elimination!Fortran example}
 example, consider 
-Figure \refersec{app:duplicateeliminationexample2fortransource}.
+Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
-
-\paragraph{Duplicate elimination example 2: Fortran source} 
-\label{app:duplicateeliminationexample2fortransource}
-
-File CommonStuff.fh
+\begin{figure}
+\textit{File CommonStuff.f\hspace{1pt}h}
 \addtoindexx{Fortran}
-
-\begin{lstlisting}
+\begin{lstlisting}[numbers=none]
 IMPLICIT INTEGER(A-Z)
 COMMON /Common1/ C(100)
 PARAMETER(SEVEN = 7)
 \end{lstlisting}
 
-File Func.f
-\begin{lstlisting}
-
+\textit{File Func.f}
+\begin{lstlisting}[numbers=none]
 FUNCTION FOO (N)
 INCLUDE 'CommonStuff.fh'
 FOO = C(N + SEVEN)
 RETURN
 END
 \end{lstlisting}
+\caption{Duplicate elimination example \#2: Fortran source} 
+\label{fig:duplicateeliminationexample2fortransource}
+\end{figure}
 
 
-Section \refersec{app:duplicateeliminationexample2dwarfsectiongroup}
+Figure \refersec{fig:duplicateeliminationexample2dwarfsectiongroup}
 shows the \addtoindex{section group}
 corresponding to the included file 
 \addtoindexx{Fortran example}
 CommonStuff.fh.
 
-\paragraph{Duplicate elimination example 2: DWARF section group}
-\label{app:duplicateeliminationexample2dwarfsectiongroup}
-
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
 ==== Section group name:
 
     my.f90.company.f90.CommonStuff.fh.654321
 
-== section \addtoindex{.debug\_info}
+== section \dotdebuginfo{}
 
 DW.myf90.CommonStuff.fh.654321.1:    ! linker global symbol
-    \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}
+    \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
         ! ...compilation unit attributes, including...
-        \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}(\livelink{chap:DWLANGFortran90}{DW\-\_LANG\-\_Fortran90})
-        \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}(\livelink{chap:DWIDcaseinsensitive}{DW\-\_ID\-\_case\-\_insensitive})
+        \livelink{chap:DWATlanguage}{DW\_AT\_language}(\livelink{chap:DWLANGFortran90}{DW\_LANG\_Fortran90})
+        \livelink{chap:DWATidentifiercase}{DW\_AT\_identifier\_case}(\livelink{chap:DWIDcaseinsensitive}{DW\_ID\_case\_insensitive})
 
-DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol
-3\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
+DW.myf90.CommonStuff.fh.654321.2:    ! linker global symbol
+3\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         ! unnamed
-        \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
+        \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
             ! base type INTEGER
-        \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
+        \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+            \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
                 ! base type INTEGER)
-            \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}(constant 1)
-            \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}(constant 100)
-
-DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
-    \livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Common1")
-        \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(Address of common \nolink{block} Common1)
-        \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name}("C")
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
-            \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(address of C)
-
-DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol
-    \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}("SEVEN")
-        \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
+            \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}(constant 1)
+            \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(constant 100)
+
+DW.myf90.CommonStuff.fh.654321.3:    ! linker global symbol
+    \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
+        \livelink{chap:DWATname}{DW\_AT\_name}("Common1")
+        \livelink{chap:DWATlocation}{DW\_AT\_location}(Address of common \nolink{block} Common1)
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+            \livelink{chap:DWATname}{DW\_AT\_name}("C")
+            \livelink{chap:DWATtype}{DW\_AT\_type}(reference to 3\$)
+            \livelink{chap:DWATlocation}{DW\_AT\_location}(address of C)
+
+DW.myf90.CommonStuff.fh.654321.4:    ! linker global symbol
+    \livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
+        \livelink{chap:DWATname}{DW\_AT\_name}("SEVEN")
+        \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
             ! base type INTEGER
-        \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}(constant 7)
+        \livelink{chap:DWATconstvalue}{DW\_AT\_const\_value}(constant 7)
 \end{alltt}
+\end{dwflisting}
+\caption{Duplicate elimination example \#2: DWARF section group}
+\label{fig:duplicateeliminationexample2dwarfsectiongroup}
+\end{figure}
 
-Section \refersec{app:duplicateeliminationexample2primaryunit}
+Figure \refersec{fig:duplicateeliminationexample2primaryunit}
 shows the sections for the primary compilation unit.
 
-
-
-\paragraph{Duplicate elimination example 2: primary unit }
-\label{app:duplicateeliminationexample2primaryunit}
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
-== section .text
+== section \dottext{}
     [code for function Foo]
 
-== section \addtoindex{.debug\_info}
-    \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
-        \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Foo")
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
+== section \dotdebuginfo{}
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+            \livelink{chap:DWATname}{DW\_AT\_name}("Foo")
+            \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
                 ! base type INTEGER
-            \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
-                \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to
+            \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
+                \livelink{chap:DWATimport}{DW\_AT\_import}(reference to
                     DW.myf90.CommonStuff.fh.654321.1)
-            \livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! For Common1
-                \livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}(reference to
+            \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! For Common1
+                \livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}(reference to
                     DW.myf90.CommonStuff.fh.654321.3)
-            \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable} ! For function result
-                \livelink{chap:DWATname}{DW\-\_AT\-\_name}("Foo")
-                    \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to DW.f90.F90\$main.f.2)
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable} ! For function result
+                \livelink{chap:DWATname}{DW\_AT\_name}("Foo")
+                    \livelink{chap:DWATtype}{DW\_AT\_type}(reference to DW.f90.F90\$main.f.2)
                         ! base type INTEGER
 \end{alltt}
+\end{dwflisting}
+\caption{Duplicate elimination example \#2: primary unit}
+\label{fig:duplicateeliminationexample2primaryunit}
+\end{figure}
 
 A companion main program is shown in 
-Section \refersec{app:duplicateeliminationexample2companionsource}
-
-\paragraph{Duplicate elimination example 2: companion source }
-\label{app:duplicateeliminationexample2companionsource}
-
-File Main.f 
+Figure \refersec{fig:duplicateeliminationexample2companionsource}
 
-\begin{lstlisting}
+\begin{figure}
+\textit{File Main.f} 
+\begin{lstlisting}[numbers=none]
 INCLUDE 'CommonStuff.fh'
 C(50) = 8
 PRINT *, 'Result = ', FOO(50 - SEVEN)
 END
 \end{lstlisting}
+\caption{Duplicate elimination example \#2: companion source }
+\label{fig:duplicateeliminationexample2companionsource}
+\end{figure}
 
+\needlines{3}
 That main program results in an object file that
 contained a duplicate of the \addtoindex{section group} named
-my.f90.company.f90.CommonStuff.fh.654321 
+\texttt{my.f90.company.f90.CommonStuff.fh.654321} 
 corresponding to the
 included file as well as the remainder of the main subprogram
 as shown in 
-Section \refersec{app:duplicateeliminationexample2companiondwarf}.
-
-\paragraph{Duplicate elimination example 2: companion DWARF }
-\label{app:duplicateeliminationexample2companiondwarf}
+Figure \refersec{fig:duplicateeliminationexample2companiondwarf}.
 
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
-== section \addtoindex{.debug\_info}
-    \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name}(F90\$main)
-        \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name}("INTEGER")
-            \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}(\livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed})
-            \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}(...)
-
-        \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+== section \dotdebuginfo{}
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+        \livelink{chap:DWATname}{DW\_AT\_name}(F90\$main)
+        \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+            \livelink{chap:DWATname}{DW\_AT\_name}("INTEGER")
+            \livelink{chap:DWATencoding}{DW\_AT\_encoding}(\livelink{chap:DWATEsigned}{DW\_ATE\_signed})
+            \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}(...)
+
+        \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
             ...
         ...  ! other base types
-        \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name}("F90\$main")
-            \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
-                \livelink{chap:DWATimport}{DW\-\_AT\-\_import}(reference to
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+            \livelink{chap:DWATname}{DW\_AT\_name}("F90\$main")
+            \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
+                \livelink{chap:DWATimport}{DW\_AT\_import}(reference to
                     DW.myf90.CommonStuff.fh.654321.1)
-            \livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion} ! for Common1
-                \livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}(reference to
+            \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! for Common1
+                \livelink{chap:DWATcommonreference}{DW\_AT\_common\_reference}(reference to
                     DW.myf90.CommonStuff.fh.654321.3)
             ...
 \end{alltt}
+\end{dwflisting}
+\caption{Duplicate elimination example \#2: companion DWARF }
+\label{fig:duplicateeliminationexample2companiondwarf}
+\end{figure}
 
-
-This example uses \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} for the \addtoindex{section group}
+This example uses \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} for the \addtoindex{section group}
 because the included declarations are not independently
 visible as global entities.
 
 
-\subsubsection{C Example}
+\needlines{6}
+\subsubsection{C++ Example}
 
-The \addtoindex{C} example 
-\addtoindexx{DWARF duplicate elimination!C example}
+The \addtoindex{C++} example 
+\addtoindexx{DWARF duplicate elimination!C++ example}
 in this Section might appear to be equally
 valid as a \addtoindex{C} example. However, it is prudent to include
-a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
+a \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
 in the primary unit 
-(see Figure \refersec{app:duplicateeliminationexample1primarycompilationunit})
-with an \livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute that refers to the proper unit
+(see Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit})
+with an \livelink{chap:DWATimport}{DW\_AT\_import} attribute that refers to the proper unit
 in the \addtoindex{section group}.
 
 \textit{The \addtoindex{C} rules for consistency of global (file scope) symbols
@@ -734,7 +748,7 @@ A large portion of debug information is type information, and
 in a typical compilation environment, many types are duplicated
 many times. One method of controlling the amount of duplication
 is separating each type into a separate 
-addtoindex{.debug\_types} section
+\dotdebugtypes{} section
 and arranging for the linker to recognize and eliminate
 duplicates at the individual type level.
 
@@ -747,27 +761,28 @@ implementation, the relocatable object file may contain one
 of each of these debug sections:
 
 \begin{alltt}
-\addtoindex{.debug\_abbrev}
-\addtoindex{.debug\_info}
-\addtoindex{.debug\_line}
+\dotdebugabbrev{}
+\dotdebuginfo{}
+\dotdebugline{}
 \end{alltt}
 
 and any number of these additional sections:
 
 \begin{alltt}
-\addtoindex{.debug\_types}
+\dotdebugtypes{}
 \end{alltt}
 
+\needlines{5}
 As discussed in the previous section 
 (Section \refersec{app:usingcompilationunits}), 
 many
 linkers today support the concept of a COMDAT group or
-linkonce section. The general idea is that a ``key'' can be
+linkonce section. The general idea is that a \doublequote{key} can be
 attached to a section or a group of sections, and the linker
 will include only one copy of a \addtoindex{section group}
 (or individual section) for any given key. 
 For 
-\addtoindex{.debug\_types} sections, the
+\dotdebugtypes{} sections, the
 key is the \addtoindex{type signature}
 formed from the algorithm given in
 Section \refersec{datarep:typesignaturecomputation}.
@@ -779,384 +794,438 @@ As an example,
 \addtoindexx{type signature!example computation}
 consider a \addtoindex{C++} header file 
 containing the type definitions shown
-in Section \refersec{app:typesignatureexamplescsource}.
+in Figure \refersec{fig:typesignatureexamplescsource}.
 
-\subsubsection{ Type signature examples: C++ source}
-\label{app:typesignatureexamplescsource}
+\begin{figure}[h]
 \begin{lstlisting}
 namespace N {
 
- struct B;
-
- struct C {
-     int x;
-     int y;
- };
-
- class A {
-   public:
-     A(int v);
-     int v();
-   private:
-     int v_;
-     struct A *next;
-     struct B *bp;
-     struct C c;
- };
-
- }
+    struct B;
+
+    struct C {
+        int x;
+        int y;
+    };
+
+    class A {
+    public:
+        A(int v);
+        int v();
+    private:
+        int v_;
+        struct A *next;
+        struct B *bp;
+        struct C c;
+    };
+}
 \end{lstlisting}
+\caption{Type signature examples: C++ source}
+\label{fig:typesignatureexamplescsource}
+\end{figure}
 
 Next, consider one possible representation of the DWARF
-information that describes the type “struct C” as shown
+information that describes the type \doublequote{struct C} as shown
 in 
-\refersec{app:typesignaturecomputation1dwarfrepresentation}:
+\refersec{fig:typesignaturecomputation1dwarfrepresentation}.
 
-\subsubsection{Type signature  computation 1: DWARF representation}
-\label{app:typesignaturecomputation1dwarfrepresentation}
+\begin{figure}
+\begin{dwflisting}
 % We keep the : (colon) away from the attribute so tokenizing in the python tools
 % does not result in adding : into the attribute name.
 \begin{alltt}
-  \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
-      \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} : \livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus} (4)
-    \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
-        \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
+  \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
+      \livelink{chap:DWATlanguage}{DW\_AT\_language} : \livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus} (4)
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
+        \livelink{chap:DWATname}{DW\_AT\_name} : "N"
 L1:
-      \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
-          \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "C"
-          \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 8
-          \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-          \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 5
-        \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "x"
-            \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-            \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 6
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
-            \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 0
-        \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-            \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "y"
-            \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-            \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 7
-            \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
-            \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 4
+      \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+          \livelink{chap:DWATname}{DW\_AT\_name} : "C"
+          \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 8
+          \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+          \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 5
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+            \livelink{chap:DWATname}{DW\_AT\_name} : "x"
+            \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+            \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 6
+            \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
+            \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 0
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+            \livelink{chap:DWATname}{DW\_AT\_name} : "y"
+            \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+            \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 7
+            \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
+            \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 4
 L2:
-     \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
-         \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 4
-         \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} : \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}
-         \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "int"
+     \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+         \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 4
+         \livelink{chap:DWATencoding}{DW\_AT\_encoding} : \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
+         \livelink{chap:DWATname}{DW\_AT\_name} : "int"
 \end{alltt}
+\end{dwflisting}
+\caption{Type signature computation \#1: DWARF representation}
+\label{fig:typesignaturecomputation1dwarfrepresentation}
+\end{figure}
 
-In computing a signature for the type N::C, flatten the type
+\needlines{3}
+In computing a signature for the type \texttt{N::C}, flatten the type
 \addtoindexx{type signature}
 description into a byte stream according to the procedure
 outlined in 
 Section \refersec{datarep:typesignaturecomputation}.
 The result is shown in 
-Section \refersec{app:typesignaturecomputation1flattenedbytestream}.
-
-\subsubsection{Type signature  computation 1: flattened byte stream}
-\label{app:typesignaturecomputation1flattenedbytestream}
+Figure \refersec{fig:typesignaturecomputation1flattenedbytestream}.
 
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
 0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
 0x44 0x13
-// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "C"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "C"
 0x41 0x03 0x08 0x43 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
 0x41 0x0b 0x0d 0x08
 // Step 7: First child ("x")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "x"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "x"
     0x41 0x03 0x08 0x78 0x00
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
     0x41 0x38 0x0d 0x00
-    // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
+    // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
     0x54 0x49
-        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         0x44 0x24
-        // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "int"
+        // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "int"
         0x41 0x03 0x08 0x69 0x6e 0x74 0x00
-        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
+        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
         0x41 0x0b 0x0d 0x04
-        // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}
+        // Step 4: 'A' \livelink{chap:DWATencoding}{DW\_AT\_encoding} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
         0x41 0x3e 0x0d 0x05
-        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
+        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
         0x00
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "x"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
     0x00
 // Step 7: Second child ("y")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "y"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "y"
     0x41 0x03 0x08 0x78 0x00
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
     0x41 0x38 0x0d 0x04
-    // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
+    // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
     0x52 0x49 0x02
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
     0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "C"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
 0x00
 \end{alltt}
+\end{dwflisting}
+\caption{Type signature computation \#1: flattened byte stream}
+\label{fig:typesignaturecomputation1flattenedbytestream}
+\end{figure}
 
+\needlines{4}
 Running an \addtoindex{MD5 hash} over this byte stream, and taking the
 low\dash order 64 bits, yields the final signature: 
 0xd28081e8 dcf5070a.
 
 Next, consider a representation of the DWARF information that
-describes the type ``class A'' as shown in 
-Section \refersec{app:typesignaturecomputation2dwarfrepresentation}.
-
-
-\subsubsection{Type signature  computation 2: DWARF representation}
-\label{app:typesignaturecomputation2dwarfrepresentation}
+describes the type \doublequote{class A} as shown in 
+Figure \refersec{fig:typesignaturecomputation2dwarfrepresentation}.
 
+\begin{figure}
+\figurepart{1}{2}
+\begin{dwflisting}
 \begin{alltt}
-  \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit}
-      \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} : \livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus} (4)
-    \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
-          \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
+  \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
+      \livelink{chap:DWATlanguage}{DW\_AT\_language} : \livelink{chap:DWLANGCplusplus}{DW\_LANG\_C\_plus\_plus} (4)
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
+        \livelink{chap:DWATname}{DW\_AT\_name} : "N"
 L1:
-        \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
-             \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "A"
-             \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 20
-             \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-             \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 10
-           \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-                \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "v\_"
-                \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-                \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 15
-                \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
-                \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 0
-                \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
-          \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-               \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "next"
-               \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-               \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 16
-               \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
-               \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 4
-               \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
-          \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-               \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "bp"
-               \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-               \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 17
-               \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L4
-               \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 8
-               \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
-          \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
-               \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "c"
-               \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-               \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 18
-               \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : 0xd28081e8 dcf5070a (signature for struct C)
-               \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} : 12
-               \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
-       \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
-           \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} : 1
-           \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "A"
-           \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-           \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 12
-           \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
-        \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
-           \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
-           \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} : 1
-        \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
-           \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
-       \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
-           \livelink{chap:DWATexternal}{DW\-\_AT\-\_external} : 1
-           \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "v"
-           \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} : 1
-           \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} : 13
-           \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L2
-           \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
-         \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}
-           \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L3
-           \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial} : 1
+        \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
+             \livelink{chap:DWATname}{DW\_AT\_name} : "A"
+             \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 20
+             \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+             \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 10
+           \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+                \livelink{chap:DWATname}{DW\_AT\_name} : "v\_"
+                \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+                \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 15
+                \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
+                \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 0
+                \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+               \livelink{chap:DWATname}{DW\_AT\_name} : "next"
+               \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+               \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 16
+               \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L3
+               \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 4
+               \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+               \livelink{chap:DWATname}{DW\_AT\_name} : "bp"
+               \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+               \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 17
+               \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L4
+               \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 8
+               \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
+               \livelink{chap:DWATname}{DW\_AT\_name} : "c"
+               \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+               \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 18
+               \livelink{chap:DWATtype}{DW\_AT\_type} : 0xd28081e8 dcf5070a (signature for struct C)
+               \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} : 12
+               \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} : \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
+\end{alltt}
+\end{dwflisting}
+\caption{Type signature computation \#2: DWARF representation}
+\label{fig:typesignaturecomputation2dwarfrepresentation}
+\end{figure}
+
+\begin{figure}
+\figurepart{2}{2}
+\begin{dwflisting}
+\begin{alltt}
+      \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+           \livelink{chap:DWATexternal}{DW\_AT\_external} : 1
+           \livelink{chap:DWATname}{DW\_AT\_name} : "A"
+           \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+           \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 12
+           \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} : 1
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+           \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L3
+           \livelink{chap:DWATartificial}{DW\_AT\_artificial} : 1
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+           \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
+       \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
+           \livelink{chap:DWATexternal}{DW\_AT\_external} : 1
+           \livelink{chap:DWATname}{DW\_AT\_name} : "v"
+           \livelink{chap:DWATdeclfile}{DW\_AT\_decl\_file} : 1
+           \livelink{chap:DWATdeclline}{DW\_AT\_decl\_line} : 13
+           \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L2
+           \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} : 1
+         \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
+           \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L3
+           \livelink{chap:DWATartificial}{DW\_AT\_artificial} : 1
 L2:
-    \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
-         \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} : 4
-         \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} : \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}
-         \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "int"
+    \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
+         \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} : 4
+         \livelink{chap:DWATencoding}{DW\_AT\_encoding} : \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
+         \livelink{chap:DWATname}{DW\_AT\_name} : "int"
 L3:
-    \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
-         \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L1
+    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+         \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L1
 L4:
-    \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
-         \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : reference to L5
-    \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
-         \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "N"
+    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
+         \livelink{chap:DWATtype}{DW\_AT\_type} : reference to L5
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
+         \livelink{chap:DWATname}{DW\_AT\_name} : "N"
 L5:
-       \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
-           \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "B"
-           \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} : 1
+       \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
+           \livelink{chap:DWATname}{DW\_AT\_name} : "B"
+           \livelink{chap:DWATdeclaration}{DW\_AT\_declaration} : 1
 \end{alltt}
-
-In this example, the structure types N::A and N::C have each
+\end{dwflisting}
+\begin{center}
+\vspace{2mm}
+Figure~\ref{fig:typesignaturecomputation2dwarfrepresentation}: Type signature computation \#2: DWARF representation \textit{(concluded)}
+\end{center}
+\end{figure}
+
+In this example, the structure types \texttt{N::A} and \texttt{N::C} have each
 been placed in separate 
 \addtoindexx{type unit}
-type units.  For N::A, the actual
+type units.  For \texttt{N::A}, the actual
 definition of the type begins at label L1. The definition
-involves references to the int base type and to two pointer
+involves references to the \texttt{int} base type and to two pointer
 types. The information for each of these referenced types is
 also included in this \addtoindex{type unit}, 
 since base types and pointer
 types are trivial types that are not worth the overhead of a
 separate \addtoindex{type unit}. 
 The last pointer type contains a reference
-to an incomplete type N::B, which is also included here as
+to an incomplete type \texttt{N::B}, which is also included here as
 a declaration, since the complete type is unknown and its
 signature is therefore unavailable. There is also a reference
-to N::C, using 
-\livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} to 
+to \texttt{N::C}, using 
+\livelink{chap:DWFORMrefsig8}{DW\_FORM\_ref\_sig8} to 
 refer to the type signature
 \addtoindexx{type signature}
 for that type.
 
-In computing a signature for the type N::A, flatten the type
+In computing a signature for the type \texttt{N::A}, flatten the type
 description into a byte stream according to the procedure
 outlined in 
 Section \refersec{datarep:typesignaturecomputation}.
 The result is shown in 
-Section \refersec{app:typesignatureexample2flattenedbytestream}.
+Figure \refersec{fig:typesignatureexample2flattenedbytestream}.
 
-\subsubsection{Type signature example 2: flattenedbytestream}
-\label{app:typesignatureexample2flattenedbytestream}
-% DWARF4 had a \livelink{chap:DWATnamespace}{DW_AT_namespace} below, 
-% but this error is fixed here to be \livelink{chap:DWTAGnamespace}{DW_TAG_namespace}.
+\begin{figure}
+\figurepart{1}{3}
+\begin{dwflisting}
+% DWARF4 had a \livelink{chap:DWATnamespace}{DW\_AT\_namespace} below, 
+% but this error is fixed here to be \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}.
 \begin{alltt}
-// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
 0x43 0x39 0x4e 0x00
-// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
+// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
 0x44 0x02
-// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "A"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "A"
 0x41 0x03 0x08 0x41 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 20
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 20
 0x41 0x0b 0x0d 0x14
 // Step 7: First child ("v\_")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "v\_"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "v\_"
     0x41 0x03 0x08 0x76 0x5f 0x00
-    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
+    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
     0x41 0x32 0x0d 0x03
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
     0x41 0x38 0x0d 0x00
-    // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
+    // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
     0x54 0x49
-        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
+        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         0x44 0x24
-        // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "int"
+        // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "int"
         0x41 0x03 0x08 0x69 0x6e 0x74 0x00
-        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
+        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
         0x41 0x0b 0x0d 0x04
-        // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}
+        // Step 4: 'A' \livelink{chap:DWATencoding}{DW\_AT\_encoding} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWATEsigned}{DW\_ATE\_signed}
         0x41 0x3e 0x0d 0x05
-        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
+        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
         0x00
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "v\_"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "v\_"
     0x00
 // Step 7: Second child ("next")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "next"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "next"
     0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
-    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
+    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
     0x41 0x32 0x0d 0x03
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
     0x41 0x38 0x0d 0x04
-    // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#3)
+\end{alltt}
+\end{dwflisting}
+\caption{Type signature example \#2: flattened byte stream}
+\label{fig:typesignatureexample2flattenedbytestream}
+\end{figure}
+
+\begin{figure}
+\figurepart{2}{3}
+\begin{dwflisting}
+\begin{alltt}    
+    // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#3)
     0x54 0x49
-        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x44 0x0f
-        // Step 5: 'N' \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
+        // Step 5: 'N' \livelink{chap:DWATtype}{DW\_AT\_type}
         0x4e 0x49
-        // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N" 'E'
+        // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N" 'E'
         0x43 0x39 0x4e 0x00 0x45
         // Step 5: "A"
         0x41 0x00
-        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x00
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "next"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
     0x00
 // Step 7: Third child ("bp")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "bp"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "bp"
     0x41 0x03 0x08 0x62 0x70 0x00
-    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
+    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
     0x41 0x32 0x0d 0x03
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
     0x41 0x38 0x0d 0x08
-    // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#4)
+    // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#4)
     0x54 0x49
-        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
 0x44 0x0f
-        // Step 5: 'N' \livelink{chap:DWATtype}{DW\-\_AT\-\_type}
+        // Step 5: 'N' \livelink{chap:DWATtype}{DW\_AT\_type}
         0x4e 0x49
-        // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N" 'E'
+        // Step 5: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N" 'E'
         0x43 0x39 0x4e 0x00 0x45
         // Step 5: "B"
         0x42 0x00
-        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
+        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x00
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "next"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
     0x00
 // Step 7: Fourth child ("c")
-    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
-    // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "c"
+    // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "c"
     0x41 0x03 0x08 0x63 0x00
-    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}
+    // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\_AT\_accessibility} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} \livelink{chap:DWACCESSprivate}{DW\_ACCESS\_private}
     0x41 0x32 0x0d 0x03
-    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 12
+\end{alltt}
+\end{dwflisting}
+\begin{center}
+\vspace{2mm}
+Figure~\ref{fig:typesignatureexample2flattenedbytestream}: Type signature example \#2: flattened byte stream \textit{(continued)}
+\end{center}
+\end{figure}
+    
+\begin{figure}
+\figurepart{3}{3}
+\begin{dwflisting}
+\begin{alltt}
+    // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 12
     0x41 0x38 0x0d 0x0c
-    // Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#5)
+    // Step 6: 'T' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#5)
     0x54 0x49
-        // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} "N"
+        // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
         0x43 0x39 0x4e 0x00
-        // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
+        // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         0x44 0x13
-        // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "C"
+        // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "C"
         0x41 0x03 0x08 0x43 0x00
-        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
+        // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\_AT\_byte\_size} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 8
         0x41 0x0b 0x0d 0x08
         // Step 7: First child ("x")
-            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             0x44 0x0d
-            // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "x"
+            // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "x"
             0x41 0x03 0x08 0x78 0x00
-            // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
+            // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 0
             0x41 0x38 0x0d 0x00
-            // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
+            // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
             0x52 0x49 0x02
-            // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "x"
+            // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
             0x00
         // Step 7: Second child ("y")
-            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
+            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             0x44 0x0d
-            // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "y"
+            // Step 4: 'A' \livelink{chap:DWATname}{DW\_AT\_name} \livelink{chap:DWFORMstring}{DW\_FORM\_string} "y"
             0x41 0x03 0x08 0x79 0x00
-            // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
+            // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\_AT\_data\_member\_location} \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} 4
             0x41 0x38 0x0d 0x04
-            // Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
+            // Step 6: 'R' \livelink{chap:DWATtype}{DW\_AT\_type} (type \#2)
             0x52 0x49 0x02
-            // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "y"
+            // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
             0x00
-        // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "C"
+        // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
         0x00
-    // Step 7: End of \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} "c"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "c"
     0x00
 // Step 7: Fifth child ("A")
-    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} "A"
+    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "A"
     0x53 0x2e 0x41 0x00
 // Step 7: Sixth child ("v")
-    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} "v"
+    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "v"
     0x53 0x2e 0x76 0x00
-// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type} "A"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "A"
 0x00
 \end{alltt}
+\end{dwflisting}
+\begin{center}
+\vspace{2mm}
+Figure~\ref{fig:typesignatureexample2flattenedbytestream}: Type signature example \#2: flattened byte stream \textit{(concluded)}
+\end{center}
+\end{figure}
 
 Running an \addtoindex{MD5 hash} over this byte stream, and taking the
 low-order 64 bits, yields the final signature: 0xd6d160f5
@@ -1164,63 +1233,60 @@ low-order 64 bits, yields the final signature: 0xd6d160f5
 
 
 A source file that includes this header file may declare a
-variable of type N::A, and its DWARF information may look
-that shown in 
-Section \refersec{app:typesignatureexampleusage}.
-
-
-\subsubsection{Type signature example usage}
-\label{app:typesignatureexampleusage}
+variable of type \texttt{N::A}, and its DWARF information may look
+like that shown in 
+Figure \refersec{fig:typesignatureexampleusage}.
 
+\begin{figure}
+\begin{dwflisting}
 \begin{alltt}
-  \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
+  \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
   ...
-  \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
+  \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
     ...
-    \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
-      \livelink{chap:DWATname}{DW\-\_AT\-\_name} : "a"
-      \livelink{chap:DWATtype}{DW\-\_AT\-\_type} : (signature) 0xd6d160f5 5589f6e9
-      \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} : ...
+    \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
+      \livelink{chap:DWATname}{DW\_AT\_name} : "a"
+      \livelink{chap:DWATtype}{DW\_AT\_type} : (signature) 0xd6d160f5 5589f6e9
+      \livelink{chap:DWATlocation}{DW\_AT\_location} : ...
     ...
 \end{alltt}
+\end{dwflisting}
+\caption{Type signature example usage}
+\label{fig:typesignatureexampleusage}
+\end{figure}
 
 \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
+opt-context               // Step 2
     : 'C' tag-code string opt-context
     : empty
-
-debug-entry           // Step 3
+debug-entry               // Step 3
     : 'D' tag-code
-
-attributes            // Steps 4, 5, 6
+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
+children                 //  Step 7
     : child children
-    : '\\0'
-
+    : '0'
 child
     : 'S' tag-code string
     : signature
@@ -1229,23 +1295,22 @@ tag-code
 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}
-    : \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} string \addtoindexx{string class}
-    : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} \nolink{block} \addtoindexx{block class}
-\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} \addtoindexx{string class}
-    : '\\x08'
-\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}  \addtoindexx{block class}
-    : '\\x09'
-\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} \addtoindexx{flag class}
-    : '\\x0c'
-\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \addtoindexx{constant class}
-    : '\\x0d'
+    : \livelink{chap:DWFORMsdata}{DW\_FORM\_sdata} value \addtoindexx{constant class}
+    : \livelink{chap:DWFORMflag}{DW\_FORM\_flag} value \addtoindexx{flag class}
+    : \livelink{chap:DWFORMstring}{DW\_FORM\_string} string \addtoindexx{string class}
+    : \livelink{chap:DWFORMblock}{DW\_FORM\_block} \nolink{block} \addtoindexx{block class}
+\livelink{chap:DWFORMstring}{DW\_FORM\_string} \addtoindexx{string class}
+    : 'x08'
+\livelink{chap:DWFORMblock}{DW\_FORM\_block}  \addtoindexx{block class}
+    : 'x09'
+\livelink{chap:DWFORMflag}{DW\_FORM\_flag} \addtoindexx{flag class}
+    : '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
@@ -1253,7 +1318,10 @@ string
 empty
     :
 \end{alltt}
-
+\end{dwflisting}
+\caption{Type signature computation grammar}
+\label{fig:typesignaturecomputationgrammar}
+\end{figure}
 
 \section{Summary of Compression Techniques}
 \label{app:summaryofcompressiontechniques}
@@ -1277,7 +1345,7 @@ from the header files above) are put
 \addtoindexx{section group}
 into non-section group
 sections such as the base object file 
-\addtoindex{.debug\_info} section.
+\dotdebuginfo{} section.
 
 \subsection{Eliminating function duplication}
 \label{app:eliminatingfunctionduplication}
@@ -1289,6 +1357,7 @@ relocatable objects. The linker wants to keep only one of a
 given entity. The DWARF description, and everything else for
 this function, should be reduced to just a single copy.
 
+\needlines{5}
 For each such code group (function template in this example)
 the compiler assigns a name for the group which will match
 all other instantiations of this function but match nothing
@@ -1301,17 +1370,10 @@ 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}
+\dotdebuginfo{} sections follow the approach
+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}.
 
 
 
@@ -1332,11 +1394,11 @@ text, data, and DWARF sections.
 
 There will also be a compilation unit that has the file\dash level
 declarations and definitions. Other per\dash function compilation
-unit DWARF information (
-\addtoindex{.debug\_info}) points to this common
-file\dash level compilation unit using \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}.
+unit DWARF information (\dotdebuginfo{}) points to this common
+file\dash level compilation unit using 
+\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}.
 
-Section groups can use \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} and internal labels
+Section groups can use \livelink{chap:DWFORMrefaddr}{DW\_FORM\_ref\_addr} and internal labels
 (section\dash relative relocations) to refer to the main object
 file sections, as the 
 \addtoindexx{section group}