Complete work on live links, cleanup some indexing and redo pagination.
[dwarf-doc.git] / dwarf5 / latexdoc / compression.tex
index 6b59415..a9fa0e6 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).
 
@@ -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 \ref{app:duplicateeliminationexample1csource}
+Figure \ref{fig:duplicateeliminationexample1csource}
 through 
-Figure \ref{app:duplicateeliminationexample2companiondwarf}
+Figure \ref{fig:duplicateeliminationexample2companiondwarf}
 of 
 Section \refersec{app:examples}.
 
@@ -215,7 +214,7 @@ 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]
@@ -251,7 +250,7 @@ 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}.
 
 
 
@@ -293,14 +292,14 @@ during compilation.
 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 
 \textless die\dash numbers\textgreater\ 
@@ -324,31 +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.)}
 
-% This should be a subsubsubsection header but that does work...
-\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,56 +365,56 @@ 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.
 
 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
 \texttt{<prefix>.<file-designator>.<gid-number>.<die-number>}
 name should be used for an external symbol and a relocation
 generated based on that name.
 
-When referencing into a 
+\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.
+same object file.}
 
 \subsection{Examples}
 \label{app:examples}
@@ -427,17 +426,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.
 
@@ -449,24 +448,19 @@ the underlying object language is not (and varies from system to system).
 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)
@@ -474,71 +468,79 @@ 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}
+\end{dwflisting}
+\vspace{2mm}
+\caption{Duplicate elimination example \#1: DWARF section group} 
+\label{fig:duplicateeliminationexample1dwarfsectiongroup}
+\end{figure}
 
-
-Figure \refersec{app:duplicateeliminationexample1primarycompilationunit}
+Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit}
 shows the ``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}
+\end{dwflisting}
+\caption{Duplicate elimination example \#1: primary compilation unit} 
+\label{fig:duplicateeliminationexample1primarycompilationunit}
+\end{figure}
 
-This example uses \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} for the \addtoindex{section group},
+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}
 
@@ -546,176 +548,183 @@ globally visible (in accordance with
 For a \addtoindex{Fortran}
 \addtoindexx{DWARF duplicate elimination!Fortran example}
 example, consider 
-Figure \refersec{app:duplicateeliminationexample2fortransource}.
-
-
-\paragraph{Duplicate elimination example 2: Fortran source} 
-\label{app:duplicateeliminationexample2fortransource}
+Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
-File CommonStuff.fh
+\begin{figure}
+\textit{File CommonStuff.fh}
 \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.
 
 
+\needlines{6}
 \subsubsection{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
@@ -732,7 +741,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.
 
@@ -745,17 +754,18 @@ 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
@@ -765,7 +775,7 @@ 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}.
@@ -777,224 +787,248 @@ 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}
+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}
+\end{dwflisting}
+\begin{center}
+Figure~\ref{fig:typesignaturecomputation2dwarfrepresentation} Type signature computation \#2: DWARF representation \textit{(concluded)}
+\end{center}
+\end{figure}
 
-In this example, the structure types N::A and N::C have each
+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
 types. The information for each of these referenced types is
@@ -1003,158 +1037,185 @@ 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}
+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}
+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
@@ -1162,63 +1223,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'
-
 child
     : 'S' tag-code string
     : signature
@@ -1227,23 +1285,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}
+    : \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}
+\livelink{chap:DWFORMblock}{DW\_FORM\_block}  \addtoindexx{block class}
     : 'x09'
-\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} \addtoindexx{flag class}
+\livelink{chap:DWFORMflag}{DW\_FORM\_flag} \addtoindexx{flag class}
     : 'x0c'
-\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} \addtoindexx{constant class}
+\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
@@ -1251,7 +1308,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}
@@ -1275,7 +1335,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}
@@ -1287,6 +1347,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
@@ -1299,17 +1360,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}.
 
 
 
@@ -1330,11 +1384,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}