Backup of today's work. Still awaiting a couple more editorial inputs.
[dwarf-doc.git] / dwarf5 / latexdoc / programscope.tex
index 10f064a..461c0e2 100644 (file)
@@ -81,9 +81,10 @@ unit may be logically incorporated into another compilation unit
 using an \addtoindex{imported unit entry}
 (see Section \refersec{chap:importedunitentries}).}
 
 using an \addtoindex{imported unit entry}
 (see Section \refersec{chap:importedunitentries}).}
 
-\textit{A
-combined split and partial
-compilation unit kind is not defined.}
+\bb
+\textit{A partial compilation unit is not defined for use
+within a split object file.}
+\eb
 
 \textit{In the remainder of this document, the word 
 \doublequote{compilation} in the phrase \doublequote{compilation unit} 
 
 \textit{In the remainder of this document, the word 
 \doublequote{compilation} in the phrase \doublequote{compilation unit} 
@@ -116,6 +117,7 @@ the tags
 \DWTAGtypeunit{} 
 are used to represent portions of an object file.
 
 \DWTAGtypeunit{} 
 are used to represent portions of an object file.
 
+\needlines{4}
 \textit{A full compilation unit typically represents the text and
 data contributed to an executable by a single relocatable
 object file. It may be derived from several source files,
 \textit{A full compilation unit typically represents the text and
 data contributed to an executable by a single relocatable
 object file. It may be derived from several source files,
@@ -131,7 +133,10 @@ in some cases.
 See Appendix \refersec{app:dwarfcompressionandduplicateeliminationinformative}
 for discussion of related compression techniques.}
 
 See Appendix \refersec{app:dwarfcompressionandduplicateeliminationinformative}
 for discussion of related compression techniques.}
 
-A compilation unit entry owns debugging information
+\bb
+A full or partial 
+\eb
+compilation unit entry owns debugging information
 entries that represent all or part of the declarations
 made in the corresponding compilation. In the case of a
 partial compilation unit, the containing scope of its owned
 entries that represent all or part of the declarations
 made in the corresponding compilation. In the case of a
 partial compilation unit, the containing scope of its owned
@@ -140,8 +145,10 @@ or more other compilation unit entries that refer to that
 partial compilation unit (see 
 Section \refersec{chap:importedunitentries}).
 
 partial compilation unit (see 
 Section \refersec{chap:importedunitentries}).
 
-Compilation unit entries may have the following 
-attributes:
+\bb
+A full or partial compilation unit entry 
+\eb
+may have the following attributes:
 \begin{enumerate}[1. ]
 \item Either a \DWATlowpc{} and 
 \DWAThighpc{} pair of
 \begin{enumerate}[1. ]
 \item Either a \DWATlowpc{} and 
 \DWAThighpc{} pair of
@@ -188,8 +195,10 @@ indicating the source language of the compilation
 unit. The set of language names and their meanings are given
 in Table \refersec{tab:languagenames}.
 
 unit. The set of language names and their meanings are given
 in Table \refersec{tab:languagenames}.
 
+\vspace{1cm}
+\needlines{8}
 \begin{centering}
 \begin{centering}
-  \setlength{\extrarowheight}{0.1cm}
+\setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l}
   \caption{Language names} \label{tab:languagenames} \\
   \hline \bfseries Language name & \bfseries Meaning \\ \hline
 \begin{longtable}{l|l}
   \caption{Language names} \label{tab:languagenames} \\
   \hline \bfseries Language name & \bfseries Meaning \\ \hline
@@ -202,10 +211,14 @@ in Table \refersec{tab:languagenames}.
 \addtoindexx{ISO-defined language names}
 \DWLANGAdaeightythreeTARG{} \dag & ISO Ada:1983 \addtoindexx{Ada:1983 (ISO)} \\
 \DWLANGAdaninetyfiveTARG{}  \dag & ISO Ada:1995 \addtoindexx{Ada:1995 (ISO)} \\
 \addtoindexx{ISO-defined language names}
 \DWLANGAdaeightythreeTARG{} \dag & ISO Ada:1983 \addtoindexx{Ada:1983 (ISO)} \\
 \DWLANGAdaninetyfiveTARG{}  \dag & ISO Ada:1995 \addtoindexx{Ada:1995 (ISO)} \\
-\DWLANGCTARG & Non-standardized C, such as K\&R \addtoindexx{C!non-standard}\\
-\DWLANGCeightynineTARG & ISO C:1989 \addtoindexx{C:1989 (ISO)} \\
-\DWLANGCninetynineTARG & ISO C:1999 \addtoindexx{C:1999 (ISO)} \\
-\DWLANGCelevenTARG     & ISO C:2011 \addtoindexx{C:2011 (ISO)} \\
+\bb
+\DWLANGBLISSTARG & BLISS \addtoindexx{BLISS}
+\eb
+\\
+\DWLANGCTARG & Non-standardized C, such as K\&R \addtoindexx{C!non-standard} \\*
+\DWLANGCeightynineTARG & ISO C:1989 \addtoindexx{C:1989 (ISO)} \\*
+\DWLANGCninetynineTARG & ISO C:1999 \addtoindexx{C:1999 (ISO)} \\*
+\DWLANGCelevenTARG     & ISO C:2011 \addtoindexx{C:2011 (ISO)} \\*
 \DWLANGCplusplusTARG          & ISO C++98 \addtoindexx{C++98 (ISO)} \\
 \DWLANGCpluspluszerothreeTARG & ISO C++03 \addtoindexx{C++03 (ISO)} \\
 \DWLANGCpluspluselevenTARG    & ISO C++11 \addtoindexx{C++11 (ISO)} \\
 \DWLANGCplusplusTARG          & ISO C++98 \addtoindexx{C++98 (ISO)} \\
 \DWLANGCpluspluszerothreeTARG & ISO C++03 \addtoindexx{C++03 (ISO)} \\
 \DWLANGCpluspluselevenTARG    & ISO C++11 \addtoindexx{C++11 (ISO)} \\
@@ -233,7 +246,10 @@ in Table \refersec{tab:languagenames}.
 \DWLANGPascaleightythreeTARG & ISO Pascal:1983 \addtoindexx{Pascal:1983 (ISO)} \\
 \DWLANGPLITARG{}~\dag & ANSI PL/I:1976 \addtoindexx{PL/I:1976 (ANSI)} \\
 \DWLANGPythonTARG{}~\dag & \addtoindex{Python} \\
 \DWLANGPascaleightythreeTARG & ISO Pascal:1983 \addtoindexx{Pascal:1983 (ISO)} \\
 \DWLANGPLITARG{}~\dag & ANSI PL/I:1976 \addtoindexx{PL/I:1976 (ANSI)} \\
 \DWLANGPythonTARG{}~\dag & \addtoindex{Python} \\
-\DWLANGRenderScriptTARG~\dag & \addtoindex{RenderScript Kernal Language}
+\DWLANGRenderScriptTARG~\dag & 
+\bb
+\addtoindex{RenderScript Kernel Language}
+\eb
 \\
 \DWLANGRustTARG{}~\dag & \addtoindex{Rust} \\
 \DWLANGSwiftTARG{}
 \\
 \DWLANGRustTARG{}~\dag & \addtoindex{Rust} \\
 \DWLANGSwiftTARG{}
@@ -296,13 +312,11 @@ A \DWATproducerDEFN{} attribute\addtoindexx{producer attribute}
 whose value is a null-terminated string containing 
 information about the compiler that produced the compilation unit. 
 
 whose value is a null-terminated string containing 
 information about the compiler that produced the compilation unit. 
 
-\bb
 \textit{The actual contents of
 the string will be specific to each producer, but should
 begin with the name of the compiler vendor or some other
 identifying character sequence that will avoid confusion
 with other producer values.}
 \textit{The actual contents of
 the string will be specific to each producer, but should
 begin with the name of the compiler vendor or some other
 identifying character sequence that will avoid confusion
 with other producer values.}
-\eb
 
 \needlines{4}
 \item  \hypertarget{chap:DWATidentifiercaseidentifiercaserule}{}
 
 \needlines{4}
 \item  \hypertarget{chap:DWATidentifiercaseidentifiercaserule}{}
@@ -328,11 +342,9 @@ in debugging information
 entries for the compilation unit reflect the names as they
 appear in the source program. 
 
 entries for the compilation unit reflect the names as they
 appear in the source program. 
 
-\bb
 \textit{A debugger should be sensitive
 to the case of \addtoindex{identifier names} when doing identifier 
 lookups.}
 \textit{A debugger should be sensitive
 to the case of \addtoindex{identifier names} when doing identifier 
 lookups.}
-\eb
 
 \needlines{4}
 \DWIDupcaseTARG{} means that the 
 
 \needlines{4}
 \DWIDupcaseTARG{} means that the 
@@ -341,30 +353,23 @@ information for this compilation unit converted all source
 names to upper case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
 names to upper case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
-\bb
 \textit{A debugger should convert all names to upper case 
 when doing lookups.}
 \textit{A debugger should convert all names to upper case 
 when doing lookups.}
-\eb
 
 \DWIDdowncaseTARG{} means that the producer of the debugging
 information for this compilation unit converted all source
 names to lower case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
 
 \DWIDdowncaseTARG{} means that the producer of the debugging
 information for this compilation unit converted all source
 names to lower case. The values of the name attributes may not
 reflect the names as they appear in the source program. 
 
-\bb
 \textit{A debugger should convert all names to lower case 
 when doing lookups.}
 \textit{A debugger should convert all names to lower case 
 when doing lookups.}
-\eb
 
 \needlines{4}
 \DWIDcaseinsensitiveTARG{} means that the values of the name
 attributes reflect the names as they appear in the source
 program but that case is not significant.
 
 
 \needlines{4}
 \DWIDcaseinsensitiveTARG{} means that the values of the name
 attributes reflect the names as they appear in the source
 program but that case is not significant.
 
-\bb
 \textit{A debugger should ignore case when doing lookups.}
 \textit{A debugger should ignore case when doing lookups.}
-\eb
-
 
 \needlines{5}
 \item \hypertarget{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{}
 
 \needlines{5}
 \item \hypertarget{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{}
@@ -428,7 +433,7 @@ This attribute points to the first string
 offset of the compilation unit's contribution to the
 \dotdebugstroffsets{} (or \dotdebugstroffsetsdwo{}) section. 
 Indirect string references
 offset of the compilation unit's contribution to the
 \dotdebugstroffsets{} (or \dotdebugstroffsetsdwo{}) section. 
 Indirect string references
-(using \DWFORMstrx) within the compilation unit are
+(using \DWFORMstrxXNor) within the compilation unit are
 interpreted as indices relative to this base.
 
 \needlines{6}
 interpreted as indices relative to this base.
 
 \needlines{6}
@@ -437,35 +442,40 @@ A \DWATaddrbaseDEFN\addtoindexx{address table base attribute}
 attribute, whose value is of class \CLASSaddrptr.
 This attribute points to the beginning of the compilation
 unit's contribution to the \dotdebugaddr{} section.
 attribute, whose value is of class \CLASSaddrptr.
 This attribute points to the beginning of the compilation
 unit's contribution to the \dotdebugaddr{} section.
-Indirect references (using \DWFORMaddrx, \DWOPaddrx, 
+Indirect references (using \DWFORMaddrxXN, \DWOPaddrx, 
+\DWOPconstx, 
 \bb
 \bb
-\DWOPconstx, \DWLLEbaseaddressx{}, 
-\DWLLEstartxendx{} or \DWLLEstartxlength) 
+\DWLLEbaseaddressx{}, \DWLLEstartxendx{}, \DWLLEstartxlength{},
+\DWRLEbaseaddressx{}, \DWRLEstartxendx{} or \DWRLEstartxlength) 
 \eb
 within the compilation unit are interpreted as indices 
 relative to this base.
 
 \needlines{5}
 \item \hypertarget{chap:DWATrnglistsbaseforrnglists}{}
 \eb
 within the compilation unit are interpreted as indices 
 relative to this base.
 
 \needlines{5}
 \item \hypertarget{chap:DWATrnglistsbaseforrnglists}{}
-\bb 
 A \DWATrnglistsbaseDEFN\addtoindexx{ranges table base attribute}
 attribute, whose value is of class \CLASSrnglistsptr.
 A \DWATrnglistsbaseDEFN\addtoindexx{ranges table base attribute}
 attribute, whose value is of class \CLASSrnglistsptr.
-This attribute points to the base of the compilation
+This attribute points to the 
+\bb
+beginning of the offsets table (immediately following the header) 
+\eb
+of the compilation
 unit's contribution to the \dotdebugrnglists{} section.
 References to range lists (using \DWFORMrnglistx)
 within the compilation unit are
 interpreted relative to this base.
 unit's contribution to the \dotdebugrnglists{} section.
 References to range lists (using \DWFORMrnglistx)
 within the compilation unit are
 interpreted relative to this base.
-\eb
 
 \item \hypertarget{chap:DWATloclistsbaseinlocationlist}{}
 
 \item \hypertarget{chap:DWATloclistsbaseinlocationlist}{}
-\bb
-A \DWATloclistsbase{}\addtoindexx{location table base attribute} 
+A \DWATloclistsbaseDEFN{}\addtoindexx{location table base attribute} 
 attribute, whose value is of class \CLASSloclistsptr. 
 attribute, whose value is of class \CLASSloclistsptr. 
-This attribute points to the base of the compilation 
-unit’s contribution to the \dotdebugloclists{} section. References 
+This attribute points to the 
+\bb
+beginning of the offsets table (immediately following the header) 
+\eb
+of the compilation 
+unit's contribution to the \dotdebugloclists{} section. References 
 to location lists (using \DWFORMloclistx) within the compilation 
 unit are interpreted relative to this base.
 to location lists (using \DWFORMloclistx) within the compilation 
 unit are interpreted relative to this base.
-\eb
 \end{enumerate}
 
 The  base address of a compilation unit is defined as the
 \end{enumerate}
 
 The  base address of a compilation unit is defined as the
@@ -547,23 +557,17 @@ of a \DWATuseUTFeight{} attribute in the full compilation unit
 from the skeleton compilation unit.
 \item A \DWATaddrbase{} attribute.
 
 from the skeleton compilation unit.
 \item A \DWATaddrbase{} attribute.
 
-\bbpareb
-
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
 in Section \refersec{chap:fullandpartialcompilationunitentries})
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
 in Section \refersec{chap:fullandpartialcompilationunitentries})
-\bb
-are
-\eb 
-placed in the split full compilation unit
+are placed in the split full compilation unit
 (see \refersec{chap:splitfullcompilationunitentries}).
 The attributes provided by the skeleton compilation
 unit entry do not need to be repeated in the full compilation
 unit entry.
 
 \textit{The \DWATaddrbase{} 
 (see \refersec{chap:splitfullcompilationunitentries}).
 The attributes provided by the skeleton compilation
 unit entry do not need to be repeated in the full compilation
 unit entry.
 
 \textit{The \DWATaddrbase{} 
-\bbeb
 and \DWATstroffsetsbase{} attributes provide context that may be 
 necessary to interpret the contents
 of the corresponding \splitDWARFobjectfile.}
 and \DWATstroffsetsbase{} attributes provide context that may be 
 necessary to interpret the contents
 of the corresponding \splitDWARFobjectfile.}
@@ -604,8 +608,7 @@ split full compilation unit entry but instead are inherited
 (if present) from the corresponding skeleton compilation unit: 
 \DWATlowpc, \DWAThighpc, \DWATranges, \DWATstmtlist, \DWATcompdir, 
 \DWATstroffsetsbase, \DWATaddrbase{} and 
 (if present) from the corresponding skeleton compilation unit: 
 \DWATlowpc, \DWAThighpc, \DWATranges, \DWATstmtlist, \DWATcompdir, 
 \DWATstroffsetsbase, \DWATaddrbase{} and 
-\bb
-\DWATrnglistsbase.\eb}
+\DWATrnglistsbase.}
 
 \textit{The \DWATbasetypes{} attribute is not defined for a
 split full compilation unit.}
 
 \textit{The \DWATbasetypes{} attribute is not defined for a
 split full compilation unit.}
@@ -633,6 +636,7 @@ the sections in which they are represented
 Moreover, the \DWATstroffsetsbase{} attribute (see below) is not 
 used in a split type unit.
 
 Moreover, the \DWATstroffsetsbase{} attribute (see below) is not 
 used in a split type unit.
 
+\needlines{4}
 A type unit is represented by a debugging information entry
 with the tag \DWTAGtypeunitTARG. 
 A \addtoindex{type unit entry} owns debugging
 A type unit is represented by a debugging information entry
 with the tag \DWTAGtypeunitTARG. 
 A \addtoindex{type unit entry} owns debugging
@@ -681,13 +685,13 @@ unit entry, its children, and its associated
 \addtoindex{specialized line number table}, 
 are represented using the UTF-8 representation.
 
 \addtoindex{specialized line number table}, 
 are represented using the UTF-8 representation.
 
-\item A 
-\DWATstroffsetsbase\addtoindexx{string offsets base attribute}
+\needlines{4}
+\item A \DWATstroffsetsbase\addtoindexx{string offsets base attribute}
 attribute, whose value is of class \CLASSstroffsetsptr. 
 This attribute points
 to the first string offset of the type unit's contribution to
 the \dotdebugstroffsets{} section. Indirect string references
 attribute, whose value is of class \CLASSstroffsetsptr. 
 This attribute points
 to the first string offset of the type unit's contribution to
 the \dotdebugstroffsets{} section. Indirect string references
-(using \DWFORMstrx) within the type unit are interpreted
+(using \DWFORMstrxXNor) within the type unit are interpreted
 as indices relative to this base.
 
 \end{enumerate}
 as indices relative to this base.
 
 \end{enumerate}
@@ -699,6 +703,7 @@ namespaces, the debugging information entry for T is nested
 within debugging information entries describing its containers;
 otherwise, T is a direct child of the type unit entry.
 
 within debugging information entries describing its containers;
 otherwise, T is a direct child of the type unit entry.
 
+\needlines{4}
 A type unit entry may also own additional debugging information
 entries that represent declarations of additional types that
 are referenced by type T and have not themselves been placed in
 A type unit entry may also own additional debugging information
 entries that represent declarations of additional types that
 are referenced by type T and have not themselves been placed in
@@ -762,6 +767,7 @@ If the module has a name, the module entry has a
 whose value is a null\dash terminated string containing
 the module name.
 
 whose value is a null\dash terminated string containing
 the module name.
 
+\needlines{4}
 The \addtoindex{module entry} may have either a 
 \DWATlowpc{} and
 \DWAThighpc{} 
 The \addtoindex{module entry} may have either a 
 \DWATlowpc{} and
 \DWAThighpc{} 
@@ -873,14 +879,11 @@ compilation unit specific \doublequote{unnamed namespace} may
 be represented by a namespace entry with no name attribute in
 the original namespace declaration entry (and therefore no name
 attribute in any namespace extension entry of this namespace).
 be represented by a namespace entry with no name attribute in
 the original namespace declaration entry (and therefore no name
 attribute in any namespace extension entry of this namespace).
-\bb
 C++ states that declarations in the unnamed namespace are
 implicitly available in the containing scope; a producer
 should make this effect explicit with the \DWATexportsymbols{}
 attribute, or by using a \DWTAGimportedmodule{} that is a
 C++ states that declarations in the unnamed namespace are
 implicitly available in the containing scope; a producer
 should make this effect explicit with the \DWATexportsymbols{}
 attribute, or by using a \DWTAGimportedmodule{} that is a
-sibling of the namespace entry and references it.
-\eb
-}
+sibling of the namespace entry and references it.}
 
 \textit{A compiler emitting namespace information may choose to
 explicitly represent namespace extensions, or to represent the
 
 \textit{A compiler emitting namespace information may choose to
 explicitly represent namespace extensions, or to represent the
@@ -1035,15 +1038,15 @@ series of individual imported declaration entries as described
 in Section \refersec{chap:importedorrenameddeclarationentries}.
 }
 
 in Section \refersec{chap:importedorrenameddeclarationentries}.
 }
 
-\needlines{5}
+\needlines{8}
 \textit{A \addtoindex{Fortran} use statement for an entity in a module that is
 \addtoindexx{Fortran!use statement}
 itself imported by a use statement without an explicit mention
 may be represented by an imported declaration entry that refers
 \textit{A \addtoindex{Fortran} use statement for an entity in a module that is
 \addtoindexx{Fortran!use statement}
 itself imported by a use statement without an explicit mention
 may be represented by an imported declaration entry that refers
-to the original debugging information entry. For example, given
-}
+to the original debugging information entry. For example, given}
+\par % Needed to end paragraph before listing so that it gets a line number
 \vspace{2mm}
 \vspace{2mm}
-\begin{lstlisting}
+\begin{nlnlisting}
 module A
 integer X, Y, Z
 end module
 module A
 integer X, Y, Z
 end module
@@ -1056,7 +1059,7 @@ module C
 use B, only Q => X
 end module
 
 use B, only Q => X
 end module
 
-\end{lstlisting}
+\end{nlnlisting}
 \textit{the imported declaration entry for Q within module C refers
 directly to the variable declaration entry for X in module A
 because there is no explicit representation for X in module B.
 \textit{the imported declaration entry for Q within module C refers
 directly to the variable declaration entry for X in module A
 because there is no explicit representation for X in module B.
@@ -1104,6 +1107,7 @@ and entry
 \addtoindexx{entry point entry}
 points:
 
 \addtoindexx{entry point entry}
 points:
 
+\nolinenumbers
 \begin{tabular}{lp{9.0cm}}
 \DWTAGsubprogramTARG{} & A subroutine or function \\
 \DWTAGinlinedsubroutine{} & A particular inlined 
 \begin{tabular}{lp{9.0cm}}
 \DWTAGsubprogramTARG{} & A subroutine or function \\
 \DWTAGinlinedsubroutine{} & A particular inlined 
@@ -1111,7 +1115,7 @@ points:
 instance of a subroutine or function \\
 \DWTAGentrypointTARG{} & An alternate entry point \\
 \end{tabular}
 instance of a subroutine or function \\
 \DWTAGentrypointTARG{} & An alternate entry point \\
 \end{tabular}
-
+\par\condlinenumbers
 
 \needlines{6}
 \subsection{General Subroutine and Entry Point Information}
 
 \needlines{6}
 \subsection{General Subroutine and Entry Point Information}
@@ -1247,6 +1251,7 @@ which is a \CLASSflag. The attribute
 indicates whether the subprogram was declared with the \doublequote{noreturn} keyword or property 
 indicating that the subprogram can be called, but will never return to its caller.
 
 indicates whether the subprogram was declared with the \doublequote{noreturn} keyword or property 
 indicating that the subprogram can be called, but will never return to its caller.
 
+\needlines{4}
 \textit{The \addtoindex{Fortran} 
 language allows the keywords \texttt{elemental}, \texttt{pure}
 and \texttt{recursive} to be included as part of the declaration of
 \textit{The \addtoindex{Fortran} 
 language allows the keywords \texttt{elemental}, \texttt{pure}
 and \texttt{recursive} to be included as part of the declaration of
@@ -1297,6 +1302,7 @@ that has neither a \DWATcallpc{} nor \DWATcallreturnpc{} attribute.
 \textit{The \DWATcallallsourcecallsNAME{} attribute is intended for debugging 
 information format consumers that analyze call graphs.}
 
 \textit{The \DWATcallallsourcecallsNAME{} attribute is intended for debugging 
 information format consumers that analyze call graphs.}
 
+\needlines{4}
 If the the \DWATcallallsourcecalls{} attribute is present then the 
 \DWATcallallcalls{} and \DWATcallalltailcalls{} attributes are 
 also implicitly present. Similarly, if the 
 If the the \DWATcallallsourcecalls{} attribute is present then the 
 \DWATcallallcalls{} and \DWATcallalltailcalls{} attributes are 
 also implicitly present. Similarly, if the 
@@ -1485,32 +1491,19 @@ instance of the subroutine that immediately encloses the
 subroutine or entry point.
 
 In the context of supporting nested subroutines, the
 subroutine or entry point.
 
 In the context of supporting nested subroutines, the
-\DWATframebase{} attribute value 
-\bb
-obeys
-\eb
-the following constraints:
+\DWATframebase{} attribute value obeys the following constraints:
 
 \begin{enumerate}[1. ]
 \item 
 
 \begin{enumerate}[1. ]
 \item 
-\bb
-It computes
-\eb
-a value that does not change during the
+It computes a value that does not change during the
 life of the subprogram, and
 
 life of the subprogram, and
 
-\item The computed value 
-\bb
-is
-\eb
-unique among instances of
+\item The computed value is unique among instances of
 the same subroutine. 
 
 the same subroutine. 
 
-\bb
 \textit{For typical \DWATframebase{} use, this
 means that a recursive subroutine\textquoteright s stack frame must have
 non-zero size.}
 \textit{For typical \DWATframebase{} use, this
 means that a recursive subroutine\textquoteright s stack frame must have
 non-zero size.}
-\eb
 
 \end{enumerate}
 
 
 \end{enumerate}
 
@@ -1672,15 +1665,10 @@ Attributes and children in an abstract instance are shared
 by all concrete instances (see Section \refersec{chap:concreteinstances}).
 
 A debugging information entry that is a member of an abstract
 by all concrete instances (see Section \refersec{chap:concreteinstances}).
 
 A debugging information entry that is a member of an abstract
-instance tree 
-\bb
-may
-\eb
-not contain any attributes which describe
+instance tree may not contain any attributes which describe
 aspects of the subroutine which vary between distinct inlined
 expansions or distinct out-of-line expansions. 
 
 aspects of the subroutine which vary between distinct inlined
 expansions or distinct out-of-line expansions. 
 
-\bb
 \textit{For example,
 \addtoindexx{entry pc attribute!and abstract instance}
 the \DWATlowpc,\addtoindexx{low PC attribute!and abstract instance}
 \textit{For example,
 \addtoindexx{entry pc attribute!and abstract instance}
 the \DWATlowpc,\addtoindexx{low PC attribute!and abstract instance}
@@ -1694,7 +1682,6 @@ and
 \DWATsegment{}\addtoindexx{segment attribute!and abstract instance}
 attributes typically should be omitted; however, this list is not 
 exhaustive.}
 \DWATsegment{}\addtoindexx{segment attribute!and abstract instance}
 attributes typically should be omitted; however, this list is not 
 exhaustive.}
-\eb
 
 \needlines{5}
 \textit{It would not make sense normally to put these attributes into
 
 \needlines{5}
 \textit{It would not make sense normally to put these attributes into
@@ -1720,12 +1707,7 @@ or not a given entry is abstract.
 
 Each inline expansion of a subroutine is represented
 by a debugging information entry with the 
 
 Each inline expansion of a subroutine is represented
 by a debugging information entry with the 
-tag \DWTAGinlinedsubroutineTARG. 
-Each such entry 
-\bb
-is
-\eb
-be a direct
+tag \DWTAGinlinedsubroutineTARG. Each such entry is a direct
 child of the entry that represents the scope within which
 the inlining occurs.
 
 child of the entry that represents the scope within which
 the inlining occurs.
 
@@ -1796,6 +1778,7 @@ concrete inlined instance has a
 as well as a \DWATconstvalue{} attribute whose value represents
 the actual return value of the concrete inlined instance.}
 
 as well as a \DWATconstvalue{} attribute whose value represents
 the actual return value of the concrete inlined instance.}
 
+\needlines{4}
 Any debugging information entry that is owned (either
 directly or indirectly) by a debugging information entry
 with the tag \DWTAGinlinedsubroutine{} is referred to as a
 Any debugging information entry that is owned (either
 directly or indirectly) by a debugging information entry
 with the tag \DWTAGinlinedsubroutine{} is referred to as a
@@ -1844,9 +1827,7 @@ If an entry within a concrete inlined instance tree contains
 attributes describing the 
 \addtoindexx{declaration coordinates!in concrete instance}
 \livelink{chap:declarationcoordinates}{declaration coordinates} 
 attributes describing the 
 \addtoindexx{declaration coordinates!in concrete instance}
 \livelink{chap:declarationcoordinates}{declaration coordinates} 
-of that entry, then those attributes 
-\bbeb
-refer to the file, line
+of that entry, then those attributes refer to the file, line
 and column of the original declaration of the subroutine,
 not to the point at which it was inlined. As a consequence,
 they may usually be omitted from any entry that has an abstract
 and column of the original declaration of the subroutine,
 not to the point at which it was inlined. As a consequence,
 they may usually be omitted from any entry that has an abstract
@@ -1882,11 +1863,7 @@ union, class, and interface types; and members of types. If any
 entry within a concrete inlined instance tree needs to refer
 to an entity declared within the scope of the relevant inlined
 subroutine and for which no concrete instance entry exists,
 entry within a concrete inlined instance tree needs to refer
 to an entity declared within the scope of the relevant inlined
 subroutine and for which no concrete instance entry exists,
-the reference 
-\bb
-refers 
-\eb
-to the abstract instance entry.
+the reference refers to the abstract instance entry.
 
 \needlines{4}
 \item Entries in the concrete instance tree which are associated
 
 \needlines{4}
 \item Entries in the concrete instance tree which are associated
@@ -1909,11 +1886,7 @@ for that separate debugging information entry.
 not correspond to entries in the abstract instance tree
 to describe new entities that are specific to a particular
 inlined expansion. In that case, they will not have associated
 not correspond to entries in the abstract instance tree
 to describe new entities that are specific to a particular
 inlined expansion. In that case, they will not have associated
-entries in the abstract instance tree, 
-\bb
-do 
-\eb
-not contain
+entries in the abstract instance tree, do not contain
 \addtoindexx{abstract origin attribute}
 \DWATabstractorigin{} attributes, and must contain all their
 own attributes directly. This allows an abstract instance tree
 \addtoindexx{abstract origin attribute}
 \DWATabstractorigin{} attributes, and must contain all their
 own attributes directly. This allows an abstract instance tree
@@ -2219,10 +2192,8 @@ a DWARF expression.  For indirect calls or jumps where it is unknown at
 compile time which subprogram will be called the expression computes the
 address of the subprogram that will be called.  
 
 compile time which subprogram will be called the expression computes the
 address of the subprogram that will be called.  
 
-\bb
 \textit{The DWARF expression should
 not use register or memory locations that might be clobbered by the call.}
 \textit{The DWARF expression should
 not use register or memory locations that might be clobbered by the call.}
-\eb
 
 \needlines{4}
 The call site entry may have a 
 
 \needlines{4}
 The call site entry may have a 
@@ -2283,7 +2254,7 @@ Each \DWTAGcallsiteparameter{} entry may have a
 which is a DWARF expression 
 which when evaluated yields the value of the parameter at the time of the call.
 
 which is a DWARF expression 
 which when evaluated yields the value of the parameter at the time of the call.
 
-\textit{\bbeb If it is not
+\textit{If it is not
 possible to avoid registers or memory locations that might be clobbered by
 the call in the expression, then the \DWATcallvalueNAME{} attribute should
 not be provided. The reason for the restriction is that the value of the parameter may be
 possible to avoid registers or memory locations that might be clobbered by
 the call in the expression, then the \DWATcallvalueNAME{} attribute should
 not be provided. The reason for the restriction is that the value of the parameter may be
@@ -2390,11 +2361,7 @@ A labeled statement is usually the target of one or more
 \needlines{4}
 A label is represented by a debugging information entry with
 \addtoindexx{label entry} the tag \DWTAGlabelTARG. 
 \needlines{4}
 A label is represented by a debugging information entry with
 \addtoindexx{label entry} the tag \DWTAGlabelTARG. 
-The entry for a label 
-\bb
-is
-\eb
-owned by
+The entry for a label is owned by
 the debugging information entry representing the scope within
 which the name of the label could be legally referenced within
 the source program.
 the debugging information entry representing the scope within
 which the name of the label could be legally referenced within
 the source program.
@@ -2514,7 +2481,7 @@ and will have the same form as other parameter entries.
 The siblings immediately following a try \nolink{block} 
 entry are its corresponding catch \nolink{block} entries.
 
 The siblings immediately following a try \nolink{block} 
 entry are its corresponding catch \nolink{block} entries.
 
-
+\needlines{8}
 \section{Declarations with Reduced Scope}
 \label{declarationswithreducedscope}
 \hypertarget{chap:DWATstartscopeofdeclaration}{}
 \section{Declarations with Reduced Scope}
 \label{declarationswithreducedscope}
 \hypertarget{chap:DWATstartscopeofdeclaration}{}
@@ -2548,9 +2515,7 @@ the value of this attribute is the offset in bytes of the
 beginning of the address range for the scope of the entity 
 from the beginning of the first \addtoindex{range list} entry
 for the containing scope that is not a base 
 beginning of the address range for the scope of the entity 
 from the beginning of the first \addtoindex{range list} entry
 for the containing scope that is not a base 
-\bb
 address entry, a default location
 address entry, a default location
-\eb
 entry or an end-of-list entry.
 \end{enumerate}
 
 entry or an end-of-list entry.
 \end{enumerate}
 
@@ -2570,8 +2535,8 @@ subsequent declaration.}
 
 \needlines{4}
 \textit{Consider the following example \addtoindex{C} code:}
 
 \needlines{4}
 \textit{Consider the following example \addtoindex{C} code:}
-\vspace{3mm}
-\begin{lstlisting}
+\par % Needed to end paragraph before listing so that it gets a line number
+\begin{nlnlisting}
 float x = 99.99;
 int myfunc()
 {
 float x = 99.99;
 int myfunc()
 {
@@ -2579,7 +2544,7 @@ int myfunc()
     float x = 88.99;
     return 0;
 }
     float x = 88.99;
     return 0;
 }
-\end{lstlisting}
+\end{nlnlisting}
 
 \textit{\addtoindex{C} scoping rules require that the value of the 
 variable \texttt{x} assigned to the variable \texttt{f} in the 
 
 \textit{\addtoindex{C} scoping rules require that the value of the 
 variable \texttt{x} assigned to the variable \texttt{f} in the