Backup of today's work. Still awaiting a couple more editorial inputs.
[dwarf-doc.git] / dwarf5 / latexdoc / programscope.tex
index d3f3aa9..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,6 +246,11 @@ 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 & 
+\bb
+\addtoindex{RenderScript Kernel Language}
+\eb
+\\
 \DWLANGRustTARG{}~\dag & \addtoindex{Rust} \\
 \DWLANGSwiftTARG{}
  & \addtoindex{Swift} \\
 \DWLANGRustTARG{}~\dag & \addtoindex{Rust} \\
 \DWLANGSwiftTARG{}
  & \addtoindex{Swift} \\
@@ -292,12 +310,13 @@ unit in whatever form makes sense for the host system.
 \item  \hypertarget{chap:DWATproducercompileridentification}{}
 A \DWATproducerDEFN{} attribute\addtoindexx{producer attribute}
 whose value is a null-terminated string containing 
 \item  \hypertarget{chap:DWATproducercompileridentification}{}
 A \DWATproducerDEFN{} attribute\addtoindexx{producer attribute}
 whose value is a null-terminated string containing 
-information about the compiler
-that produced the compilation unit. The actual contents of
+information about the compiler that produced the compilation unit. 
+
+\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
 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 should avoid confusion
-with other producer values.
+identifying character sequence that will avoid confusion
+with other producer values.}
 
 \needlines{4}
 \item  \hypertarget{chap:DWATidentifiercaseidentifiercaserule}{}
 
 \needlines{4}
 \item  \hypertarget{chap:DWATidentifiercaseidentifiercaserule}{}
@@ -321,32 +340,36 @@ as the values of \DWATname{} attributes
 \addtoindexx{name attribute}
 in debugging information
 entries for the compilation unit reflect the names as they
 \addtoindexx{name attribute}
 in debugging information
 entries for the compilation unit reflect the names as they
-appear in the source program. The debugger should be sensitive
+appear in the source program. 
+
+\textit{A debugger should be sensitive
 to the case of \addtoindex{identifier names} when doing identifier 
 to the case of \addtoindex{identifier names} when doing identifier 
-lookups.
+lookups.}
 
 \needlines{4}
 \DWIDupcaseTARG{} means that the 
 producer of the debugging
 information for this compilation unit converted all source
 names to upper case. The values of the name attributes may not
 
 \needlines{4}
 \DWIDupcaseTARG{} means that the 
 producer of the debugging
 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. The
-debugger should convert all names to upper case when doing
-lookups.
+reflect the names as they appear in the source program. 
 
 
-\DWIDdowncaseTARG{} means that 
-the producer of the debugging
+\textit{A debugger should convert all names to upper case 
+when doing lookups.}
+
+\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
 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. The
-debugger should convert all names to lower case when doing
-lookups.
+reflect the names as they appear in the source program. 
+
+\textit{A debugger should convert all names to lower case 
+when doing lookups.}
 
 \needlines{4}
 \DWIDcaseinsensitiveTARG{} means that the values of the name
 attributes reflect the names as they appear in the source
 
 \needlines{4}
 \DWIDcaseinsensitiveTARG{} means that the values of the name
 attributes reflect the names as they appear in the source
-program but that a case insensitive lookup should be used to
-access those names.
+program but that case is not significant.
+
+\textit{A debugger should ignore case when doing lookups.}
 
 \needlines{5}
 \item \hypertarget{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{}
 
 \needlines{5}
 \item \hypertarget{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{}
@@ -410,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}
@@ -419,22 +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, 
-\DWOPconstx, \DWLLEbaseaddressselectionentry{}, 
-\DWLLEstartendentry{} or \DWLLEstartlengthentry) 
+Indirect references (using \DWFORMaddrxXN, \DWOPaddrx, 
+\DWOPconstx, 
+\bb
+\DWLLEbaseaddressx{}, \DWLLEstartxendx{}, \DWLLEstartxlength{},
+\DWRLEbaseaddressx{}, \DWRLEstartxendx{} or \DWRLEstartxlength) 
+\eb
 within the compilation unit are interpreted as indices 
 relative to this base.
 
 \needlines{5}
 within the compilation unit are interpreted as indices 
 relative to this base.
 
 \needlines{5}
-\item \hypertarget{chap:DWATrangesbaseforrangelists}{}
-A \DWATrangesbaseDEFN\addtoindexx{ranges table base attribute}
-attribute, whose value is of class \CLASSrangelistptr.
-This attribute points to the beginning of the compilation
-unit's contribution to the \dotdebugranges{} section.
-References to range lists (using \DWFORMsecoffset)
+\item \hypertarget{chap:DWATrnglistsbaseforrnglists}{}
+A \DWATrnglistsbaseDEFN\addtoindexx{ranges table base attribute}
+attribute, whose value is of class \CLASSrnglistsptr.
+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
 within the compilation unit are
-interpreted as offsets relative to this base.
+interpreted relative to this base.
 
 
+\item \hypertarget{chap:DWATloclistsbaseinlocationlist}{}
+A \DWATloclistsbaseDEFN{}\addtoindexx{location table base attribute} 
+attribute, whose value is of class \CLASSloclistsptr. 
+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.
 \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
@@ -451,8 +492,9 @@ of that compilation unit is not valid.
 When generating a \splitDWARFobjectfile{} (see 
 Section \refersec{datarep:splitdwarfobjectfiles}), the
 compilation unit in the \dotdebuginfo{} section is a "skeleton"
 When generating a \splitDWARFobjectfile{} (see 
 Section \refersec{datarep:splitdwarfobjectfiles}), the
 compilation unit in the \dotdebuginfo{} section is a "skeleton"
-compilation unit with the tag \DWTAGcompileunit, which contains 
-\DWATdwoname{} and \DWATdwoid{} attributes as well as a subset of the
+compilation unit with the tag 
+\DWTAGskeletonunitTARG, which contains a
+\DWATdwoname{} attribute as well as a subset of the
 attributes of a full or partial compilation unit. In general,
 it contains those attributes that are necessary for the consumer
 to locate the object file where the split full compilation unit
 attributes of a full or partial compilation unit. In general,
 it contains those attributes that are necessary for the consumer
 to locate the object file where the split full compilation unit
@@ -462,8 +504,7 @@ addresses in the program.
 
 A skeleton compilation unit has no children.
 
 
 A skeleton compilation unit has no children.
 
-A skeleton compilation unit has \DWATdwoname{} and 
-\DWATdwoid{} attributes:
+A skeleton compilation unit has a \DWATdwoname{} attribute:
 
 \begin{enumerate}[1. ]
 
 
 \begin{enumerate}[1. ]
 
@@ -476,22 +517,18 @@ path name (relative to the value of the \DWATcompdir{} attribute,
 see below) of the object file that contains the full
 compilation unit.
 
 see below) of the object file that contains the full
 compilation unit.
 
-\item \livetarg{chap:DWATdwoidforunit}{}
-A \DWATdwoidDEFN{} attribute\addtoindexx{unit identification attribute}
-whose implementation-defined integer constant value,
-known as the \CUsignature,
-provides unique identification of this compilation unit
-as well as the associated split compilation unit in the
-object file named in the \DWATdwoname{}
-attribute. For simplicity, the \DWATdwoidNAME{} attributes
-in the skeleton compilation unit and the corresponding
-split full compilation unit 
-(see Section \refersec{chap:splitfullcompilationunitentries})
-must use the same form to encode this identification value.
-
-\textit{The means of determining a \CUsignature{} does not 
-need to be similar or related to the means of determining a
-\TUsignature.}
+The value in the \HFNdwoid{} field of the unit header for 
+this unit is the same as the value in the \HFNdwoid{} field 
+of the unit header of the corresponding full compilation 
+unit (see Section \refersec{datarep:unitheaders}).
+        
+\textit{The means of determining a compilation unit ID does 
+not need to be similar or related to the means of 
+determining a \TUsignature. However, it should 
+be suitable for detecting file version skew or other 
+kinds of mismatched files and for looking up a full
+split unit in a DWARF package file 
+(see Section \refersec{datarep:dwarfpackagefiles}).}
 
 \end{enumerate}
 
 
 \end{enumerate}
 
@@ -499,7 +536,7 @@ A skeleton compilation unit may have additional attributes,
 which are the same as for conventional compilation unit entries 
 except as noted, from among the following:
 \begin{enumerate}[1. ]
 which are the same as for conventional compilation unit entries 
 except as noted, from among the following:
 \begin{enumerate}[1. ]
-\addtocounter{enumi}{2}
+\addtocounter{enumi}{1}
 \item Either a \DWATlowpc{} and \DWAThighpc{} pair of attributes
 or a \DWATranges{} attribute.
 \item A \DWATstmtlist{} attribute.
 \item Either a \DWATlowpc{} and \DWAThighpc{} pair of attributes
 or a \DWATranges{} attribute.
 \item A \DWATstmtlist{} attribute.
@@ -519,22 +556,19 @@ of a \DWATuseUTFeight{} attribute in the full compilation unit
 \item A \DWATstroffsetsbase{} attribute, for indirect strings references 
 from the skeleton compilation unit.
 \item A \DWATaddrbase{} attribute.
 \item A \DWATstroffsetsbase{} attribute, for indirect strings references 
 from the skeleton compilation unit.
 \item A \DWATaddrbase{} attribute.
-\item A \DWATrangesbase{} attribute.
 
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
 
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
-in Section \refersec{chap:fullandpartialcompilationunitentries}) 
-should be placed in the split full compilation unit
+in Section \refersec{chap:fullandpartialcompilationunitentries})
+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
 (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, except for \DWATdwoid, which should appear in
-both entries so that the consumer can verify that it has
-found the correct object file.
+unit entry.
 
 
-\textit{The \DWATaddrbase{}, \DWATrangesbase{} and 
-\DWATstroffsetsbase{} attributes provide context that may be 
+\textit{The \DWATaddrbase{} 
+and \DWATstroffsetsbase{} attributes provide context that may be 
 necessary to interpret the contents
 of the corresponding \splitDWARFobjectfile.}
 
 necessary to interpret the contents
 of the corresponding \splitDWARFobjectfile.}
 
@@ -550,27 +584,11 @@ It is very similar to a conventional full compilation unit but
 is logically paired with a specific skeleton compilation unit while
 being physically separate.
 
 is logically paired with a specific skeleton compilation unit while
 being physically separate.
 
-A split full compilation unit has a \DWATdwoid{} attribute:
-\begin{enumerate}[1. ]
-\item
-A \DWATdwoidDEFN{} attribute\addtoindexx{unit identification attribute}
-whose implementation-defined integer constant value,
-known as the \CUsignature,
-provides unique identification of this compilation unit
-as well as the associated skeleton compilation unit.
-For simplicity, the \DWATdwoidNAME{} attributes in the 
-split compilation unit and the associated skeleton 
-compilation unit must use the same form to encode the 
-identification value.
-
-\end{enumerate}
-
-\needlines{4}
-A split full compilation unit may also have additional attributes, 
+A split full compilation unit 
+may have the following attributes, 
 which are the same as for conventional compilation unit entries 
 which are the same as for conventional compilation unit entries 
-except as noted, from among the following:
+except as noted:
 \begin{enumerate}[1. ]
 \begin{enumerate}[1. ]
-\addtocounter{enumi}{1}
 \item A \DWATname{} attribute.
 \item A \DWATlanguage{} attribute.
 \item A \DWATmacros{} attribute.
 \item A \DWATname{} attribute.
 \item A \DWATlanguage{} attribute.
 \item A \DWATmacros{} attribute.
@@ -590,7 +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 
-\DWATrangesbase.}
+\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.}
@@ -618,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
@@ -666,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}
@@ -684,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
@@ -717,6 +737,7 @@ left in the main compilation unit.}
 entities into a single entity and to manage the names of
 those entities.}
 
 entities into a single entity and to manage the names of
 those entities.}
 
+\needlines{8}
 \subsection{Module Entries}
 \label{chap:moduleentries}
 \textit{Several languages have the concept of a \doublequote{module.}
 \subsection{Module Entries}
 \label{chap:moduleentries}
 \textit{Several languages have the concept of a \doublequote{module.}
@@ -746,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{} 
@@ -857,7 +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).
-}
+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.}
 
 \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
@@ -882,6 +908,7 @@ making accessible in a given unit certain declarations that occur
 in a different module or scope. An imported declaration may 
 sometimes be given another name.}
 
 in a different module or scope. An imported declaration may 
 sometimes be given another name.}
 
+\needlines{6}
 An imported declaration is represented by one or
 \addtoindexx{imported declaration entry}
 more debugging information entries with the 
 An imported declaration is represented by one or
 \addtoindexx{imported declaration entry}
 more debugging information entries with the 
@@ -1011,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
@@ -1032,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.
@@ -1080,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 
@@ -1087,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}
@@ -1223,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
@@ -1273,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 
@@ -1461,17 +1491,20 @@ 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 should obey the following
-constraints:
+\DWATframebase{} attribute value obeys the following constraints:
 
 \begin{enumerate}[1. ]
 
 \begin{enumerate}[1. ]
-\item It should compute a value that does not change during the
+\item 
+It computes a value that does not change during the
 life of the subprogram, and
 
 life of the subprogram, and
 
-\item The computed value should be unique among instances of
-the same subroutine. (For typical \DWATframebase{} use, this
+\item The computed value is unique among instances of
+the same subroutine. 
+
+\textit{For typical \DWATframebase{} use, this
 means that a recursive subroutine\textquoteright s stack frame must have
 means that a recursive subroutine\textquoteright s stack frame must have
-non-zero size.)
+non-zero size.}
+
 \end{enumerate}
 
 \textit{If a debugger is attempting to resolve an up\dash level reference
 \end{enumerate}
 
 \textit{If a debugger is attempting to resolve an up\dash level reference
@@ -1563,7 +1596,7 @@ that was expanded inline implicitly by the compiler has a
 set of values for the \DWATinline{} attribute is given in
 Table \refersec{tab:inlinecodes}.
 
 set of values for the \DWATinline{} attribute is given in
 Table \refersec{tab:inlinecodes}.
 
-\begin{table}[h]
+\begin{table}[ht]
 \centering
 \caption{Inline codes}
 \label{tab:inlinecodes}
 \centering
 \caption{Inline codes}
 \label{tab:inlinecodes}
@@ -1613,6 +1646,7 @@ nested within another abstract instance tree, the entries in the
 tree are not considered to be entries in the outer abstract
 instance tree.
 
 tree are not considered to be entries in the outer abstract
 instance tree.
 
+\needlines{6}
 Each abstract instance root is either part of a larger
 \addtoindexx{abstract instance!root}
 tree (which gives a context for the root) or 
 Each abstract instance root is either part of a larger
 \addtoindexx{abstract instance!root}
 tree (which gives a context for the root) or 
@@ -1631,36 +1665,23 @@ 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 should not contain any attributes which describe
+instance tree may not contain any attributes which describe
 aspects of the subroutine which vary between distinct inlined
 aspects of the subroutine which vary between distinct inlined
-expansions or distinct out-of-line expansions. For example,
+expansions or distinct out-of-line expansions. 
+
+\textit{For example,
 \addtoindexx{entry pc attribute!and abstract instance}
 \addtoindexx{entry pc attribute!and abstract instance}
-the \DWATlowpc,
-\DWAThighpc, 
-\DWATranges, 
-\DWATentrypc, 
-\DWATlocation,
-\DWATreturnaddr, 
-\DWATstartscope, 
+the \DWATlowpc,\addtoindexx{low PC attribute!and abstract instance}
+\DWAThighpc,\addtoindexx{high PC attribute!and abstract instance} 
+\DWATranges,\addtoindexx{ranges attribute!and abstract instance} 
+\DWATentrypc,\addtoindexx{entry PC attribute!and abstract instance} 
+\DWATlocation,\addtoindexx{location attribute!and abstract instance}
+\DWATreturnaddr,\addtoindexx{return address attribute!and abstract instance} 
+\DWATstartscope,\addtoindexx{start scope attribute!and abstract instance} 
 and 
 and 
-\DWATsegment{}
-attributes 
-\addtoindexx{location attribute!and abstract instance}
-typically 
-\addtoindexx{ranges attribute!and abstract instance}
-should 
-\addtoindexx{high PC attribute!and abstract instance}
-be 
-\addtoindexx{low PC attribute!and abstract instance}
-omitted; 
-\addtoindexx{segment attribute!and abstract instance}
-however, 
-\addtoindexx{return address attribute!and abstract instance}
-this 
-\addtoindexx{segment attribute!and abstract instance}
-list
-\addtoindexx{start scope attribute!and abstract instance}
-is not exhaustive.
+\DWATsegment{}\addtoindexx{segment attribute!and abstract instance}
+attributes typically should be omitted; however, this list is not 
+exhaustive.}
 
 \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
@@ -1686,8 +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 should 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.
 
@@ -1758,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
@@ -1806,7 +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 should 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
@@ -1842,7 +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 should refer 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
@@ -1865,7 +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, should 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
@@ -2045,11 +2066,8 @@ a trampoline will result in stepping into or setting the
 breakpoint in the target subroutine instead. This helps to
 hide the compiler generated subprogram from the user. }
 
 breakpoint in the target subroutine instead. This helps to
 hide the compiler generated subprogram from the user. }
 
-\bb
 \section{Call Site Entries and Parameters}
 \section{Call Site Entries and Parameters}
-\eb
 \label{chap:callsiteentriesandparameters}
 \label{chap:callsiteentriesandparameters}
-\bb
 \textit{
 A call site entry describes a call from one subprogram to another in the
 source program. It provides information about the actual parameters of
 \textit{
 A call site entry describes a call from one subprogram to another in the
 source program. It provides information about the actual parameters of
@@ -2068,33 +2086,30 @@ call is executed. After the called subprogram has been entered, these
 registers and memory locations might have been modified.  In order to
 recover the values that existed at the point of the call (to allow
 evaluation of the DWARF expression for the actual parameter), a debugger
 registers and memory locations might have been modified.  In order to
 recover the values that existed at the point of the call (to allow
 evaluation of the DWARF expression for the actual parameter), a debugger
-may "virtually unwind" the subprogram activation 
+may virtually unwind the subprogram activation 
 (see Section \refersec{chap:callframeinformation}). Any
 register or memory location that cannot be recovered is referred to as
 "clobbered by the call."}
 (see Section \refersec{chap:callframeinformation}). Any
 register or memory location that cannot be recovered is referred to as
 "clobbered by the call."}
-\eb
-
-\bbpareb
 
 A source call can be compiled into different types of machine code:
 \begin{itemize}
 \item
 A \textit{normal call} uses a call-like instruction which transfers 
 control to the start of some subprogram and preserves the call site 
 
 A source call can be compiled into different types of machine code:
 \begin{itemize}
 \item
 A \textit{normal call} uses a call-like instruction which transfers 
 control to the start of some subprogram and preserves the call site 
-\bb
 location for use by the callee.
 location for use by the callee.
-\eb  
+
 \item
 A \textit{tail call} uses a jump-like instruction which
 transfers control to the start of some subprogram, but 
 \item
 A \textit{tail call} uses a jump-like instruction which
 transfers control to the start of some subprogram, but 
-\bb
 there is no call site location address to preserve
 there is no call site location address to preserve
-(and thus none is available using the unwind information). 
-\eb 
+(and thus none is available using the 
+virtual unwind information). 
+
 \item
 A \textit{tail recursion call} is a call
 to the current subroutine which is compiled as a jump 
 to the current subroutine.
 \item
 A \textit{tail recursion call} is a call
 to the current subroutine which is compiled as a jump 
 to the current subroutine.
+
 \needlines{4}
 \item
 An \textit{inline (or inlined) call} is a call to an inlined subprogram,
 \needlines{4}
 \item
 An \textit{inline (or inlined) call} is a call to an inlined subprogram,
@@ -2119,11 +2134,8 @@ instructions are given a location in the caller.
 \DWTAGcallsite{} entries describe normal and tail calls but not tail recursion calls,
 while \DWTAGinlinedsubroutine{} entries describe inlined calls 
 (see Section \refersec{chap:inlinedsubroutines}).
 \DWTAGcallsite{} entries describe normal and tail calls but not tail recursion calls,
 while \DWTAGinlinedsubroutine{} entries describe inlined calls 
 (see Section \refersec{chap:inlinedsubroutines}).
-\bb
 Call site entries cannot describe tail recursion or optimized out calls.
 Call site entries cannot describe tail recursion or optimized out calls.
-\eb
 
 
-\bb
 \subsection{Call Site Entries}
 \label{chap:callsiteentries}
 A call site is represented by a debugging information entry with the tag
 \subsection{Call Site Entries}
 \label{chap:callsiteentries}
 A call site is represented by a debugging information entry with the tag
@@ -2137,7 +2149,6 @@ call is present in the source program.
 otherwise be present in the debugging information of a subroutine
 need not be introduced solely to represent the immediately containing scope
 of a call.}
 otherwise be present in the debugging information of a subroutine
 need not be introduced solely to represent the immediately containing scope
 of a call.}
-\eb
 
 The call site entry may have a
 \DWATcallreturnpcDEFN{}\addtoindexx{call site return pc attribute}
 
 The call site entry may have a
 \DWATcallreturnpcDEFN{}\addtoindexx{call site return pc attribute}
@@ -2154,12 +2165,10 @@ be an address after the delay slot of the call.}
 
 The call site entry may have a 
 \DWATcallpcDEFN{}\addtoindexx{call pc attribute}
 
 The call site entry may have a 
 \DWATcallpcDEFN{}\addtoindexx{call pc attribute}
-\livetargi{chap:DWATcallpcofcallsite}{attribute}{call pc attribute} which is the
-address of the 
-\bb
+\livetargi{chap:DWATcallpcofcallsite}{attribute}{call pc attribute} 
+which is the address of the 
 call-like instruction for a normal call or the jump-like 
 instruction for a tail call.
 call-like instruction for a normal call or the jump-like 
 instruction for a tail call.
-\eb 
 
 If the call site entry corresponds to a tail call, it has the 
 \DWATcalltailcallDEFN{}\addtoindexx{call tail call attribute}
 
 If the call site entry corresponds to a tail call, it has the 
 \DWATcalltailcallDEFN{}\addtoindexx{call tail call attribute}
@@ -2181,8 +2190,10 @@ The call site may have a
 \livetargi{chap:DWATcalltargetofcallsite}{attribute}{call target attribute} which is
 a DWARF expression.  For indirect calls or jumps where it is unknown at
 compile time which subprogram will be called the expression computes the
 \livetargi{chap:DWATcalltargetofcallsite}{attribute}{call target attribute} which is
 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.  The DWARF expression should
-not use register or memory locations that might be clobbered by the call.
+address of the subprogram that will be called.  
+
+\textit{The DWARF expression should
+not use register or memory locations that might be clobbered by the call.}
 
 \needlines{4}
 The call site entry may have a 
 
 \needlines{4}
 The call site entry may have a 
@@ -2217,26 +2228,24 @@ interpreted in the same way as the declaration file, declaration
 line, and declaration column attributes, respectively 
 (see Section \refersec{chap:declarationcoordinates}).
 
 line, and declaration column attributes, respectively 
 (see Section \refersec{chap:declarationcoordinates}).
 
-\textit{The call file, call line and call column coordinates do not describe the
-coordinates of the subroutine declaration that was called, rather they describe
-the coordinates of the call.}
+\textit{The call file, call line and call column coordinates do 
+not describe the coordinates of the subroutine declaration that 
+was called, rather they describe the coordinates of the call.}
 
 \needlines{5}
 
 \needlines{5}
-\bb
 \subsection{Call Site Parameters}
 \subsection{Call Site Parameters}
-\eb
 \label{chap:callsiteparameters}
 The call site entry may own 
 \DWTAGcallsiteparameterTARG{}\index{call site parameter entry} 
 \label{chap:callsiteparameters}
 The call site entry may own 
 \DWTAGcallsiteparameterTARG{}\index{call site parameter entry} 
-debugging information entries representing the parameters passed to the call.
-\bb
-Call site parameter entries occur in the same order as the corresponding
-parameters in the source.
-\eb
-Each such entry has a \DWATlocation{} attribute which is a location expression.
-This location expression describes where the parameter is passed
-(usually either some register, or a memory location expressible as the
-contents of the stack register plus some offset).
+debugging information entries representing the parameters passed 
+to the call.
+Call site parameter entries occur in the same order as the 
+corresponding parameters in the source.
+Each such entry has a \DWATlocation{} attribute which is a location 
+description. This location description 
+describes where the parameter is passed
+(usually either some register, or a memory location expressible as 
+the contents of the stack register plus some offset).
 
 \needlines{4}
 Each \DWTAGcallsiteparameter{} entry may have a 
 
 \needlines{4}
 Each \DWTAGcallsiteparameter{} entry may have a 
@@ -2245,14 +2254,10 @@ 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{The expression should not use registers or memory
-locations that might be clobbered by the call, as it might be evaluated after
-unwinding from the called function back to the caller.  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
 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.}
-
-\textit{The reason for the restriction is that the value of the parameter may be
+not be provided. The reason for the restriction is that the value of the parameter may be
 needed in the midst of the callee, where the call clobbered registers or
 memory might be already clobbered, and if the consumer is not assured by
 the producer it can safely use those values, the consumer can not safely
 needed in the midst of the callee, where the call clobbered registers or
 memory might be already clobbered, and if the consumer is not assured by
 the producer it can safely use those values, the consumer can not safely
@@ -2261,19 +2266,19 @@ use the values at all.}
 For parameters passed by reference, where the code passes a pointer to
 a location which contains the parameter, or for reference type parameters,
 the \DWTAGcallsiteparameter{} entry may also have a
 For parameters passed by reference, where the code passes a pointer to
 a location which contains the parameter, or for reference type parameters,
 the \DWTAGcallsiteparameter{} entry may also have a
-\DWATcalldatalocationNAME{}\addtoindexx{call data location attribute}
+\DWATcalldatalocationDEFN{}\addtoindexx{call data location attribute}
 \livetargi{chap:DWATcalldatalocationofcallparameter}{attribute}{call data location attribute}
 \livetargi{chap:DWATcalldatalocationofcallparameter}{attribute}{call data location attribute}
-whose value is a location expression and a
-\DWATcalldatavalueNAME{}\addtoindexx{call data value attribute}
+whose value is a location description and a
+\DWATcalldatavalueDEFN{}\addtoindexx{call data value attribute}
 \livetargi{chap:DWATcalldatavalueofcallparameter}{attribute}{call data value attribute}
 \livetargi{chap:DWATcalldatavalueofcallparameter}{attribute}{call data value attribute}
-whose value is a DWARF expression.  The \DWATcalldatalocationDEFN{} attribute
+whose value is a DWARF expression.  The \DWATcalldatalocationNAME{} attribute
 \addtoindexx{call data location attribute} 
 describes where the referenced value lives during the call.  If it is just 
 \DWOPpushobjectaddress{}, it may be left out.  The 
 \DWATcalldatavalueNAME{} attribute describes the value in that location. 
 The expression should not use registers or memory
 \addtoindexx{call data location attribute} 
 describes where the referenced value lives during the call.  If it is just 
 \DWOPpushobjectaddress{}, it may be left out.  The 
 \DWATcalldatavalueNAME{} attribute describes the value in that location. 
 The expression should not use registers or memory
-locations that might be clobbered by the call, as it might be evaluated after
-unwinding from the called function back to the caller.
+locations that might be clobbered by the call, as it might be evaluated after 
+virtually unwinding from the called function back to the caller.
 
 \needlines{4}
 Each call site parameter entry may also have a 
 
 \needlines{4}
 Each call site parameter entry may also have a 
@@ -2346,7 +2351,7 @@ within that lexical \nolink{block}. There is
 one such debugging information entry for each local declaration
 of an identifier or inner lexical \nolink{block}.
 
 one such debugging information entry for each local declaration
 of an identifier or inner lexical \nolink{block}.
 
-\needlines{10}
+\needlines{8}
 \section{Label Entries}
 \label{chap:labelentries}
 \textit{A label is a way of identifying a source location.
 \section{Label Entries}
 \label{chap:labelentries}
 \textit{A label is a way of identifying a source location.
@@ -2355,9 +2360,8 @@ A labeled statement is usually the target of one or more
 
 \needlines{4}
 A label is represented by a debugging information entry with
 
 \needlines{4}
 A label is represented by a debugging information entry with
-\addtoindexx{label entry}
-the tag \DWTAGlabelTARG. 
-The entry for a label should be owned by
+\addtoindexx{label entry} the tag \DWTAGlabelTARG. 
+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.
@@ -2477,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}{}
@@ -2510,13 +2514,14 @@ scope is non-contiguous
 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
 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 selection entry, 
-a default selection entry or an end-of-list entry.
+for the containing scope that is not a base 
+address entry, a default location
+entry or an end-of-list entry.
 \end{enumerate}
 
 \needlines{4}
 \item Otherwise, the set of addresses for the scope of the 
 \end{enumerate}
 
 \needlines{4}
 \item Otherwise, the set of addresses for the scope of the 
-entity is specified using a value of class \CLASSrangelistptr{}. 
+entity is specified using a value of class \CLASSrnglistsptr{}. 
 This value indicates the beginning of a \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges}).
 \end{enumerate}
 This value indicates the beginning of a \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges}).
 \end{enumerate}
@@ -2526,10 +2531,12 @@ in the midst of a lexical \livelink{chap:lexicalblock}{block} in a
 language that allows executable code in a
 \nolink{block} before a variable declaration, or where one declaration
 containing initialization code may change the scope of a
 language that allows executable code in a
 \nolink{block} before a variable declaration, or where one declaration
 containing initialization code may change the scope of a
-subsequent declaration.  Consider the following example \addtoindex{C} code:}
+subsequent declaration.}  
 
 
-\vspace{3mm}
-\begin{lstlisting}
+\needlines{4}
+\textit{Consider the following example \addtoindex{C} code:}
+\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()
 {
@@ -2537,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