Working update reflecting many changes based on full
authorRon Brender <ron.brender@gmail.com>
Thu, 23 Apr 2015 22:14:01 +0000 (18:14 -0400)
committerRon Brender <ron.brender@gmail.com>
Thu, 23 Apr 2015 22:14:01 +0000 (18:14 -0400)
Committee review comments. This is not for a document
version that will be distributed--many comments remain.
But the comments have been thorough and the changes
many so this seems like generally a good idea.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
18 files changed:
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/copyright.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/debugsectionrelationships.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/dwarfnamecmds.tex
dwarf5/latexdoc/encodingdecoding.tex
dwarf5/latexdoc/foreword.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/gnulicense.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/splitobjects.tex
dwarf5/latexdoc/typeentries.tex

index a172b03..8439db8 100644 (file)
@@ -82,7 +82,7 @@ means include all three of the
 &\DWATallocated{} \\
 &\DWATassociated{} \\
 &\DWATbinaryscale{} \\
-&\DWATbitoffset{} \\
+%&\DWATbitoffset{} \\
 &\DWATbitsize{} \\
 &\DWATbytesize{} \\
 &\DWATdatabitoffset{} \\
@@ -418,8 +418,9 @@ means include all three of the
 &\DWATaccessibility{} \\*
 &\DWATalignment{} \\*
 &\DWATdescription{} \\
-&\DWATname{} \\*
+&\DWATname{} \\
 &\DWATsibling{} \\*
+&\DWATsignature \\*
 &\DWATstartscope{} \\*
 
 \hline
@@ -430,8 +431,8 @@ means include all three of the
 &\DWATlowpc{} \\
 &\DWATname{} \\
 &\DWATsegment{} \\
-&\DWATstartscope{} \\
 &\DWATsibling{} \\
+&\DWATstartscope{} \\
 
 \hline
 \DWTAGlexicalblock
@@ -451,7 +452,7 @@ means include all three of the
 &\livelink{chap:DECL}{DECL} \\
 &\DWATaccessibility{} \\
 &\DWATartificial{} \\
-&\DWATbitoffset{} \\
+%&\DWATbitoffset{} \\
 &\DWATbitsize{} \\
 &\DWATbytesize{} \\
 &\DWATdatabitoffset{} \\
index 7f1df95..094e578 100644 (file)
@@ -15,9 +15,11 @@ This change summary is included only in draft versions of this document.
 \begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \endhead
+4/4-23/2015     & Editorial changes from Committee review \\
 3/3/2015        & 150108.1 (accelerated access) \\
 3/1/2015        & 141215.2 (deleted member functions), 141215.3 (defaulted member functions) \\
-1/24/2015       & 141215.1 (calling convention codes for types), 141215.4 (DW\_FORM\_implicit\_const) \\
+1/24/2015       & 141215.1 (calling convention codes for types), \\
+                & 141215.4 (DW\_FORM\_implicit\_const) \\
 12/28/2014      & 141121.1 (Fortran language codes), 141212.1 (inline/export symbols), \\
                 & Editorial cleanups \& corrections \\
 11/20/2014      & Editorial corrections for 100831.1 and 110722.1 \\
@@ -55,7 +57,8 @@ This change summary is included only in draft versions of this document.
 10/26/2013     & 130313.1 (indirect string table), 130313.2 (indirect address table),  \\
                & 130313.3 (ranges without relocations), 130313.4 (split objects) \\
 10/25/2013     & 130530.1 (MD5 wording), 131017.1 (\DWATentrypcNAME{} descriptions),   \\
-               & 130701.1 (MD5 digest for filenames in line number table), 100831.1 (implicit pointers)        \\
+               & 130701.1 (MD5 digest for filenames in line number table), \\
+                & 100831.1 (implicit pointers) \\
 10/24/2013     & 130815.1 (template parameter refactoring)                                     \\
 10/23/2013     & 130722.1 (additional \DWATartificialNAME{} uses in Appendix A), \\
                & 120719.1 (constant \DWATentrypcNAME{} value),                                 \\
index bf3463b..b328bae 100644 (file)
@@ -144,23 +144,22 @@ linker (outside of DWARF itself, and normal object/linker
 facilities such as simple relocations) are:
 \begin{enumerate}[1. ]
 
-\item A means of referencing from inside one \dotdebuginfo{}
-compilation unit to another 
-\dotdebuginfo{} compilation unit
-(\DWFORMrefaddr{} provides this).
+\item A means to reference the \dotdebuginfo{} information 
+of one compilation unit from the \dotdebuginfo{} section of 
+another compilation unit (\DWFORMrefaddr{} provides this).
 
-\item A means of having multiple contributions to specific sections
-(for example, \dotdebuginfo{}, and so on) in a single object file.
+\item A means to combine multiple contributions to specific sections
+(for example, \dotdebuginfo{}) into a single object file.
 
-\item  A means of identifying a \addtoindex{section group} (giving it a name).
+\item  A means to identify a \addtoindex{section group} 
+(giving it a name).
 
-\item A means of identifying which sections go together to make
-up a \addtoindex{section group}, 
-so that the group can be treated as a unit
-(kept or discarded).
+\item A means to indicate which sections go together to make
+up a \addtoindex{section group}, so that the group can be 
+treated as a unit (kept or discarded).
 
-\item  A means of indicating how each \addtoindex{section group} should be
-processed by the linker.
+\item  A means to indicate how each \addtoindex{section group} 
+should be processed by the linker.
 
 \end{enumerate}
 
@@ -259,7 +258,7 @@ above is given the name \texttt{my.compiler.company.cpp.wa.h.123456}.
 
 Global labels for 
 \addtoindexx{debugging information entry!ownership relation}
-debugging information entries (need explained
+debugging information entries (the need for which is explained
 below) within a \addtoindex{section group}
 can be given names of the form
 
@@ -550,6 +549,27 @@ globally visible (in accordance with
 \DWTAGpartialunit{} 
 is not needed for the same reason.
 
+\needlines{6}
+\subsubsection{C Example}
+
+The \addtoindex{C++} example 
+\addtoindexx{DWARF duplicate elimination!examples}
+in this Section might appear to be equally
+valid as a \addtoindex{C} example. However, for \addtoindex{C} 
+it is prudent to include a \DWTAGimportedunit{}
+in the primary unit 
+(see Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit})
+as well as an \DWATimport{} attribute that refers to the proper unit
+in the \addtoindex{section group}.
+
+\needlines{4}
+\textit{The \addtoindex{C} rules for consistency of global (file scope) symbols
+across compilations are less strict than for \addtoindex{C++}; inclusion
+of the import unit attribute assures that the declarations of
+the proper \addtoindex{section group} are considered before declarations
+from other compilations.}
+
+
 \subsubsection{Fortran Example}
 
 
@@ -558,7 +578,7 @@ For a \addtoindex{Fortran}
 example, consider 
 Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
-\begin{figure}
+\begin{figure}[h]
 \textit{File CommonStuff.f\hspace{1pt}h}
 \addtoindexx{Fortran}
 \begin{lstlisting}[numbers=none]
@@ -722,26 +742,6 @@ because the included declarations are not independently
 visible as global entities.
 
 
-\needlines{6}
-\subsubsection{C++ Example}
-
-The \addtoindex{C++} example 
-\addtoindexx{DWARF duplicate elimination!examples}
-in this Section might appear to be equally
-valid as a \addtoindex{C} example. However, it is prudent to include
-a \DWTAGimportedunit{}
-in the primary unit 
-(see Figure \refersec{fig:duplicateeliminationexample1primarycompilationunit})
-with an \DWATimport{} attribute that refers to the proper unit
-in the \addtoindex{section group}.
-
-\textit{The \addtoindex{C} rules for consistency of global (file scope) symbols
-across compilations are less strict than for \addtoindexx{C++}; inclusion
-of the import unit attribute assures that the declarations of
-the proper \addtoindex{section group} are considered before declarations
-from other compilations.}
-
-
 \section{Using Type Units}
 \label{app:usingtypeunits}
 
index 4f424cf..ba6a218 100644 (file)
@@ -7,7 +7,7 @@
 \begin{center}
 \dwf, Version 5
 
-Copyright\copyright 2005, 2010, 2015 \dwf\ Committee
+Copyright~\copyright~2005, 2010, 2015 \dwf\ Committee
 \end{center}
 
 \vspace{4ex}
@@ -30,7 +30,7 @@ Programming Languages SIG
 
 Revision: 2.0.0 (July 27, 1993)
 
-Copyright \copyright 1992, 1993 UNIX International, Inc.
+Copyright \copyright~1992, 1993 UNIX International, Inc.
 
 Permission to use, copy, modify, and distribute this
 documentation for any purpose and without fee is hereby
index f5b86b4..b9bdce4 100644 (file)
@@ -4,8 +4,8 @@
 This section presents the debugging information entries that
 describe individual data objects: variables, parameters and
 constants, and lists of those objects that may be grouped in
-a single declaration, such as 
-a common \livelink{chap:commonblockentry}{block}.
+a single declaration, such as 
+\livelink{chap:commonblockentry}{common block}.
 
 \section{Data Object Entries}
 \label{chap:dataobjectentries}
@@ -28,13 +28,13 @@ formal parameter or constant may have the following attributes:
 \begin{enumerate}[1. ]
 \item A \DWATname{} attribute,
 \addtoindexx{name attribute}
-whose value is a null-terminated
-string, containing the data object name as it appears in the
+whose value of class \CLASSstring{} describes a null-terminated
+string for the data object name as it appears in the
 source program.
 
 If a variable entry describes an 
 \addtoindex{anonymous union},
-the name attribute is omitted or consists of a single
+the name attribute is omitted or its value describes a single
 zero byte.
 
 \item A \DWATexternal{} attribute, 
@@ -194,7 +194,7 @@ is non-contiguous
 the value of this
 attribute is the offset in bytes of the beginning of the scope
 for the object from the beginning of the first \addtoindex{range list} entry
-that is not a base selection entry, a default selection entry or an end of list entry.
+that is not a base selection entry, a default selection entry or an end-of-list entry.
 
 \needlines{4}
 \item Otherwise, the scope of the object is specified using
@@ -307,14 +307,15 @@ tag \DWTAGcommonblockTARG.
 The common \nolink{block} 
 entry has a \DWATname{} attribute 
 \addtoindexx{name attribute}
-whose value
-is a null-terminated string containing the 
-\livetargi{chap:commonblockreferenceattribute}{common}{common block reference attribute} \nolink{block}
+whose value of class \CLASSstring{} describes a null-terminated
+string for the
+\livetargi{chap:commonblockreferenceattribute}{common}{common block reference attribute} 
+\nolink{block}
 name as it appears in the source program. It may also have a
 \DWATlinkagename{} attribute as described in 
 Section \refersec{chap:linkagenames}. 
-It
-also has a \DWATlocation{} attribute
+
+A common block entry also has a \DWATlocation{} attribute
 \addtoindexx{location attribute}
 whose value describes the
 location of the beginning of the common \nolink{block}. 
@@ -323,6 +324,9 @@ The common
 \nolink{block} entry owns debugging information entries describing
 the variables contained within the common \nolink{block}.
 
+\textit{\addtoindex{Fortran} allows each declarer of a common block 
+to independently define its contents; thus, common blocks are not types.}
+
 \section{Namelist Entries}
 \label{chap:namelistentries}
 \textit{At least one language, Fortran 90, has the concept of a
@@ -337,8 +341,8 @@ tag \DWTAGnamelistTARG.
 If the namelist itself has a
 name, the namelist entry has a \DWATname{} attribute,
 \addtoindexx{name attribute}
-whose
-value is a null-terminated string containing the namelist\textquoteright s
+whose value of class \CLASSstring{} describes a null-terminated
+string for the namelist\textquoteright s
 name as it appears in the source program.
 
 Each 
index c3564da..d28f9a5 100644 (file)
@@ -23,15 +23,15 @@ The labels denoting the beginning and end of the reserved
 \hypertarget{chap:DWXXXlohiuser}{}
 value range for vendor specific extensions consist of the
 appropriate prefix 
-(\DWATlouserMARK{}\DWAThiuserMARK{}        DW\_AT,
+(\DWATlouserMARK{}\DWAThiuserMARK{}    DW\_AT,
 \DWATElouserMARK{}\DWATEhiuserMARK{}   DW\_ATE, 
-\DWCClouserMARK{}\DWCChiuserMARK{}         DW\_CC,
+\DWCClouserMARK{}\DWCChiuserMARK{}     DW\_CC,
 \DWCFAlouserMARK{}\DWCFAhiuserMARK{}   DW\_CFA 
 \DWENDlouserMARK{}\DWENDhiuserMARK{}   DW\_END, 
 \DWLANGlouserMARK{}\DWLANGhiuserMARK{}  DW\_LANG, 
 \DWLNElouserMARK{}\DWLNEhiuserMARK{}   DW\_LNE, 
 \DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
-\DWOPlouserMARK{}\DWOPhiuserMARK{}         DW\_OP or
+\DWOPlouserMARK{}\DWOPhiuserMARK{}     DW\_OP or
 \DWTAGlouserMARK{}\DWTAGhiuserMARK{}   DW\_TAG, 
 respectively) followed by
 \_lo\_user or \_hi\_user. 
@@ -410,11 +410,11 @@ a table of sizes. The index sections are aligned at 8-byte
 boundaries in the file.
 
 \needlines{6}
-The index section header contains four unsigned 32-bit values
-(using the byte order of the application binary):
+The index section header contains four unsigned 32-bit values:
+%(using the byte order of the application binary):
 \begin{itemize}
 \item The \addtoindexi{version number}{version number!package index tables}
- of the format of this index (currently 5)
+ of the format of this index (currently \versiondotdebugcuindex)
 \item L, the number of columns in the table of section offsets
 \item N, the number of compilation units or type units in the index
 \item M, the number of slots in the hash table
@@ -427,12 +427,14 @@ The size of the hash table, M, must be $2^k$ such that:
 
 The hash table begins at offset 16 in the section, and consists
 of an array of M 64-bit slots. Each slot contains a 64-bit
-signature (using the byte order of the application binary).
-
-The parallel table begins immediately after the hash table (at
-offset \mbox{16 + 8 * M} from the beginning of the section), and
-consists of an array of M 32-bit slots (using the byte order of
-the application binary), corresponding 1-1 with slots in the hash
+signature.
+% (using the byte order of the application binary).
+
+The parallel table of indices begins immediately after the hash table 
+(at offset \mbox{16 + 8 * M} from the beginning of the section), and
+consists of an array of M 32-bit slots,
+% (using the byte order of the application binary), 
+corresponding 1-1 with slots in the hash
 table. Each entry in the parallel table contains a row index into
 the tables of offsets and sizes.
 
@@ -466,7 +468,7 @@ The table is a two-dimensional array of 32-bit words (using the
 byte order of the application binary), with L columns and N+1
 rows, in row-major order. Each row in the array is indexed
 starting from 0. The first row provides a key to the columns:
-each column in this row provides an identifier for a debug
+each column in this row provides a section identifier for a debug
 section, and the offsets in the same column of subsequent rows
 refer to that section. The section identifiers are shown in
 Table \referfol{tab:dwarfpackagefilesectionidentifierencodings}.
@@ -486,7 +488,7 @@ Table \referfol{tab:dwarfpackagefilesectionidentifierencodings}.
   \hline
 \endlastfoot
 \DWSECTINFOTARG         & 1 & \dotdebuginfodwo \\
-\textit(reserved)       & 2 & \\
+\textit{Reserved}       & 2 & \\
 \DWSECTABBREVTARG       & 3 & \dotdebugabbrevdwo \\
 \DWSECTLINETARG         & 4 & \dotdebuglinedwo \\
 \DWSECTLOCTARG          & 5 & \dotdebuglocdwo \\
@@ -533,7 +535,7 @@ a number of DWARF debug information sections.  Both the supplementary object fil
 and all the executables or shared objects that reference entries or strings in that
 file must contain a \dotdebugsup{} section that establishes the relationship.
 
-The \dotdebugsup section contains:
+The \dotdebugsup{} section contains:
 \begin{enumerate}[1. ]
 \item \texttt{version} (uhalf) \\
 \addttindexx{version}
@@ -577,8 +579,8 @@ or shared objects expects.
 Debug information entries that refer to an executable's or shared
 object's addresses must \emph{not} be moved to supplementary files (the
 addesses will likely not be the same). Similarly,
-entries referenced from within locationexpressions or using loclistptr
-form attributes must not be moved.
+entries referenced from within location expressions or using loclistptr
+form attributes must not be moved to a supplementary object file.
 
 Executable or shared object compilation units can use
 \DWTAGimportedunit{} with \DWFORMrefsup{} form \DWATimport{} attribute
@@ -592,8 +594,8 @@ refer to the local sections in the supplementary object file.
 
 In macro information, \DWMACROdefineindirectsup{} or
 \DWMACROundefindirectsup{} opcodes can refer to strings in the 
-\dotdebugstr section of the supplementary file, or \DWMACROtransparentincludesup{} 
-can refer to \dotdebugmacro section entries.  Within the 
+\dotdebugstr{} section of the supplementary file, or \DWMACROtransparentincludesup{} 
+can refer to \dotdebugmacro{} section entries.  Within the 
 \dotdebugmacro{} section of a \addtoindex{supplementary object file}, 
 \DWMACROdefineindirect{} and \DWMACROundefindirect{}
 opcodes refer to the local \dotdebugstr{} section, not the one in
@@ -918,7 +920,7 @@ The value in this field is \versiondotdebuginfo.
 \addttindexx{unit\_type}
 A 1-byte unsigned integer identifying this unit as a type unit.
 The value of this field is \DWUTtype{} for a type unit
-(see Section \refersec{chap:separatetypeunitentries}).
+(see Section \refersec{chap:typeunitentries}).
 
 \textit{This field is new in \DWARFVersionV.}
 
@@ -936,7 +938,7 @@ in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \needlines{4}
-\item \texttt{address\_size} (addtoindex{ubyte}) \\
+\item \texttt{address\_size} (\addtoindex{ubyte}) \\
 \addttindexx{address\_size}
 A 1\dash byte unsigned integer representing the size 
 \addtoindexx{size of an address}
@@ -1645,10 +1647,14 @@ Table \refersec{tab:attributeformencodings}.
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
             \addtoindexx{byte size attribute} \\
-\DWATbitoffset&0x0c&\livelink{chap:classconstant}{constant}, 
+\textit{Reserved}&0x0c\footnote{Code 0x0c is reserved to allow backward compatible support of the 
+                                       DW\_AT\_bit\_offset \mbox{attribute} which was 
+                                       defined in \DWARFVersionIII{} and earlier.}
+       &\livelink{chap:classconstant}{constant}, 
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}
-            \addtoindexx{bit offset attribute (Version 3)}  \\
+            \addtoindexx{bit offset attribute (Version 3)}
+            \addtoindexx{DW\_AT\_bit\_offset (deprecated)}  \\
 \DWATbitsize&0x0d&\livelink{chap:classconstant}{constant}, 
         \livelink{chap:classexprloc}{exprloc}, 
         \livelink{chap:classreference}{reference}   
@@ -1873,21 +1879,21 @@ Table \refersec{tab:attributeformencodings}.
                \livelinki{chap:classstring}{stroffsetsptr}{stroffsetsptr class}
             \addtoindexx{string offsets base!encoding} \\
 \DWATaddrbase~\ddag &0x73&
-               \livelinki{chap:DWATaddrbase}{addrptr}{addrptr class}
+               \livelinki{chap:classaddrptr}{addrptr}{addrptr class}
             \addtoindexx{address table base!encoding} \\
 \DWATrangesbase~\ddag&0x74&
-               \livelinki{chap:DWATrangesbase}{rangelistptr}{rangelistptr class}
+               \livelinki{chap:classrangelistptr}{rangelistptr}{rangelistptr class}
             \addtoindexx{ranges base!encoding} \\
 \DWATdwoid~\ddag &0x75&
-               \livelink{chap:DWATdwoid}{constant}
+               \livelink{chap:classconstant}{constant}
             \addtoindexx{split DWARF object id!encoding} \\
 \DWATdwoname~\ddag &0x76&
-               \livelink{chap:DWATdwoname}{string}
+               \livelink{chap:classstring}{string}
             \addtoindexx{split DWARF object file name!encoding} \\
 \DWATreference~\ddag &0x77&
-        \livelink{chap:DWATreference}{flag} \\
+        \livelink{chap:classflag}{flag} \\
 \DWATrvaluereference~\ddag &0x78&
-        \livelink{chap:DWATrvaluereference}{flag} \\
+        \livelink{chap:classflag}{flag} \\
 \DWATmacros~\ddag &0x79&\livelink{chap:classmacptr}{macptr} 
         \addtoindexx{macro information attribute}  \\
 \DWATcallallcalls~\ddag &0x7a&\CLASSflag
@@ -2247,8 +2253,8 @@ location of a variable or other entity.
 
 Each entry in a \addtoindex{location list} is either a location list entry,
 a base address selection entry, or an 
-\addtoindexx{end of list entry!in location list}
-end of list entry.
+\addtoindexx{end-of-list entry!in location list}
+end-of-list entry.
 
 \needlines{6}
 \subsubsection{Location List Entries in Non-Split Objects}
@@ -2260,8 +2266,8 @@ are the same size as an address on the target machine.
 
 \needlines{5}
 A base address selection entry and an 
-\addtoindexx{end of list entry!in location list}
-end of list entry each
+\addtoindexx{end-of-list entry!in location list}
+end-of-list entry each
 consist of two (constant or relocated) address offsets. The two
 offsets are the same size as an address on the target machine.
 
@@ -2777,7 +2783,7 @@ rounded up to a multiple of 4.
 \item \texttt{augmentation\_string} (sequence of characters) \\
 A vendor-specific augmentation string, which provides additional 
 information about the contents of this index. If provided, the string
-should begin with a 4-byte vendor ID. The remainder of the
+should begin with a 4-character vendor ID. The remainder of the
 string is meant to be read by a cooperating consumer, and its
 contents and interpretation are not specified here. The
 string should be padded with null characters to a multiple of
@@ -2785,12 +2791,12 @@ four bytes in length.
 
 \end{enumerate}
 
-The index attributes and their encodings are listed in Table \referfol{datarep:indexattributeencodings}.
+The name index attributes and their encodings are listed in Table \referfol{datarep:indexattributeencodings}.
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c|l}
-  \caption{Index attribute encodings} \label{datarep:indexattributeencodings}\\
+  \caption{Name index attribute encodings} \label{datarep:indexattributeencodings}\\
   \hline \bfseries Attribute name&\bfseries Value &\bfseries Form/Class \\ \hline
 \endfirsthead
   \bfseries Attribute name&\bfseries Value &\bfseries Form/Class \\ \hline
@@ -2815,7 +2821,30 @@ byte for the abbreviation code. The size of the table given by
 \texttt{abbrev\_table\_size} may include optional padding following the
 terminating 0 byte.
 
+\section{Defaulted Member Encodings}
+\hypertarget{datarep:defaultedmemberencodings}{}
+
+The encodings of the constants used in the \DWATdefaulted{} attribute
+are given in Table \referfol{datarep:defaultedattributeencodings}.
 
+\begin{centering}
+\setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|c}
+  \caption{Defaulted attribute encodings} \label{datarep:defaultedattributeencodings}\\
+  \hline \bfseries Defaulted name&\bfseries Value \\ \hline
+\endfirsthead
+  \bfseries Defaulted name&\bfseries Value \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+  \hline
+  \ddag \ \textit{New in \DWARFVersionV}
+\endlastfoot
+\DWDEFAULTEDno~\ddag   & 0x00 \\
+\DWDEFAULTEDinclass~\ddag       & 0x01 \\
+\DWDEFAULTEDoutofclass~\ddag    & 0x02 \\
+\end{longtable}
+\end{centering}
 
 \needlines{10}
 \section{Address Range Table}
@@ -2961,7 +2990,8 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \DWLNEendsequence      &0x01 \\
 \DWLNEsetaddress       &0x02 \\
 \textit{Reserved}      &0x03\footnote{Code 0x03 is reserved to allow backward compatible support of the 
-                                       \texttt{DW\_LNE\_define\_file} operation which was defined prior to \DWARFVersionV.} \\
+                                       DW\_LNE\_define\_file operation which was defined in \DWARFVersionIV{} 
+                                       and earlier.} \\
 \DWLNEsetdiscriminator  &0x04 \\
 \DWLNElouser           &0x80 \\
 \DWLNEhiuser           &\xff \\
@@ -3121,16 +3151,15 @@ is either a
 \addtoindexx{base address selection entry!in range list}
 range list entry, 
 \addtoindexx{range list}
-a base address selection entry, or an end
-of list entry.
+a base address selection entry, or an end-of-list entry.
 
 A \addtoindex{range list} entry consists of two relative addresses. The
 addresses are the same size as addresses on the target machine.
 
 \needlines{4}
 A base address selection entry and an 
-\addtoindexx{end of list entry!in range list}
-end of list entry each
+\addtoindexx{end-of-list entry!in range list}
+end-of-list entry each
 \addtoindexx{base address selection entry!in range list}
 consist of two (constant or relocated) addresses. The two
 addresses are the same size as addresses on the target machine.
@@ -3391,7 +3420,7 @@ an arbitrary alignment.
 \section{Integer Representation Names}
 \label{datarep:integerrepresentationnames}
 The sizes of the integers used in the lookup by name, lookup
-by address, line number and call frame information sections
+by address, line number, call frame information and other sections
 are given in
 Table \ref{tab:integerrepresentationnames}.
 
@@ -3477,7 +3506,7 @@ code, and the attribute value.
 \DWATartificial,
 \DWATassociated,
 \DWATbinaryscale,
-\DWATbitoffset,
+%\DWATbitoffset,
 \DWATbitsize,
 \DWATbitstride,
 \DWATbytesize,
index e4f83e0..953a259 100644 (file)
@@ -165,9 +165,7 @@ unit entry).
 The \texttt{debug\_info\_offset} value in the header is the offset in the
 \dotdebuginfo{} section of the 
 corresponding compilation unit header (not
-the compilation unit entry). Each pubname/pubtype unit has the offset (within
-the corresponding compilation unit) of the applicable debugging
-information entry.
+the compilation unit entry). 
 
 %c
 \item \dotdebuginfo{} to \dotdebugabbrev \\
@@ -183,7 +181,7 @@ value is the offset in the \dotdebugstr{}
 section of the corresponding string.
 
 %e
-\item \dotdebugstroffsets{} to \dotdebugstroffsets \\
+\item \dotdebuginfo{} to \dotdebugstroffsets \\
 The value of the \DWATstroffsetsbase{} attribute in a
 \DWTAGcompileunit{}, \DWTAGtypeunit{} or \DWTAGpartialunit{} 
 DIE is the offset in the
@@ -200,7 +198,7 @@ The operand of the \DWOPcallref{}
 DWARF expression operator is the
 offset of a debugging information entry in the 
 \dotdebuginfo{} section of another compilation.
-Similarly for attribute operands that have use
+Similarly for attribute operands that use
 \DWFORMrefaddr.
 
 %g
@@ -242,7 +240,7 @@ section of a
 %k
 \item \dotdebuginfo{} to \dotdebugaddr \\
 The value of the \DWATaddrbase{} attribute in the
-\DWTAGcompileunit{}, \DWTAGtypeunit{} or \DWTAGpartialunit{} DIE is the
+\DWTAGcompileunit{} or \DWTAGpartialunit{} DIE is the
 offset in the \dotdebugaddr{} section of the machine
 addresses for that unit.
 \DWFORMaddrx, \DWOPaddrx{} and \DWOPconstx{} contain
@@ -255,7 +253,7 @@ are offsets to the corresponding string text in the
 \dotdebugstr{} section.
 
 %m
-\item \dotdebugmacro{} to \dotdebugstroffsets \\
+\item \dotdebugmacro{} to \dotdebugstr \\
 The second operand of a 
 \DWMACROdefineindirect{} or \DWMACROundefindirect{} macro information
 entry is an index into the string table in the 
@@ -288,7 +286,7 @@ into the string offset table in the
 %q
 \needlines{4}
 \item \dotdebugmacro{} to \dotdebugmacro \\
-The second operand of a 
+The operand of a 
 \DWMACROtransparentinclude{} macro information
 entry is an offset into another part of the 
 \dotdebugmacro{} section to the header for the 
index d69fd43..ccaa5a1 100644 (file)
@@ -3,7 +3,7 @@
 % If draft is in the document class list, pix are just suggested
 % by an outline, the pic does not appear as a picture.
 %
-\newcommand{\docdate}{March 4, 2015}
+\newcommand{\docdate}{April 23, 2015}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
@@ -148,7 +148,9 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \newcommand{\singlequote}[1]{\textquoteleft #1\textquoteright}
 
 % Better naming for the lowest level section header
-\newcommand{\subsubsubsection}[1]{\paragraph{#1.}}
+\newcommand{\subsubsubsection}[1]{\paragraph{#1.}~\newline}
+%\newcommand{\subsubsubsection}         %% Has to be in a style file--ugh...
+%   {\@startsection{subsubsubsection}{4}{0mm}{-\baselineskip}{\baselineskip}{\normalfont\normalsize\itshap}}
 
 % Issue \clearpage if less than n lines remain on page
 \newcommand{\needlines}[1]{\needspace{#1\baselineskip}}
@@ -257,9 +259,13 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \include{copyright}
 \include{foreword}
 
+\newpage
+~ % Make the page non-empty...
 \newpage
 \tableofcontents
 
+\newpage
+~ % Make non-empty
 \cleardoublepage
 \listoffigures
 
@@ -267,13 +273,13 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \listoftables
 
 \ifthenelse{\boolean{isdraft}}
-       {       \emptypage
+       {       %\emptypage
                {% Environment to keep the following header change local
                \clearpage
                \makeevenhead{plain}{}{Change Summary}{}
                \makeoddhead{plain}{}{Change Summary}{}
                \include{changesummary}
-                \emptypage
+                %\emptypage
                }
        }{}
 %\cleardoublepage
index c3ba0fb..a0ab232 100644 (file)
@@ -1,4 +1,5 @@
 % Definitions for each of the DWARF names
+% Definitions for each of the DWARF names
 % These eliminate the need to use escapes for the underscores or
 % add entries for indexing
 %
@@ -39,7 +40,7 @@
 %
 \newdwfnamecommands{DWATbasetypes}{DW\_AT\_base\_types}
 \newdwfnamecommands{DWATbinaryscale}{DW\_AT\_binary\_scale}
-\newdwfnamecommands{DWATbitoffset}{DW\_AT\_bit\_offset}
+%\newdwfnamecommands{DWATbitoffset}{DW\_AT\_bit\_offset}
 \newdwfnamecommands{DWATbitsize}{DW\_AT\_bit\_size}
 \newdwfnamecommands{DWATbitstride}{DW\_AT\_bit\_stride}
 \newdwfnamecommands{DWATbyteoffset}{DW\_AT\_byte\_offset}
 %
 % DW_IDX
 %
-\newdwfnamecommands{DWIDXcompileunit}{DW\_IDX\_cpmpile\_unit}
+\newdwfnamecommands{DWIDXcompileunit}{DW\_IDX\_compile\_unit}
 \newdwfnamecommands{DWIDXtypeunit}{DW\_IDX\_type\_unit}
 \newdwfnamecommands{DWIDXdieoffset}{DW\_IDX\_die\_offset}
 \newdwfnamecommands{DWIDXparent}{DW\_IDX\_parent}
 \newcommand{\versiondotdebugabbrev}  {5}
 \newcommand{\versiondotdebugaddr}    {5}
 \newcommand{\versiondotdebugaranges} {2}
+\newcommand{\versiondotdebugcuindex} {5}
 \newcommand{\versiondotdebugframe}   {4}
 \newcommand{\versiondotdebuginfo}    {5}
 \newcommand{\versiondotdebugline}    {5}
 \newcommand{\versiondotdebugstr}     {5}
 \newcommand{\versiondotdebugsup}     {5}
 \newcommand{\versiondotdebugstroffsets}{5}
+\newcommand{\versiondotdebugtuindex} {5}
 %
 % DWARF Standard Versions
 %
 \newcommand{\HFNunittype}                 {\addttindex{unit\_type}}
 \newcommand{\HFNversion}                  {\addttindex{version}}
 %
+% ...and related types
+%
+\newcommand{\HFTinitiallength}{\addtoindex{initial length}}
+\newcommand{\HFTsectionlength}{\addtoindex{section length}}
+\newcommand{\HFTsectionoffset}{\addtoindex{section offset}}
+\newcommand{\HFTsbyte}{\addtoindex{sbyte}}
+\newcommand{\HFTubyte}{\addtoindex{ubyte}}
+\newcommand{\HFTuhalf}{\addtoindex{uhalf}}
+\newcommand{\HFTuword}{\addtoindex{uword}}
+%
 % Miscellaneous
 %
 \newcommand{\MDfive}{\livelink{def:MDfive}{MD5}}
index c9a33db..15b816c 100644 (file)
@@ -82,7 +82,7 @@ while(true)
     if (high order bit of byte == 0)
         break;
 }
-if ((shift <size) \&\& (sign bit of byte is set))
+if ((shift <size) && (sign bit of byte is set))
     /* sign extend */
     result |= - (1 << shift);
 \end{lstlisting}
index 37382b7..6cfd6ae 100644 (file)
@@ -27,7 +27,7 @@ The Committee reorganized in October, 1999, and met for the
 next several years to address issues that had been noted with
 \addtoindex{DWARF Version 2} as well as to add a number of new features.
 In mid-2003, the Committee became a workgroup under the Free
-Standards Group (FSG), a industry consortium chartered to
+Standards Group (FSG), an industry consortium chartered to
 promote open standards. \addtoindex{DWARF Version 3} was published on
 December 20, 2005, following industry review and comment.
 
@@ -40,44 +40,49 @@ independent since that time.
 It is the intention of the DWARF Committee that migrating from
 an earlier version of the DWARF standard to the current version
 should be straightforward and easily accomplished. 
-Almost all 
-\addtoindex{DWARF Version 2}, 
-\addtoindex{DWARF Version 3} and
-\addtoindex{DWARF Version 4}
-constructs have been retained unchanged
+Almost all constructs from
+\addtoindex{DWARF Version 2} onward 
+\addtoindexx{DWARF Version 3}
+\addtoindexx{DWARF Version 4}
+have been retained unchanged in DWARF Version 5, although a few
 \addtoindexx{DWARF Version 5}
-in DWARF Version 5.
+have been compatibly superseded by improved constructs which are
+more compact and/or more expressive.
+\clearpage
 
 The \dwf\ Committee is open to compiler and debugger
 developers who have experience with source language debugging
 and debugging formats, and have an interest in promoting or
 extending the DWARF debugging format.
-\clearpage
-DWARF Committee members contributing to Version 4 are:
+
+DWARF Committee members contributing to Version 5 are:
 \begin{center}
 \begin{tabular}{ll}
-Todd Allen&Concurrent Computer\\
+Todd Allen              & Concurrent Computer\\
 David Anderson, Associate Editor\\
-John Bishop&Intel\\
-Jim Blandy&CodeSourcery\\
+John Bishop             & Intel\\
 Ron Brender, Editor\\
 Andrew Cagney\\
-Siu Chi Chan&IBM\\
-Cary Coutant&Google\\
-John DelSignore&TotalView\\
-Michael Eager, Chair&Eager Consulting\\
-Ben Elliston&IBM\\
-Mike Gleeson&Hewlett-Packard\\
-Mathhew Gretton-Dan&ARM\\
-David Gross&Hewlett-Packard\\
-Tommy Hoffner&IBM\\
-Jason Molenda&Apple\\
-David Moore&Intel\\
-Jeff Nelson&Hewlett-Packard\\
-Chris Quenelle&Sun Microsystems\\
-Paul Robinson&Hewlett-Packard\\
-Bill White&TotalView\\
-Kendrick Wong&IBM\\
+Soumitra Chatterjee     & HP \\
+Eric Christopher        & Google\\
+Cary Coutant            & Google\\
+John DelSignore         & Rogue Wave\\
+Michael Eager, Chair    & Eager Consulting\\
+Jini Susan George       & HP \\
+Mathhew Gretton-Dan     & ARM\\
+Tommy Hoffner           & Altera\\
+Jakub Jelinek           & RedHat\\
+Andrew Johnson          & Linaro\\
+Jason Merrill           & RedHat\\
+Jason Molenda           & Apple\\
+Adrian Prantl           & Apple\\
+Hafiz Abid Qadeer       & Mentor Graphics\\
+Paul Robinson           & Sony\\
+Syamala Sarma           & HP\\
+Keith Walker            & ARM\\
+Kendrick Wong           & IBM\\
+Brock Wyma              & Intel\\
+Jian Xu                 & IBM\\
 \end{tabular}
 \end{center}
 
@@ -95,8 +100,8 @@ see:
 
 This document is intended to be usable in online as well as
 traditional paper forms. 
-In the online form, blue text is
-used to indicate hyperlinks.
+
+In the online form, blue text is used to indicate hyperlinks.
 % which facilitate moving around
 %in the document in a manner like that typically found in web
 %browsers.
@@ -114,10 +119,9 @@ In the traditional paper form, the appearance of the hyperlinks
 on a page of paper does not distract the eye because the blue
 hyperlinks are typically imaged by black and white printers in
 a manner nearly indistinguishable from other text. 
-(Hyperlinks
-are not underlined for this same reason.) 
-Page numbers,
-a Table of Contents, a List of Figures and an Index are
-included in both online and paper forms.
+(Hyperlinks are not underlined for this same reason.) 
+
+Both online and paper forms include 
+page numbers, a Table of Contents, a List of Figures and an Index.
 
 \end{abstract}
index 14498fa..e4ec950 100644 (file)
@@ -134,13 +134,15 @@ Appendix \refersec{app:splitdwarfobjectsinformative} for details.
 
 As a further option, debugging information entries and other debugging
 information that are the same in multiple executables or shared objects 
-may found in a separate \addtoindex{supplementary object file} that 
+may be found in a separate \addtoindex{supplementary object file} that 
 contains supplementary debug sections.
 The executable or shared object which contains references to
 those debugging information entries contain a \dotdebugsup{} section
 with information that identifies the supplementary object file; the 
 supplementary object file contains a variant of this same section
 that is used to unambiguously associate it with the referencing object.
+See Section \refersec{data:dwarfsupplemetaryobjectfiles} for
+further details.
  
 \section{Attribute Types}
 \label{chap:attributetypes}
@@ -176,54 +178,74 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 &\livelink{chap:DWATaccessibilitycppinheritedmembers}{C++ inherited members} \\
 \DWATaddressclassTARG
 &\livelinki{chap:DWATadressclasspointerorreferencetypes}{Pointer or reference types}{pointer or reference types}  \\
-&\livelinki{chap:DWATaddressclasssubroutineorsubroutinetype}{Subroutine or subroutine type}{subroutine or subroutine type} \\
+&\livelinki{chap:DWATaddressclasssubroutineorsubroutinetype}
+           {Subroutine or subroutine type}
+           {subroutine or subroutine type} \\
 \DWATaddrbaseTARG
 &\livelinki{chap:DWATaddrbaseforaddresstable}{Base offset for address table}{address table} \\
 \DWATalignmentTARG
-&\livelinki{chap:DWATalignmentnondefault}{Non-default alignment of type, subprogram or variable}{non-default alignment}
-\addtoindexx{alignment!non-default} \\
+&\livelinki{chap:DWATalignmentnondefault}
+           {Non-default alignment of type, subprogram or variable}
+           {non-default alignment} \addtoindexx{alignment!non-default} \\
 \DWATallocatedTARG
 &\livelinki{chap:DWATallocatedallocationstatusoftypes}{Allocation status of types}{allocation status of types}  \\
 \DWATartificialTARG
-&\livelinki{chap:DWATartificialobjectsortypesthat}{Objects or types that are not actually declared in the source}{objects or types that are not actually declared in the source}  \\
+&\livelinki{chap:DWATartificialobjectsortypesthat}
+           {Objects or types that are not actually declared in the source}
+           {objects or types that are not actually declared in the source}  \\
 \DWATassociatedTARG{} 
 &\livelinki{chap:DWATassociatedassociationstatusoftypes}{Association status of types}{association status of types} \\
 \DWATbasetypesTARG{} 
-&\livelinki{chap:DWATbasetypesprimitivedatatypesofcompilationunit}{Primitive data types of compilation unit}{primitive data types of compilation unit} \\
+&\livelinki{chap:DWATbasetypesprimitivedatatypesofcompilationunit}
+           {Primitive data types of compilation unit}
+           {primitive data types of compilation unit} \\
 \DWATbinaryscaleTARG{} 
-&\livelinki{chap:DWATbinaryscalebinaryscalefactorforfixedpointtype}{Binary scale factor for fixed-point type}{binary scale factor for fixed-point type} \\
-\DWATbitoffsetTARG{} 
-&\livelinki{chap:DWATbitoffsetbasetypebitlocation}{Base type bit location}{base type bit location} \\
-&\livelinki{chap:DWATbitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
+&\livelinki{chap:DWATbinaryscalebinaryscalefactorforfixedpointtype}
+           {Binary scale factor for fixed-point type}
+           {binary scale factor for fixed-point type} \\
+%\DWATbitoffsetTARG{} 
+%&\livelinki{chap:DWATbitoffsetbasetypebitlocation}{Base type bit location}{base type bit location} \\
+%&\livelinki{chap:DWATbitoffsetdatamemberbitlocation}{Data member bit location}{data member bit location} \\
 \DWATbitsizeTARG{} 
-&\livelinki{chap:DWATbitsizebasetypebitsize}{Base type bit size}{base type bit size} \\
-&\livelinki{chap:DWATbitsizedatamemberbitsize}{Data member bit size}{data member bit size} \\
+&\livelinki{chap:DWATbitsizebasetypebitsize}{Size of a base in bits}{base type bit size} \\
+&\livelinki{chap:DWATbitsizedatamemberbitsize}{Size of a data member in bits}{data member bit size} \\
 \DWATbitstrideTARG{} 
-&\livelinki{chap:DWATbitstridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
-&\livelinki{chap:DWATbitstridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
-&\livelinki{chap:DWATbitstrideenumerationstridedimensionofarraytype}{Enumeration stride (dimension of array type)}{enumeration stride (dimension of array type)} \\
+&\livelinki{chap:DWATbitstridearrayelementstrideofarraytype}
+           {Array element stride (of array type)}
+           {array element stride (of array type)} \\
+&\livelinki{chap:DWATbitstridesubrangestridedimensionofarraytype}
+           {Subrange stride (dimension of array type)}
+           {subrange stride (dimension of array type)} \\
+&\livelinki{chap:DWATbitstrideenumerationstridedimensionofarraytype}
+           {Enumeration stride (dimension of array type)}
+           {enumeration stride (dimension of array type)} \\
 \DWATbytesizeTARG{} 
-&\livelinki{chap:DWATbytesizedataobjectordatatypesize}{Data object or data type size}{data object or data type size} \\
+&\livelinki{chap:DWATbytesizedataobjectordatatypesize}
+           {Size of a data object or data type in bytes}{data object or data type size} \\
 \DWATbytestrideTARG{} 
-&\livelinki{chap:DWATbytestridearrayelementstrideofarraytype}{Array element stride (of array type)}{array element stride (of array type)} \\
-&\livelinki{chap:DWATbytestridesubrangestridedimensionofarraytype}{Subrange stride (dimension of array type)}{subrange stride (dimension of array type)} \\
+&\livelinki{chap:DWATbytestridearrayelementstrideofarraytype}
+           {Array element stride (of array type)}
+           {array element stride (of array type)} \\
+&\livelinki{chap:DWATbytestridesubrangestridedimensionofarraytype}
+           {Subrange stride (dimension of array type)}
+           {subrange stride (dimension of array type)} \\
 &\livelinki{chap:DWATbytestrideenumerationstridedimensionofarraytype}
            {Enumeration stride (dimension of array type)}
            {enumeration stride (dimension of array type)} \\
 \DWATcallallcallsTARG{}
 &\livelinki{chap:DWATcallallcallsofasubprogram}
            {All tail and normal calls in a subprogram are described by call site entries}
-           {all tail and normal calls in a subprogram are described by call site entries}
+           {all tail and normal calls are described}
            \index{call site!summary!all tail and normal calls are described} \\
 \DWATcallallsourcecallsTARG{}
 &\livelinki{chap:DWATcallallsourcecallsofasubprogram}
            {All tail, normal and inlined calls in a subprogram are described by call site and inlined subprogram entries}
-           {all tail calls in a subprogram are described by call site and inlined subprogram entries}
+           {all tail, normal and inlined calls are described}
            \index{call site!summary!all tail, normal and inlined calls are described} \\
 \DWATcallalltailcallsTARG{}
 &\livelinki{chap:DWATcallalltailcallsofasubprogram}
            {All tail calls in a subprogram are described by call site entries}
-           {all tail calls in a subprogram are described by call site entries}
+           {all tail calls are described}
            \index{call site!summary!all tail calls are described} \\
 \DWATcallcolumnTARG{} 
 &\livelinki{chap:DWATcallcolumncolumnpositionofinlinedsubroutinecall}
@@ -330,11 +352,11 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 \DWATdeclarationTARG
 &\livelinki{chap:DWATdeclarationincompletenondefiningorseparateentitydeclaration}{Incomplete, non-defining, or separate entity declaration}{incomplete, non-defining, or separate entity declaration} \\
 \DWATdefaultedTARG
-&\livelinki{chap:DWATdefaulted}{Whether a member function has been declared as default}{defaulted attribute} \\
+&\livelinki{chap:DWATdefaulteddef}{Whether a member function has been declared as default}{defaulted attribute} \\
 \DWATdefaultvalueTARG
 &\livelinki{chap:DWATdefaultvaluedefaultvalueofparameter}{Default value of parameter}{default value of parameter} \\
 \DWATdeletedTARG
-&\livelinki{chap:DWATdeleted}{Whether a member has been declared as deleted}{Deletion of member function} \\
+&\livelinki{chap:DWATdeleteddef}{Whether a member has been declared as deleted}{Deletion of member function} \\
 \DWATdescriptionTARG{} 
 &\livelinki{chap:DWATdescriptionartificialnameordescription}{Artificial name or description}{artificial name or description} \\
 \DWATdigitcountTARG
@@ -401,9 +423,16 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 \DWATlowerboundTARG
 &\livelinki{chap:DWATlowerboundlowerboundofsubrange}{Lower bound of subrange}{lower bound of subrange} \\
 \DWATmacroinfoTARG
-&\livelinki{chap:DWATmacroinfomacroinformation}{Macro information (for pre-\DWARFVersionV{} compatibility)} {macro information (legacy)} \\
+&\livelinki{chap:DWATmacroinfomacroinformation}
+           {Macro preprocessor information (legacy)} 
+           {macro preprocessor information (legacy)} \\
+&          \textit{(reserved for coexistence with \DWARFVersionIV{} and earlier)} \\
 \DWATmacrosTARG
-&\livelinki{chap:DWATmacrosmacroinformation}{Macro information} {macro information} (\texttt{\#define}, \texttt{\#undef}, and so on)\\
+&\livelinki{chap:DWATmacrosmacroinformation}
+           {Macro preprocessor information} 
+           {macro preprocessor information} \\
+&          \textit{(\texttt{\#define}, \texttt{\#undef}, and so on in \addtoindex{C}, 
+                \addtoindex{C++} and similar languages)} \\
 \DWATmainsubprogramTARG
 &\livelinki{chap:DWATmainsubprogrammainorstartingsubprogram}{Main or starting subprogram}{main or starting subprogram} \\
 &\livelinki{chap:DWATmainsubprogramunitcontainingmainorstartingsubprogram}{Unit containing main or starting subprogram}{unit containing main or starting subprogram}\\
@@ -439,32 +468,47 @@ The attributes are listed in Table \referfol{tab:attributenames}.
 \DWATrecursiveTARG
 &\livelinki{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine}{recursive property of a subroutine} \\
 \DWATreferenceTARG
-&\livelink{chap:DWATreferenceofnonstaticmember}{\&-qualified non-static member function} \\
+&\livelink{chap:DWATreferenceofnonstaticmember}
+          {\&-qualified non-static member function} \textit{(\addtoindex{C++})} \\
 \DWATreturnaddrTARG
-&\livelinki{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location}{subroutine return address save location} \\
+&\livelinki{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}
+           {Subroutine return address save location}
+           {subroutine return address save location} \\
 \DWATrvaluereferenceTARG
-&\livelink{chap:DWATrvaluereferenceofnonstaticmember}{\&\&-qualified non-static member function} \\
+&\livelink{chap:DWATrvaluereferenceofnonstaticmember}
+          {\&\&-qualified non-static member function} \textit{(\addtoindex{C++})} \\
 
 \DWATsegmentTARG
 &\livelinki{chap:DWATsegmentaddressinginformation}{Addressing information}{addressing information} \\
 \DWATsiblingTARG
-&\livelinki{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship}{debugging information entry relationship} \\
+&\livelinki{chap:DWATsiblingdebugginginformationentryrelationship}
+           {Debugging information entry relationship}
+           {debugging information entry relationship} \\
 \DWATsmallTARG
-&\livelinki{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type}{scale factor for fixed-point type} \\
+&\livelinki{chap:DWATsmallscalefactorforfixedpointtype}
+           {Scale factor for fixed-point type}
+           {scale factor for fixed-point type} \\
 \DWATsignatureTARG
-&\livelinki{chap:DWATsignaturetypesignature}{Type signature}{type signature}\\
+&\livelinki{chap:DWATsignaturetypesignature}
+           {Type signature}
+           {type signature}\\
 \DWATspecificationTARG
-&\livelinki{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{Incomplete, non-defining, or separate declaration corresponding to a declaration}{incomplete, non-defining, or separate declaration corresponding to a declaration} \\
+&\livelinki{chap:DWATspecificationincompletenondefiningorseparatedeclaration}
+           {Incomplete, non-defining, or separate declaration corresponding to a declaration}
+           {incomplete, non-defining, or separate declaration corresponding to a declaration} \\
 \DWATstartscopeTARG
 &\livelinki{chap:DWATstartscopeobjectdeclaration}{Object declaration}{object declaration}\\*
 &\livelinki{chap:DWATstartscopetypedeclaration}{Type declaration}{type declaration}\\
 \DWATstaticlinkTARG
 &\livelinki{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame}{location of uplevel frame} \\
 \DWATstmtlistTARG
-&\livelinki{chap:DWATstmtlistlinenumberinformationforunit}{Line number information for unit}{line number information for unit}\\
+&\livelinki{chap:DWATstmtlistlinenumberinformationforunit}
+           {Line number information for unit}
+           {line number information for unit}\\
 \DWATstringlengthTARG
-&\livelinki{chap:DWATstringlengthstringlengthofstringtype}{String length of string type}{string length of string type}
- \\
+&\livelinki{chap:DWATstringlengthstringlengthofstringtype}
+           {String length of string type}
+           {string length of string type} \\
 \DWATstringlengthbitsizeTARG
 &\livelinki{chap:DWATstringlengthstringlengthofstringtype}{Size of string length of string type}{string length of string type!size of}
  \\
@@ -538,7 +582,7 @@ of a single piece of constant data.
 \doublequote{Constant data}
 is the class of attribute value that those attributes may have. 
 There are several representations of constant data,
-however (one, two, ,four, or eight bytes, and variable length
+however (one, two, four, or eight bytes, and variable length
 data). 
 The particular representation for any given instance
 of an attribute is encoded along with the attribute name as
@@ -564,13 +608,13 @@ to one of the classes shown in Table \referfol{tab:classesofattributevalue}.
 
 \hypertarget{chap:classaddress}{}
 \livelinki{datarep:classaddress}{address}{address class}
-&Refers to some location in the address space of the described program.
+&Refers to some location in the address space of the \mbox{described} program.
 \\
 
 \hypertarget{chap:classaddrptr}{}
 \livelinki{datarep:classaddrptr}{addrptr}{addrptr class}
 &Refers to a base location in the DWARF section that holds
-a series of machine address values. Certain attributes refer
+a series of machine address values. Certain attributes \mbox{refer}
 one of these addresses by indexing relative to this base
 location.
 \\
@@ -595,7 +639,7 @@ sometimes called \doublequote{integer constants} for emphasis.}
 
 \hypertarget{chap:classexprloc}{}
 \livelinki{datarep:classexprloc}{exprloc}{exprloc class}
-&A DWARF expression or location description.
+&A DWARF expression for a value or a location in the \mbox{address} space of the described program.
 \\
 
 \hypertarget{chap:classflag}{}
@@ -610,7 +654,7 @@ sometimes called \doublequote{integer constants} for emphasis.}
 
 \hypertarget{chap:classloclistptr}{}
 \livelinki{datarep:classloclistptr}{loclistptr}{loclistptr class}
-&Refers to a location in the DWARF section that holds location lists, which
+&Refers to a location in the DWARF section that holds \mbox{location} lists, which
 describe objects whose location can change during their lifetime.
 \\
 
@@ -628,17 +672,20 @@ describe objects whose location can change during their lifetime.
 \hypertarget{chap:classreference}{}
 \livelinki{datarep:classreference}{reference}{reference class}
 & Refers to one of the debugging information
-entries that describe the program.  There are three types of
-reference. The first is an offset relative to the beginning
-of the compilation unit in which the reference occurs and must
+entries that \mbox{describe} the program.  There are four types of
+\mbox{reference}. The first is an offset relative to the beginning
+of the \mbox{compilation} unit in which the reference occurs and must
 refer to an entry within that same compilation unit. The second
-type of reference is the offset of a debugging information
+type of reference is the offset of a debugging \mbox{information}
 entry in any compilation unit, including one different from
 the unit containing the reference. The third type of reference
 is an indirect reference to a 
 \addtoindexx{type signature}
-type definition using a 64\dash bit signature 
-for that type.
+type definition using a 64\dash bit \mbox{signature} 
+for that type. The fourth type of reference is a reference from within the 
+\dotdebuginfo{} section of the executable or shared object to
+a debugging information entry in the \dotdebuginfo{} section of 
+a \addtoindex{supplementary object file}.
 \\
 
 \hypertarget{chap:classstring}{}
@@ -646,7 +693,7 @@ for that type.
 & A null\dash terminated sequence of zero or more
 (non\dash null) bytes. Data in this class are generally
 printable strings. Strings may be represented directly in
-the debugging information entry or as an offset in a separate
+the debugging \mbox{information} entry or as an offset in a separate
 string table.
 \\
 
@@ -654,8 +701,8 @@ string table.
 \livelinki{datarep:classstroffsetsptr}{stroffsetsptr}{stroffsetsptr class}
 &Refers to a base location in the DWARF section that holds
 a series of offsets in the DWARF section that holds strings.
-Certain attributes refer one of these offets by indexing 
-relative to this base location. The resulting offset is then 
+Certain attributes refer one of these offsets by indexing 
+\mbox{relative} to this base location. The resulting offset is then 
 used to index into the DWARF string section.
 \\
 
@@ -790,7 +837,7 @@ a value of any supported base type of the target machine.  Instead of
 a base type, elements can have a special address type, 
 which is an integral type that has the 
 \addtoindex{size of an address} on the target machine and 
-unspecified signedness.The value on the top of the stack after 
+unspecified signedness. The value on the top of the stack after 
 \doublequote{executing} the 
 \addtoindex{DWARF expression}
 is 
@@ -936,10 +983,10 @@ which is specified by an unsigned LEB128\addtoindexx{LEB128!unsigned}
 number, followed by a signed LEB128\addtoindexx{LEB128!signed} offset.
 
 \itembfnl{\DWOPregvaltypeTARG}
-The \DWOPregvaltypeNAME{} operation takes two parameters. The first parameter is
-an unsigned LEB128\addtoindexx{LEB128!unsigned} number, 
+The \DWOPregvaltypeNAME{} operation takes two operands. The first 
+operand is an unsigned LEB128\addtoindexx{LEB128!unsigned} number, 
 which identifies a register whose contents is to
-be pushed onto the stack. The second parameter is an 
+be pushed onto the stack. The second operand is an 
 unsigned LEB128\addtoindexx{LEB128!unsigned} number
 that represents the offset of a debugging information entry in the current
 compilation unit, which must be a \DWTAGbasetype{} entry that provides the
@@ -1124,7 +1171,7 @@ integral type identifier, translates this
 value into an address in the 
 \addtoindexx{thread-local storage}
 thread\dash local storage for a thread, and pushes the address 
-onto the stack togethe with the special address type identifier. 
+onto the stack together with the special address type identifier. 
 The meaning of the value on the top of the stack prior to this 
 operation is defined by the run-time environment.  If the run-time 
 environment supports multiple thread\dash local storage 
@@ -1133,17 +1180,18 @@ corresponding to the executable or shared
 library containing this DWARF expression is used.
    
 \textit{Some implementations of 
-\addtoindex{C} and \addtoindex{C++} support a
-thread\dash local storage class. Variables with this storage class
+\addtoindex{C}, \addtoindex{C++}, \addtoindex{Fortran}, and other 
+languages, support a 
+thread-local storage class. Variables with this storage class
 have distinct values and addresses in distinct threads, much
 as automatic variables have distinct values and addresses in
 each function invocation. Typically, there is a single \nolink{block}
 of storage containing all thread\dash local variables declared in
 the main executable, and a separate \nolink{block} for the variables
-declared in each shared library. 
-Each thread\dash local variable can then be accessed in its block using an
-identifier. This identifier is typically an offset into the block and pushed
-onto the DWARF stack by one of the 
+declared in each shared library. Each 
+thread\dash local variable can then be accessed in its block using an
+identifier. This identifier is typically an offset into the block and 
+pushed onto the DWARF stack by one of the 
 \DWOPconstnx{} operations prior to the
 \DWOPformtlsaddress{} operation. 
 Computing the address of
@@ -1434,17 +1482,18 @@ being pushed by the \DWOPentryvalueNAME{} operation.
 \DWOPpushobjectaddress{} is not meaningful inside of this DWARF operation.
 
 \textit{The \DWOPentryvalueNAME{} operation can be used by consumers if they are able
-to find the call site in the caller function, unwind to it and the corresponding
+to find the call site in the caller function, can unwind to it, and the corresponding
 \DWTAGcallsiteparameter{} entry has \DWATcallvalue{} or
 \DWATcalldatavalue{} attributes that can be evaluated to find out the
 value a function parameter had on the first instruction in the function.
-Or non-interactive consumers which know what variables will need to be
-inspected ahead of running the debugged program could put breakpoint
-on the first instruction in functions where there is no other way to find
-some variable's value, but evaluating \DWOPentryvalueNAME{} operation.  The
-consumer can collect there the value of registers or memory referenced in
+Non-interactive consumers which know what variables will need to be
+inspected ahead of running the debugged program could put breakpoints
+on the first instruction in functions where there is no other way to find(see 
+some variable's value, other than evaluating the \DWOPentryvalueNAME{} 
+operation.  The consumer can collect the value of registers or 
+memory referenced in
 \DWOPentryvalueNAME{} operations, then continue to breakpoints where the values
-of variables or parameters need to be inspected and use there the remembered
+of variables or parameters need to be inspected and there use the remembered
 register or memory values during \DWOPentryvalueNAME{} evaluation.
 }
 
@@ -1595,7 +1644,6 @@ DWARF expression is evaluated independently of any others
 
 
 \subsubsection{Simple Location Descriptions}
-
 A 
 \addtoindexx{location description!simple}
 simple location description consists of one 
@@ -1908,7 +1956,7 @@ to form an address and then push the value of the memory location at that addres
 \subsection{Location Lists}
 \label{chap:locationlists}
 There are two forms of location lists. The first form 
-is intended for use in other than a split DWARF object,
+is intended for use in other than a split DWARF object file,
 while the second is intended for use in a split DWARF object
 (see Section \refersec{datarep:splitdwarfobjects}). The two
 forms are otherwise equivalent.
@@ -1938,8 +1986,8 @@ a
 address selection entry, 
 \addtoindexx{location list!base address selection entry}
 or an 
-\addtoindexx{end of list entry!in location list}
-end of list entry.
+\addtoindexx{end-of-list entry!in location list}
+end-of-list entry.
 
 A location list entry has two forms:
 a normal location list entry and a default location list entry.
@@ -1964,7 +2012,7 @@ range over which the location is valid. The ending address
 must be greater than or equal to the beginning address.
 
 \textit{A location list entry (but not a base address selection or 
-end of list entry) whose beginning
+end-of-list entry) whose beginning
 and ending addresses are equal has no effect 
 because the size of the range covered by such
 an entry is zero.}
@@ -2016,7 +2064,7 @@ base address (except to the extent to which base addresses
 affect prior normal location list entries).
 
 A default location list entry must be the last location list
-entry of a location list except for the terminating end of list
+entry of a location list except for the terminating end-of-list
 entry.
 
 A default location list entry describes an unlimited number
@@ -2046,36 +2094,37 @@ affects only the list in which it is contained.}
 
 \needlines{5}
 The end of any given location list is marked by an 
-\addtoindexx{location list!end of list entry}
-end of list entry, which consists of a 0 for the beginning address
+\addtoindexx{location list!end-of-list entry}
+end-of-list entry, which consists of a 0 for the beginning address
 offset and a 0 for the ending address offset. A location list
 containing only an 
-\addtoindexx{end of list entry!in location list}
-end of list entry describes an object that
+\addtoindexx{end-of-list entry!in location list}
+end-of-list entry describes an object that
 exists in the source code but not in the executable program.
 
-Neither a base address selection entry nor an end of list
+Neither a base address selection entry nor an end-of-list
 entry includes a location description.
 
+\needlines{4}
 \textit{When a DWARF consumer is parsing and decoding a location
 list, it must recognize the beginning and ending address
-offsets of (0, 0) for an end of list entry and (0, \doublequote{-1}) for
+offsets of (0, 0) for an end-of-list entry and 
+\mbox{(0, \texttt{maximum-address})} for
 a default location list entry prior to applying any base
 address. Any other pair of offsets beginning with 0 is a
 valid normal location list entry. Next, it must recognize the
-beginning address offset of \doublequote{-1} for a base address selection
+beginning address offset of \texttt{maximum-address} for a base address selection
 entry prior to applying any base address. The current base
 address is not applied to the subsequent value (although there
 may be an underlying object language relocation that affects
 that value).}
 
-\textit{A base address selection entry and an end of list
+\textit{A base address selection entry and an end-of-list
 entry for a location list are identical to a base address
-selection entry and end of list entry, respectively, for a
+selection entry and end-of-list entry, respectively, for a
 \addtoindex{range list}
 (see Section \refersec{chap:noncontiguousaddressranges}) 
-in interpretation
-and representation.}
+in interpretation and representation.}
 
 \subsubsection{Location Lists in Split Objects}
 \label{chap:locationlistsinsplitobjects}
@@ -2141,9 +2190,8 @@ description follows the fields that define the address range.
 
 \section{Types of Program Entities}
 \label{chap:typesofprogramentities}
-Any 
 \hypertarget{chap:DWATtypetypeofdeclaration}{}
-debugging information entry describing a declaration that
+Any debugging information entry describing a declaration that
 has a type has 
 \addtoindexx{type attribute}
 a \DWATtype{} attribute, whose value is a
@@ -2239,11 +2287,10 @@ for objects or types that were not actually declared in the
 source of the application. An example is a formal parameter
 %FIXME: The word 'this' should be rendered like a variant italic,
 %FIXME: not as a quoted name. Changed to tt font--RB
-entry to represent the 
+entry to represent the hidden 
 \texttt{this} parameter\index{this parameter@\texttt{this} parameter}
-hidden \texttt{this} parameter that most \addtoindex{C++}
-implementations pass as the first argument to non-static member
-functions.}  
+that most \addtoindex{C++} implementations pass as the first argument 
+to non-static member functions.}  
 
 Any debugging information entry representing the
 \addtoindexx{artificial attribute}
@@ -2305,11 +2352,9 @@ entry is assumed to exist within a
 \addtoindexi{flat}{address space!flat}
 address space.
 
-\textit{Some systems support different classes of 
-addresses
-\addtoindexx{address class}. 
-The
-address class may affect the way a pointer is dereferenced
+\textit{Some systems support different 
+classes of addresses\addtoindexx{address class}. 
+The address class may affect the way a pointer is dereferenced
 or the way a subroutine is called.}
 
 
@@ -2389,19 +2434,18 @@ of a program entity has a
 
 \subsection{Declarations Completing Non-Defining Declarations}
 A debugging information entry that represents a 
-\hypertarget{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{}
-declaration that completes another (earlier) 
-non\dash defining declaration may have a 
+declaration\hypertarget{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{}
+that completes another (earlier) non-defining declaration may have a 
 \DWATspecification{}
 attribute whose value is a \livelink{chap:classreference}{reference} to
-the debugging information entry representing the non-defining declaration. A debugging
-information entry with a 
+the debugging information entry representing the non-defining declaration. 
+A debugging information entry with a 
 \DWATspecification{} 
-attribute does not need to duplicate information
-provided by the debugging information entry referenced by that specification attribute.
+attribute does not need to duplicate information provided by the 
+debugging information entry referenced by that specification attribute.
 
 When the non-defining declaration is contained within a type that has
-been placed in a separate type unit (see Section \refersec{chap:separatetypeunitentries}), 
+been placed in a separate type unit (see Section \refersec{chap:typeunitentries}), 
 the \DWATspecification{} attribute cannot refer directly to the entry in
 the type unit. Instead, the current compilation unit may contain a
 \doublequote{skeleton} declaration of the type, which contains only the relevant
@@ -2414,7 +2458,7 @@ attribute whose value is the type signature
 (see Section \refersec{datarep:typesignaturecomputation}).
 
 
-It is not the case that all attributes of the debugging information entry referenced by a
+Not all attributes of the debugging information entry referenced by a
 \DWATspecification{} attribute 
 apply to the referring debugging information entry.
 
@@ -2489,8 +2533,7 @@ indicates that no column has been specified.
 
 \section{Identifier Names}
 \label{chap:identifiernames}
-Any 
-\hypertarget{chap:DWATnamenameofdeclaration}{}
+Any\hypertarget{chap:DWATnamenameofdeclaration}{}
 debugging information entry 
 \addtoindexx{identifier names}
 representing 
@@ -2507,21 +2550,20 @@ no name attribute, or containing a name attribute whose value
 consists of a name containing a single null byte, represents
 a program entity for which no name was given in the source.
 
-\textit{Because the names of program objects described by DWARF are the
-names as they appear in the source program, implementations
+\textit{Because the names of program objects described by DWARF are 
+the names as they appear in the source program, implementations
 of language translators that use some form of mangled name
 \addtoindexx{mangled names}
-(as do many implementations of \addtoindex{C++}) should use the unmangled
-form of the name in the 
-DWARF \DWATname{} attribute,
+(as do many implementations of \addtoindex{C++}) should use the 
+unmangled form of the name in the 
+\DWATname{} attribute,
 \addtoindexx{name attribute}
 including the keyword operator (in names such as \doublequote{operator +}),
 if present. See also 
-Section \referfol{chap:linkagenames} regarding the use
-of \DWATlinkagename{} for 
+Section \referfol{chap:linkagenames} regarding the use of 
+\DWATlinkagename{} for 
 \addtoindex{mangled names}.
-Sequences of
-multiple whitespace characters may be compressed.}
+Sequences of multiple whitespace characters may be compressed.}
 
 \section{Data Locations and DWARF Procedures}
 Any debugging information entry describing a data object (which
@@ -2608,10 +2650,12 @@ relocated address for the entity.
 
 \textit{While the \DWATentrypc{}
 attribute might also seem appropriate for this purpose,
-historically the \DWATlowpc{} attribute was used before the
+historically the \DWATlowpc{} attribute was used before
 \DWATentrypc{} was introduced 
 (in \addtoindex{DWARF Version 3}). There is
-insufficient reason to change this.}
+insufficient reason to change this;
+\DWATlowpc{} serves as a default entry PC address as described
+in Section \refersec{chap:entryaddress}.}
 
 \needlines{8}
 \subsection{Continuous Address Range}
@@ -2687,8 +2731,8 @@ Each entry in a \addtoindex{range list} is either a
 \addtoindex{range list} entry,
 \addtoindexx{base address selection entry!in range list}
 a base address selection entry, or an 
-\addtoindexx{end of list entry!in range list}
-end of list entry.
+\addtoindexx{end-of-list entry!in range list}
+end-of-list entry.
 
 A \addtoindex{range list} entry consists of:
 \begin{enumerate}[1. ]
@@ -2712,7 +2756,7 @@ equal to the beginning address.
 
 \needlines{4}
 \textit{A \addtoindex{range list} entry (but not a base address 
-selection or end of list entry) whose beginning and
+selection or end-of-list entry) whose beginning and
 ending addresses are equal has no effect because the size of the 
 range covered by such an entry is zero.}
 \end{enumerate}
@@ -2748,20 +2792,20 @@ affects only the list in which it is contained.}
 
 
 The end of any given \addtoindex{range list} is marked by an 
-\addtoindexx{end of list entry!in range list}
-end of list entry, 
+\addtoindexx{end-of-list entry!in range list}
+end-of-list entry, 
 which consists of a 0 for the beginning address
 offset and a 0 for the ending address offset. 
 A \addtoindex{range list}
-containing only an end of list entry describes an empty scope
+containing only an end-of-list entry describes an empty scope
 (which contains no instructions).
 
 \textit{A base address selection entry and an 
-\addtoindexx{end of list entry!in range list}
-end of list entry for
+\addtoindexx{end-of-list entry!in range list}
+end-of-list entry for
 a \addtoindex{range list} 
 are identical to a base address selection entry
-and end of list entry, respectively, for a location list
+and end-of-list entry, respectively, for a location list
 (see Section \refersec{chap:locationlists}) 
 in interpretation and representation.}
 
@@ -2777,12 +2821,11 @@ cases, the entry address needs to be specified explicitly.}
 Any debugging information entry describing an entity that has
 a range of code addresses, which includes compilation units,
 module initialization, subroutines, 
-ordinary \livelink{chap:lexicalblock}{block}, 
-try/catch \nolink{blocks} (see Section 
-\refersec{chap:tryandcatchblockentries}),
+\livelink{chap:lexicalblock}{lexical \nolink{blocks}},
+\livelink{chap:tryandcatchblockentries}{try/catch \nolink{blocks}},
 and the like, may have a \DWATentrypcNAME{} attribute to
-indicate the first executable instruction within that range
-\hypertarget{chap:entryaddressofscope}{}
+indicate the first executable instruction within that 
+range\hypertarget{chap:entryaddressofscope}{}
 of addresses. The value of the \DWATentrypcNAME{} attribute is a
 relocated address if the
 value of \DWATentrypcNAME{} is of class address; or if it is of class
@@ -2837,7 +2880,7 @@ rules of the applicable programming language.
 \textit{The applicable attributes include: 
 \DWATallocated,
 \DWATassociated, 
-\DWATbitoffset, 
+%\DWATbitoffset, 
 \DWATbitsize,
 \DWATbitstride,
 \DWATbytesize,
@@ -2846,18 +2889,18 @@ rules of the applicable programming language.
 \DWATlowerbound,
 \DWATrank,
 \DWATupperbound,
-(and possibly others).}
+and possibly others.}
 
 \needlines{4}
 \section{Entity Descriptions}
 \textit{Some debugging information entries may describe entities
-in the program that are artificial, or which otherwise are
-\doublequote{named} in ways which are not valid identifiers in the
+in the program that are artificial, or which otherwise have a 
+\doublequote{name} that is not a valid identifier in the
 programming language. For example, several languages may
 capture or freeze the value of a variable at a particular
 point in the program. 
 \addtoindex{Ada} 95 has package elaboration routines,
-type descriptions of the form typename\textquoteright Class, and 
+type descriptions of the form \texttt{typename\textquoteright Class}, and 
 \doublequote{access typename} parameters.  }
 
 Generally, any debugging information
@@ -2946,8 +2989,7 @@ and \DWTAGvariable.
 
 \section{Template Parameters}
 \label{chap:templateparameters}
-\textit{
-In \addtoindex{C++}, a template is a generic definition of a class, function, member
+\textit{In \addtoindex{C++}, a template is a generic definition of a class, function, member
 function, or typedef (alias).  A template has formal parameters that
 can be types or constant values; the class, function,
 member function, or typedef is instantiated differently for each
index 086de49..afea12e 100644 (file)
@@ -15,7 +15,8 @@ license document, but changing it is not allowed.
 
 \textbf{\Large{PREAMBLE}} \\
 The purpose of this License is to make a manual, textbook,
-or other functional and useful document free in the sense of
+or other functional and useful document 
+\doublequote{free} in the sense of
 freedom: to assure everyone the effective freedom to copy
 and redistribute it, with or without modifying it, either
 commercially or noncommercially. Secondarily, this License
@@ -39,12 +40,13 @@ License principally for works whose purpose is instruction
 or reference.  
 
 \section{APPLICABILITY AND DEFINITIONS}
+\label{gnu:applicabilityanddefinitions}
 This License applies to any manual or other work, in any
 medium, that contains a notice placed by the copyright
 holder saying it can be distributed under the terms of this
 License. Such a notice grants a world-wide, royalty-free
 license, unlimited in duration, to use that work under
-the conditions stated herein. The \doublequote{Document,} below,
+the conditions stated herein. The \doublequote{Document}, below,
 refers to any such manual or work. Any member of the public
 is a licensee, and is addressed as \doublequote{you.} You accept the
 license if you copy, modify or distribute the work in a way
@@ -139,6 +141,7 @@ Warranty Disclaimers may have is void and has no effect on
 the meaning of this License.
 
 \section{VERBATIM COPYING}
+\label{gnu:verbatimcopying}
 You may copy and distribute the Document in any medium, either
 commercially or noncommercially, provided that this License,
 the copyright notices, and the license notice saying this
@@ -148,14 +151,15 @@ this License. You may not use technical measures to obstruct
 or control the reading or further copying of the copies you
 make or distribute. However, you may accept compensation in
 exchange for copies. If you distribute a large enough number
-of copies you must also follow the conditions in section 3.
+of copies you must also follow the conditions in 
+section \ref{gnu:copyinginquantity}.
 
 You may also lend copies, under the same conditions stated
 above, and you may publicly display copies.
 
 
 \section{COPYING IN QUANTITY}
-
+\label{gnu:copyinginquantity}
 If you publish printed copies (or copies in media that commonly
 have printed covers) of the Document, numbering more than 100,
 and the Document\textquoteright s license notice requires Cover Texts,
@@ -196,10 +200,11 @@ copies, to give them a chance to provide you with an updated
 version of the Document.
 
 
-MODIFICATIONS
-
+\section{MODIFICATIONS}
+\label{gnu:modifications}
 You may copy and distribute a Modified Version of the Document
-under the conditions of sections 2 and 3 above, provided that
+under the conditions of sections \ref{gnu:verbatimcopying} and 
+\ref{gnu:copyinginquantity} above, provided that
 you release the Modified Version under precisely this License,
 with the Modified Version filling the role of the Document,
 thus licensing distribution and modification of the Modified
@@ -307,9 +312,9 @@ License give permission to use their names for publicity for
 or to assert or imply endorsement of any Modified Version.
 
 \section{COMBINING DOCUMENTS}
-
+\label{gnu:combiningdocuments}
 You may combine the Document with other documents released
-under this License, under the terms defined in section 4
+under this License, under the terms defined in section \ref{gnu:combiningdocuments}
 above for modified versions, provided that you include in
 the combination all of the Invariant Sections of all of the
 original documents, unmodified, and list them all as Invariant
@@ -326,15 +331,15 @@ if known, or else a unique number. Make the same adjustment
 to the section titles in the list of Invariant Sections in
 the license notice of the combined work.
 
-In the combination, you must combine any sections entitled
+In the combination, you must combine any sections Entitled
 \doublequote{History} in the various original documents, forming
-one section entitled \doublequote{History;} likewise combine any
-sections entitled \doublequote{Acknowledgements,} and any sections
-entitled \doublequote{Dedications.} You must delete all sections
-entitled \doublequote{Endorsements.}
+one section Entitled \doublequote{History;} likewise combine any
+sections Entitled \doublequote{Acknowledgements,} and any sections
+Entitled \doublequote{Dedications.} You must delete all sections
+Entitled \doublequote{Endorsements.}
 
 \section{COLLECTIONS OF DOCUMENTS}
-
+\label{gnu:collectionsofdocuments}
 You may make a collection consisting of the Document and
 other documents released under this License, and replace the
 individual copies of this License in the various documents
@@ -349,8 +354,8 @@ and follow this License in all other respects regarding
 verbatim copying of that document.
 
 \section{AGGREGATION WITH INDEPENDENT WORKS}
-
-A compilation of the Document or its derivatives with
+\label{gnu:aggregationwithindependentworks}
+A compilation of the Document or its derivatives withall tail and normal calls are described
 other separate and independent documents or works, in
 or on a volume of a storage or distribution medium, is
 called an \doublequote{aggregate} if the copyright resulting from
@@ -360,7 +365,7 @@ permit. When the Document is included in an aggregate, this
 License does not apply to the other works in the aggregate
 which are not themselves derivative works of the Document.
 
-If the Cover Text requirement of section 3 is applicable to
+If the Cover Text requirement of section \ref{gnu:copyinginquantity}  is applicable to
 these copies of the Document, then if the Document is less
 than one half of the entire aggregate, the Document\textquoteright s Cover
 Texts may be placed on covers that bracket the Document within
@@ -370,10 +375,10 @@ on printed covers that bracket the whole aggregate.
 
 
 \section{TRANSLATION}
-
+\label{gnu:translation}
 Translation is considered a kind of modification, so you may
 distribute translations of the Document under the terms of
-section 4. Replacing Invariant Sections with translations
+section \ref{gnu:modifications}. Replacing Invariant Sections with translations
 requires special permission from their copyright holders,
 but you may include translations of some or all Invariant
 Sections in addition to the original versions of these
@@ -388,11 +393,12 @@ version will prevail.
 
 If a section in the Document is Entitled
 \doublequote{Acknowledgements}, \doublequote{Dedications}, or \doublequote{History},
-the requirement (section 4) to Preserve its Title (section 1)
+the requirement (section \ref{gnu:modifications}) to Preserve 
+its Title (section \ref{gnu:applicabilityanddefinitions})
 will typically require changing the actual title.
 
 \section{TERMINATION}
-
+\label{gnu:termination}
 You may not copy, modify, sublicense, or distribute the
 Document except as expressly provided under this License. Any
 attempt otherwise to copy, modify, sublicense, or distribute
@@ -421,7 +427,7 @@ a copy of some or all of the same material does not give you
 any rights to use it.
 
 \section{FUTURE REVISIONS OF THIS LICENSE}
-
+\label{gnu:futurerevisionsofthislicense}
 The Free Software Foundation may publish new, revised
 versions of the GNU Free Documentation License from time to
 time. Such new versions will be similar in spirit to the
@@ -443,7 +449,7 @@ statement of acceptance of a version permanently authorizes
 you to choose that version for the Document.
 
 \section{RELICENSING}
-
+\label{gnu:relicensing}
 \doublequote{Massive Multiauthor Collaboration Site} (or \doublequote{MMC
 Site}) means any World Wide Web server that publishes
 copyrightable works and also provides prominent facilities for
@@ -473,7 +479,7 @@ the site under CC-BY-SA on the same site at any time before
 August 1, 2009, provided the MMC is eligible for relicensing.
 
 
-\textbf{ADDENDUM: How to use this License for your documents}
+\textbf{\Large{ADDENDUM: How to use this License for your documents}}
 
 To use this License in a document you have written, include
 a copy of the License in the document and put the following
index e0948e7..84132a7 100644 (file)
@@ -4,10 +4,8 @@
 This document defines a format for describing programs to
 facilitate user source level debugging. This description
 can be generated by compilers, assemblers and linkage
-editors. 
-It can be used by debuggers and other tools. 
-The
-debugging information format does not favor the design of any
+editors. It can be used by debuggers and other tools. 
+The debugging information format does not favor the design of any
 compiler or debugger. 
 Instead, the goal is to create a method
 of communicating an accurate picture of the source program
@@ -37,10 +35,10 @@ believed to cover most debugging information needs of
 and \addtoindex{Fortran}; it also covers the basic needs
 of various other languages.
 
-This document describes \addtoindex{DWARF Version 4},
-the fourth generation
-of debugging information based on the DWARF format. DWARF
-Version 4 extends \addtoindex{DWARF Version 3}
+This document describes \DWARFVersionV,
+the fifth generation
+of debugging information based on the DWARF format. 
+\DWARFVersionV{} extends \DWARFVersionIV{}
 in a compatible manner.
 
 The intended audience for this document is the developers
@@ -77,10 +75,9 @@ contained outside of the debugging information entries. The
 encoding of the DWARF information is presented in 
 Section \ref{datarep:datarepresentation}.
 
-This organization closely follows that used in the DWARF
-Version 3 document. Except where needed to incorporate
-new material or to correct errors, the 
-\addtoindex{DWARF Version 3}
+This organization closely follows that used in the 
+\DWARFVersionIV{} document. Except where needed to incorporate
+new material or to correct errors, the \DWARFVersionIV{}
 text is generally reused in this document with little or
 no modification.
 
@@ -163,18 +160,19 @@ This enhances DWARF support for very large programs by saving space
 and improving link times.
 \item Replace the \dotdebugmacinfo{} macro information representation with
 a much more compact \dotdebugmacro{} representation.
-\item Replace the \dotdebugpubnames{} and \dotdebugtypes{} section
+\item Replace the \dotdebugpubnames{} and \dotdebugtypes{} sections
 with a single and more functional name index section, \dotdebugnames{}.
 \item Add a new debugging information entry, related attributes and
 DWARF expression operators, to describe call information, 
 including identification of tail calls and tail recursion.
-This facilitates debugging optimized code.
+This facilitates debugging of optimized code.
 \item Add a new attribute, \DWATnoreturnNAME{}, to identify 
 a subprogram that does not return to its caller.
 \item Add a new attribute, \DWATrankNAME{}, to describe the 
 dimensionality of an array with dynamic rank.
 \item Add a new tag, \DWTAGgenericsubrangeNAME{}, to describe the
 bounds of Fortran assumed-rank arrays.
+\item Add a new tag, \DWTAGcoarraytypeNAME{}, to describe Fortran co-arrays.
 \item Add language codes for C 2011, C++ 2003, C++ 2011, C++ 2014,
 Dylan, Fortran 2003, Fortran 2008, Go, Haskell, 
 Julia, Modula 3, Ocaml, Rust, OpenCL and Swift.
@@ -186,17 +184,19 @@ DWARF Version 5 is compatible with DWARF Version 4 except as follows:
 \begin{itemize}
 \item The line number table header is substantially revised.
 \item New operand forms for attribute values are defined 
-(\DWFORMaddrxNAME, \DWFORMdatasixteenNAME, \DWFORMlinestrpNAME, \DWFORMrefsupNAME, 
-\DWFORMstrpNAME, \DWFORMstrpsupNAME, \DWFORMstrxNAME).
-(Because a pre-DWARF Version 5 consumer will not be able to interpret these even to
-ignore and skip over them, such new forms must be considered incompatible.)
-\item A location list entry (see Section \refersec{chap:locationlists}) with 
-the address range \mbox{(0, \doublequote{-1})} is defined as the new default location 
-list entry.
-\item In a string type (see Section \refersec{chap:stringtypeentries}), a \DWATbytesizeNAME{}
-attribute is defined to always describe the size of the string type. (Previously
-it described the size of the optional string length data field if the \DWATstringlengthNAME{}
-attribute was present.)
+(\DWFORMaddrxNAME, \DWFORMdatasixteenNAME, \DWFORMlinestrpNAME, 
+\DWFORMrefsupNAME, \DWFORMstrpsupNAME, \DWFORMstrxNAME).
+(Because a pre-DWARF Version 5 consumer will not be able to interpret 
+these even to ignore and skip over them, such new forms must be 
+considered incompatible.)
+\item A location list entry (see Section \refersec{chap:locationlists}) 
+with the address range \mbox{(0, \textit{maximum-address})} is defined 
+as the new default location list entry.
+\item In a string type (see Section \refersec{chap:stringtypeentries}), 
+a \DWATbytesizeNAME{} attribute is defined to always describe the size 
+of the string type. (Previously
+it described the size of the optional string length data field if the 
+\DWATstringlengthNAME{} attribute was present.)
 \end{itemize}
 
 While not strictly an incompatibility, the macro information 
@@ -206,24 +206,29 @@ representation. While the two representations cannot both be
 used in the same compilation unit, they can co-exist in 
 executable or shared images.
 
+Similar comments apply to replacement of the \dotdebugpubnames{} 
+and \dotdebugpubtypes{} sections with the new \dotdebugnames{} 
+section.
+
 \needlines{4}
 \section{Changes from Version 3 to Version 4}
 \addtoindexx{DWARF Version 4}
-The following is a list of the major changes made to the DWARF Debugging Information
-Format since Version 3 was published. The list is not meant to be exhaustive.
+The following is a list of the major changes made to the 
+DWARF Debugging Information Format since Version 3 was 
+published. The list is not meant to be exhaustive.
 \begin{itemize}
 \item Reformulate 
 Section 2.6 (Location Descriptions) 
 to better distinguish DWARF location descriptions, which
-compute the location where a value is found (such as an address in memory or a register
-name) from DWARF expressions, which compute a final value (such as an array bound).
-\item Add support for bundled instructions on machine architectures where instructions do not
-occupy a whole number of bytes.
-\item Add a new attribute form for 
-section offsets, \DWFORMsecoffsetNAME
-\addtoindexx{section offset}
-to replace the use
-of \DWFORMdatafourNAME{} and \DWFORMdataeightNAME{} for section offsets.
+compute the location where a value is found (such as an 
+address in memory or a register name) from DWARF expressions, 
+which compute a final value (such as an array bound).
+\item Add support for bundled instructions on machine architectures 
+where instructions do not occupy a whole number of bytes.
+\item Add a new attribute form for section offsets
+\DWFORMsecoffsetNAME,\addtoindexx{section offset}
+to replace the use of 
+\DWFORMdatafourNAME{} and \DWFORMdataeightNAME{} for section offsets.
 \item Add an attribute, \DWATmainsubprogramNAME, to identify the main subprogram of a
 program.
 \item Define default array lower bound values for each supported language.
index 70644e8..194be98 100644 (file)
@@ -9,19 +9,17 @@ In the descriptions that follow, these terms are used to
 specify the representation of DWARF sections:
 \begin{itemize}
 \item
-Initial length, section offset and 
-\addtoindex{section length}, which are
+\HFTinitiallength{}, \HFTsectionoffset{} and 
+\HFTsectionlength{}, which are
 defined in 
-Sections \refersec{datarep:locationdescriptions} and 
+Sections \refersec{datarep:initiallengthvalues} and 
 \refersec{datarep:32bitand64bitdwarfformats}.
 \item
-Sbyte, 
-\addtoindex{ubyte}, 
-\addtoindex{uhalf}, and 
-\addtoindex{uword}, 
-which 
-\addtoindexx{sbyte}
-are defined in 
+\HFTsbyte{}, 
+\HFTubyte{}, 
+\HFTuhalf{} and 
+\HFTuword{}, 
+which are defined in 
 Section \refersec{datarep:integerrepresentationnames}.
 \end{itemize}
 
@@ -59,9 +57,9 @@ entries for different compilation units within a large program
 would potentially require the access of many memory pages,
 probably hurting debugger performance.}
 
-To make lookups of program entities (data objects, functions
-and types) by name or by address faster, a producer of DWARF
-information may provide three different types of tables
+To make lookups of program entities (including data objects, 
+functions and types) by name or by address faster, a producer 
+of DWARF information may provide two different types of tables
 containing information about the debugging information
 entries owned by a particular compilation unit entry in a
 more condensed format.
@@ -354,7 +352,7 @@ rounded up to a multiple of 4.
 \item \texttt{augmentation\_string} (sequence of characters) \\
 A vendor-specific augmentation string, which provides additional 
 information about the contents of this index. If provided, the string
-should begin with a 4-byte vendor ID. The remainder of the
+should begin with a 4-character vendor ID. The remainder of the
 string is meant to be read by a cooperating consumer, and its
 contents and interpretation are not specified here. The
 string should be padded with null characters to a multiple of
@@ -639,7 +637,7 @@ object code. The matrix would have columns for:}
 \textit{Such a matrix, however, would be impractically large. We
 shrink it with two techniques. First, we delete from
 the matrix each row whose file, line, source column and
-\addtoindex{discriminator} information 
+discriminator\addttindexx{discriminator} 
 is identical with that of its
 predecessors. Any deleted row would never be the beginning of
 a source statement. Second, we design a byte\dash coded language
@@ -856,7 +854,7 @@ compilation unit, not including the length field itself
 
 \item \texttt{version} (\addtoindex{uhalf}) \\
 A version number\addtoindexx{version number!line number information} 
-(see Appendix \refersec{datarep:linenumberinformation}). 
+(see Section \refersec{datarep:linenumberinformation}). 
 This number is specific to
 the line number information and is independent of the DWARF
 version number. 
@@ -1366,10 +1364,10 @@ is the result of the adjusted opcode divided by the
     (\addttindex{op\_index} + \addtoindex{operation advance}) \% \addttindex{maximum\_operations\_per\_instruction}
 \end{alltt}
 
-\textit{When the \addttindex{maximum\_operations\_per\_instruction} field is 1,
-\texttt{op\_index} is always 0 and these calculations simplify to those
-given for addresses in 
-\addtoindex{DWARF Version 3}.}
+\textit{When the \addttindex{maximum\_operations\_per\_instruction} 
+field is 1,
+\texttt{op\_index} is always 0 and these calculations simplify to 
+those given for addresses in \DWARFVersionIII{} and earlier.}
 
 The amount to increment the line register is the 
 \addttindex{line\_base} plus
@@ -1633,9 +1631,9 @@ integer. It sets the
 
 \end{enumerate}
 
-\textit{The \texttt{DW\_LNE\_define\_file} operation defined
+\textit{The DW\_LNE\_define\_file operation defined
 in earlier versions of DWARF is deprecated in \DWARFVersionV.}
-\addtoindexx{\texttt{DW\_LNE\_define\_file}!deprecated}
+\addtoindexx{DW\_LNE\_define\_file  (deprecated)}
 
 \textit{Appendix \refersec{app:linenumberprogramexample} 
 gives some sample line number programs.}
@@ -1866,7 +1864,7 @@ A \DWMACROendfileTARG{} entry has no operands. The presence of
 the entry marks the end of the current source file inclusion.
 
 \subsubsection{Transparent Inclusion of a Sequence of Entries}
-\textit{The transparent inclusion entry types makes it possible 
+\textit{The transparent inclusion entry types make it possible 
 to share duplicate sequences of macro information entries among different 
 compilation units or object files.}
 
index 9dabf1b..516c904 100644 (file)
@@ -3,43 +3,46 @@
 This section describes debugging information entries that
 relate to different levels of program scope: compilation,
 module, subprogram, and so on. Except for separate type
-entries (see Section \refersec{chap:separatetypeunitentries}), 
+entries (see Section \refersec{chap:typeunitentries}), 
 these entries may be thought of
 as bounded by ranges of text addresses within the program.
 
 \section{Unit Entries}
 An object file may contain one or more compilation units,
 of which there are
-\addtoindexx{unit|see {compilation unit, partial unit \textit{or} type unit}} 
+\addtoindexx{unit|see {compilation unit}} 
 \addtoindexx{compilation unit}
-three kinds: 
-\addtoindexx{normal compilation unit}
-\addtoindexx{normal compilation unit|see {compilation unit}}
+these kinds:
 normal compilation units,
-partial compilation units and 
-\addtoindexx{type unit}
-type units. A 
+partial compilation units, 
+type units,\addtoindexx{type unit} and
+skeleton units. A 
 \addtoindex{partial compilation unit}
 is related to one or more other compilation units that
-import it. A 
-\addtoindex{type unit} represents 
-a single complete type in a
-separate unit. Either a normal compilation unit or a 
+import it.  
+A skeleton unit contains only a subset of the attributes of 
+a full normal or partial compilation unit plus two attributes 
+used to locate the DWARF object file where the full 
+compilation unit can be found.
+A \addtoindex{type unit} represents a single complete type 
+in a compilation unit of its own.
+Either a normal compilation unit or a 
 \addtoindex{partial compilation unit}
 may be logically incorporated into another
 compilation unit using an 
-\addtoindex{imported unit entry}.
+\addtoindex{imported unit entry}
+(see Section \refersec{chap:importedunitentries}).
 
 
 \subsection[Normal and Partial CU Entries]{Normal and Partial Compilation Unit Entries}
 \label{chap:normalandpartialcompilationunitentries}
-
-A \addtoindex{normal compilation unit} is represented by a debugging
-information entry with the 
-tag \DWTAGcompileunitTARG. 
-A \addtoindex{partial compilation unit} is represented by a debugging information
-entry with the 
-tag \DWTAGpartialunitTARG.
+A \addtoindex{normal compilation unit}\addtoindexx{compilation unit!normal} 
+is represented by a debugging information entry with the tag 
+\DWTAGcompileunitTARG. 
+A \addtoindex{partial compilation unit}\addtoindexx{compilation unit!partial} 
+is represented by a debugging information entry with the tag 
+\DWTAGpartialunitTARG.
 
 In a simple normal compilation, a single compilation unit with
 the tag 
@@ -187,14 +190,12 @@ in Table \refersec{tab:languagenames}.
 \end{centering}
 
 \needlines{6}
-\item A \DWATstmtlist{}
+\item A \DWATstmtlist{}\hypertarget{chap:DWATstmtlistlinenumberinformationforunit}{}
 attribute whose value is 
 \addtoindexx{statement list attribute}
-a 
+a
 \addtoindexx{section offset!in statement list attribute}
-section
-\hypertarget{chap:DWATstmtlistlinenumberinformationforunit}{}
-offset to the line number information for this compilation
+section offset to the line number information for this compilation
 unit.
 
 This information is placed in a separate object file
@@ -204,13 +205,12 @@ value of the statement list attribute is the offset in the
 information for this compilation unit 
 (see Section \refersec{chap:linenumberinformation}).
 
-\item A \DWATmacros{} attribute 
+\item A \DWATmacros{}\hypertarget{chap:DWATmacrosmacroinformation}{}
+attribute 
 \addtoindexx{macro information attribute}
 whose value is a 
 \addtoindexx{section offset!in macro information attribute}
-section
-\hypertarget{chap:DWATmacrosmacroinformation}{}
-offset to the macro information for this compilation unit.
+section offset to the macro information for this compilation unit.
 
 This information is placed in a separate object file section
 from the debugging information entries themselves. The
@@ -387,7 +387,6 @@ References to range lists (using \DWFORMsecoffset)
 within the compilation unit are
 interpreted as offsets relative to this base.
 
-
 \end{enumerate}
 
 The  base address of a compilation unit is defined as the
@@ -398,6 +397,8 @@ of that compilation unit is not valid.
 
 \subsection{Skeleton Compilation Unit Entries}
 \label{chap:skeletoncompilationunitentries}
+\addtoindexx{compilation unit!skeleton}
+\addtoindexx{skeleton compilation unit}
 When generating a split DWARF object (see 
 Section \refersec{datarep:splitdwarfobjects}), the
 compilation unit in the \dotdebuginfo{} section is a "skeleton"
@@ -409,7 +410,8 @@ can be found, and for the consumer to interpret references to
 addresses in the program. 
 
 A skeleton compilation unit has no
-children, and may have the following attributes:
+children, and may have the following attributes
+(including at least \DWATdwoname{} and \DWATdwoid{}):
 \begin{enumerate}[1. ]
 
 \item
@@ -476,32 +478,12 @@ unit entry, except for \DWATdwoid, which should appear in
 both entries so that the consumer can verify that it has
 found the correct DWARF object.
 
-
-\subsection{Imported Unit Entries}
-\label{chap:importedunitentries}
-The 
-\hypertarget{chap:DWATimportimportedunit}{}
-place where a normal or partial unit is imported is
-represented by a debugging information entry with the 
-\addtoindexx{imported unit entry}
-tag \DWTAGimportedunitTARG. 
-An imported unit entry contains 
-\addtoindexx{import attribute}
-a
-\DWATimport{} attribute 
-whose value is a \livelink{chap:classreference}{reference} to the
-normal or partial compilation unit whose declarations logically
-belong at the place of the imported unit entry.
-
-\textit{An imported unit entry does not necessarily correspond to
-any entity or construct in the source program. It is merely
-\doublequote{glue} used to relate a partial unit, or a compilation
-unit used as a partial unit, to a place in some other
-compilation unit.}
-
 \needlines{6}
-\subsection{Separate Type Unit Entries}
-\label{chap:separatetypeunitentries}
+\subsection{Type Unit Entries}
+\label{chap:typeunitentries}
+\addtoindexx{type unit}
+\addtoindexx{type unit|see{\textit{also} compilation unit}}
+\addtoindexx{compilation unit!\textit{see also} type unit}
 An object file may contain any number of separate type
 unit entries, each representing a single complete type
 definition. 
@@ -517,7 +499,10 @@ information entries that represent the definition of a single
 type, plus additional debugging information entries that may
 be necessary to include as part of the definition of the type.
 
-A type unit entry may have a 
+A type unit entry may have the following attributes:
+\begin{enumerate}[1. ]
+
+\item A 
 \DWATlanguage{} attribute, 
 whose
 \addtoindexx{language attribute}
@@ -525,7 +510,7 @@ constant value is an integer code indicating the source
 language used to define the type. The set of language names
 and their meanings are given in Table \refersec{tab:languagenames}.
 
-A type unit entry may have a 
+\item A 
 \DWATstroffsetsbase\addtoindexx{string base offset attribute}
 attribute, whose value is a reference. This attribute points
 to the first string offset of the type unit's contribution to
@@ -533,7 +518,7 @@ the \dotdebugstroffsets{} section. Indirect string references
 (using \DWFORMstrx) within the type unit must be interpreted
 as indices relative to this base.
 
-A type unit entry may have a \DWATstmtlist{} attribute, whose
+\item A \DWATstmtlist{} attribute, whose
 value is a section offset to a line number table for this
 type unit. Because type units do not describe any code, they
 do not actually need a line number table, but the line number
@@ -541,7 +526,7 @@ tables also contain a list of directories and file names that
 may be referenced by the \DWATdeclfile{} attribute. In a
 normal object file with a regular compilation unit entry, the
 type unit entries can simply refer to the line number table
-used by the compilation unit. In a split DWARF object, where
+used by the compilation unit. In a split DWARF object file, where
 the type units are located in a separate DWARF object file,
 the \DWATstmtlist{} attribute refers to a "skeleton"
 line number table in the \dotdebuglinedwo{} section, which
@@ -549,12 +534,13 @@ contains only the list of directories and file names. All
 type unit entries in a split DWARF object may (but are not
 required to) refer to the same skeleton line number table.
 
-A type unit entry may have a \DWATuseUTFeight{} attribute, which is a flag
+\item A \DWATuseUTFeight{} attribute, which is a flag
 whose presence indicates that all strings referred to by this type
 unit entry, its children, and the skeleton line number table, are
 represented using the UTF-8 representation.
 
-\needlines{4}
+\end{enumerate}
+
 A \addtoindex{type unit} entry for a given type T owns a debugging
 information entry that represents a defining declaration
 of type T. If the type is nested within enclosing types or
@@ -583,7 +569,7 @@ for separate type units. Base types and other small types
 are not usually worth the overhead of placement in separate
 type units. Types that are unlikely to be replicated, such
 as those defined in the main source file, are also better
-left in the main compilation unit.}
+left in the main compilation unit.}F
 
 \section{Module, Namespace and Importing Entries}
 \textit{Modules and namespaces provide a means to collect related
@@ -698,9 +684,9 @@ owned program entities may be declarations,
 including certain declarations that are also object or
 function definitions.}
 
-A namespace may have a \DWATexportsymbolsNAME{} attribute
-\livetarg{chap:DWATexportsymbolsofnamespace}{}
-\addtoindexx{export symbols attribute}
+A namespace may have a 
+\DWATexportsymbolsNAME{}\livetarg{chap:DWATexportsymbolsofnamespace}{}
+attribute\addtoindexx{export symbols attribute}
 \addtoindexx{inline namespace|see{\textit{also} export symbols attribute}}
 which indicates that all member names defined within the 
 namespace may be referenced as if they were defined within 
@@ -950,6 +936,28 @@ Appendix  \refersec{app:namespaceexamples}
 for an example.
 }
 
+\subsection{Imported Unit Entries}
+\label{chap:importedunitentries}
+The 
+\hypertarget{chap:DWATimportimportedunit}{}
+place where a normal or partial unit is imported is
+represented by a debugging information entry with the 
+\addtoindexx{imported unit entry}
+tag \DWTAGimportedunitTARG. 
+An imported unit entry contains 
+\addtoindexx{import attribute}
+a
+\DWATimport{} attribute 
+whose value is a \livelink{chap:classreference}{reference} to the
+normal or partial compilation unit whose declarations logically
+belong at the place of the imported unit entry.
+
+\textit{An imported unit entry does not necessarily correspond to
+any entity or construct in the source program. It is merely
+\doublequote{glue} used to relate a partial unit, or a compilation
+unit used as a partial unit, to a place in some other
+compilation unit.}
+
 \section{Subroutine and Entry Point Entries}
 \label{chap:subroutineandentrypointentries}
 
@@ -1007,7 +1015,7 @@ may contain a
 attribute 
 \addtoindexx{main subprogram attribute}
 which is 
-a \CLASSflag whose presence indicates that the
+a \CLASSflag{} whose presence indicates that the
 subroutine has been identified as the starting function of
 the program.  If more than one subprogram contains this 
 \nolink{flag},
@@ -1165,7 +1173,7 @@ that has neither a \DWATcallpc{} nor \DWATcallreturnpc{} attribute.
 information format consumers that analyse call graphs.}
 
 If the value of the \DWATcallallsourcecalls{} attribute is true then the values of the
-\DWATcallallcalls{} and \DWATcallallcalls{} attributes are necessarily also true, and 
+\DWATcallallcalls{} and \DWATcallalltailcalls{} attributes are necessarily also true, and 
 those attributes need not be present. Similarly, if the value of the 
 \DWATcallallcalls{} attribute is true then the value of the \DWATcallalltailcalls{} 
 attribute is also true and the latter attribute need not be present.
@@ -1429,8 +1437,8 @@ values of different types. DWARF does not represent the generic
 template definition, but does represent each instantiation.}
 
 \needlines{4}
-A \addtoindex{template instantiation} is represented by a debugging
-information entry with the 
+A \addtoindex{function template instantiation}\addtoindexx{template instantiation!function} 
+is represented by a debugging information entry with the 
 \addtoindexx{subprogram entry!use for template instantiation}
 tag \DWTAGsubprogram. 
 With the following
@@ -1507,28 +1515,23 @@ entry with the tag \DWTAGsubprogram. Such an entry has a
 \needlines{4}
 \subsubsection{Abstract Instances}
 \label{chap:abstractinstances}
-Any debugging information entry that is owned (either
+Any subroutine entry that contains a
+\DWATinline{} attribute\addtoindexx{inline attribute} 
+whose value is other than 
+\DWINLnotinlined{}
+is known as an
+\doublequote{abstract instance root.}\addtoindexx{abstract instance!root}
 \hypertarget{chap:DWATinlineabstracttinstance}{}
-directly or indirectly) by a debugging information entry
-that contains the 
-\DWATinline{} attribute is referred to
-\addtoindexx{abstract instance!entry}
-as an \doublequote{abstract instance entry.} 
-Any subroutine entry
-that contains 
-\addtoindexx{inline attribute}
-a \DWATinline{} attribute whose value is other
-than \DWINLnotinlined{}
-is known as 
-\addtoindexx{abstract instance!root}
-an \doublequote{abstract instance root.} 
+Any debugging information entry that is owned (either
+directly or indirectly) by an abstract instance root
+is known as an
+\doublequote{abstract instance entry.}\addtoindexx{abstract instance!entry}
 Any set of abstract instance entries that are all
 children (either directly or indirectly) of some abstract
-instance root, together with the root itself, is known as
-\addtoindexx{abstract instance!tree}
-an \doublequote{abstract instance tree.} However, in the case where
-an abstract instance tree is nested within another abstract
-instance tree, the entries in the 
+instance root, together with the root itself, is known as an
+\doublequote{abstract instance tree.}\addtoindexx{abstract instance!tree}
+However, in the case where an abstract instance tree is 
+nested within another abstract instance tree, the entries in the 
 \addtoindex{nested abstract instance}
 tree are not considered to be entries in the outer abstract
 instance tree.
@@ -1934,18 +1937,19 @@ using any of the following forms, which are listed in order
 of preference:
 
 \begin{itemize}
-\item If the value is of class reference, then the value
+\item If the value is of class \CLASSreference{}, then the value
 specifies the debugging information entry of the target
 subprogram.
 
-\item If the value is of class address, then the value is
+\item If the value is of class \CLASSaddress{}, then the value is
 the relocated address of the target subprogram.
 
-\item If the value is of class string, then the value is the
+\needlines{6}
+\item If the value is of class \CLASSstring{}, then the value is the
 (possibly mangled) \addtoindexx{mangled names}
 name of the target subprogram.
 
-\item If the value is of class \livelink{chap:classflag}{flag}, then the value true
+\item If the value is of class \CLASSflag, then the value true
 indicates that the containing subroutine is a trampoline but
 that the target subroutine is not known.
 \end{itemize}
@@ -1955,15 +1959,13 @@ The target subprogram may itself be a trampoline. (A sequence
 of trampolines necessarily ends with a non\dash trampoline
 subprogram.)
 
-\textit{In \addtoindex{C++}, trampolines may be used 
-to implement derived virtual
-member functions; such trampolines typically adjust the
-\addtoindexx{this parameter}
-implicit this pointer parameter in the course of passing
-control.  
-Other languages and environments may use trampolines
-in a manner sometimes known as transfer functions or transfer
-vectors.}
+\textit{In \addtoindex{C++}, trampolines may be used to implement 
+derived virtual member functions; such trampolines typically 
+adjust the implicit 
+\texttt{this} parameter\index{this parameter@\texttt{this} parameter}
+in the course of passing control.  
+Other languages and environments may use trampolines in a manner 
+sometimes known as transfer functions or transfer vectors.}
 
 \textit{Trampolines may sometimes pass control to the target
 subprogram using a branch or jump instruction instead of a
@@ -2113,7 +2115,7 @@ 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 inlined, rather they describe
+coordinates of the subroutine declaration that was called, rather they describe
 the coordinates of the call.}
 
 The call site entry may own \DWTAGcallsiteparameterTARG{} debugging information
@@ -2312,25 +2314,23 @@ the with statement.
 \needlines{6}
 \section{Try and Catch Block Entries}
 \label{chap:tryandcatchblockentries}
-
-\textit{In \addtoindex{C++} a lexical \livelink{chap:lexicalblock}{block} may be 
+\livetargi{chap:tryandcatchblockentries}{}
+\textit{In \addtoindex{C++}, a \livelink{chap:lexicalblock}{lexical block} may be 
 designated as a \doublequote{catch \nolink{block}.} 
-A catch \livetargi{chap:catchblock}{block}{catch block} is an 
-exception handler that handles
-exceptions thrown by an immediately 
-preceding \doublequote{try \livelink{chap:tryblock}{block}.}
-A catch \livelink{chap:catchblock}{block} 
-designates the type of the exception that it
-can handle.}
-
-A try \livetargi{chap:tryblock}{block}{try block} is represented 
+A catch \nolink{block} is an exception handler that 
+handles exceptions thrown by an immediately preceding 
+\doublequote{try \nolink{block}.}
+A catch \nolink{block} 
+designates the type of the exception that it can handle.}
+
+A \livetargi{chap:tryblock}{try block}{try block} is represented 
 by a debugging information entry
 \addtoindexx{try block entry}
 with the tag \DWTAGtryblockTARG.  
-A catch \livelink{chap:catchblock}{block} is represented by
-a debugging information entry with 
+A \livetargi{chap:catchblock}{catch block} is represented by
+a debugging information entry
 \addtoindexx{catch block entry}
-the tag \DWTAGcatchblockTARG.
+with the tag \DWTAGcatchblockTARG.
 
 % nolink as we have links just above and do not have a combo link for both
 Both try and catch \nolink{block} entries may have either a
 \addtoindexx{ranges attribute}
 whose values encode the contiguous
 or non\dash contiguous address ranges, respectively, of the
-machine instructions generated for the \livelink{chap:lexicalblock}{block}
-(see Section
-\refersec{chap:codeaddressesandranges}).
+machine instructions generated for the \nolink{block}
+(see Section \refersec{chap:codeaddressesandranges}).
 
-A 
 \hypertarget{chap:DWATentrypcoftryblock}{}
 \hypertarget{chap:DWATentrypcofcatchblock}{}
-try or catch block entry may also have 
+try or catch block entry may also have 
 \addtoindexx{entry pc attribute!for try block}
 \addtoindexx{entry pc attribute!for catch block}
 a 
 \DWATentrypc{} attribute
 whose value is the address of the first executable instruction
-of the try or catch block (see 
-Section \refersec{chap:entryaddress}).
+of the try or catch block 
+(see Section \refersec{chap:entryaddress}).
 
-Catch \livelink{chap:catchblock}{block} entries have at 
-least one child entry, an
-entry representing the type of exception accepted by
-that catch \livelink{chap:catchblock}{block}. 
-This child entry has one of 
-\addtoindexx{formal parameter entry!in catch block}
-the 
-\addtoindexx{unspecified parameters entry!in catch block}
-tags
-\DWTAGformalparameter{} or
-\DWTAGunspecifiedparameters,
+Catch \nolink{block} entries have at least one child entry, 
+an entry representing the type of exception accepted by
+that catch \nolink{block}. 
+This child entry has one of the tags
+\DWTAGformalparameter{}\addtoindexx{formal parameter entry!in catch block}
+or
+\DWTAGunspecifiedparameters,\addtoindexx{unspecified parameters entry!in catch block}
 and will have the same form as other parameter entries.
 
-The siblings immediately following 
-a try \livelink{chap:tryblock}{block} entry are its
-corresponding catch \livelink{chap:catchblock}{block} entries.
+The siblings immediately following a try \nolink{block} 
+entry are its corresponding catch \nolink{block} entries.
 
index 9bba652..3c47a39 100644 (file)
@@ -1,7 +1,7 @@
 \chapter[Split DWARF Objects (Informative)]{Split DWARF Objects (Informative)}
 \label{app:splitdwarfobjectsinformative}
 \addtoindexx{DWARF compression}
-\addtoindex{DWARF duplicate elimination}
+\addtoindexx{DWARF duplicate elimination}
 With the traditional DWARF format, debug information is designed
 with the expectation that it will be processed by the linker to
 produce an output binary with complete debug information, and
@@ -259,7 +259,8 @@ respectively, relative to the base address. As in the \dotdebugloc{}
 section, the base address is obtained either from the nearest
 preceding base address selection entry, or, if there is no such
 entry, from the compilation unit base address (as defined in
-Section 3.1.1). For the latter three types (start/end,
+Section \refersec{chap:normalandpartialcompilationunitentries}). 
+For the latter three types (start/end,
 start/length, and offset pair), the two operand values are
 followed by a location description as in a normal location list
 entry in the \dotdebugloc{} section.
@@ -480,7 +481,8 @@ out-of-line copies of the inline functions \texttt{Point::x} and
 \texttt{Point::y}.
 
 The \dotdebugline{} section contains the full line number table for
-the compiled code in the object file. In this example, the line
+the compiled code in the object file. In the example in
+Figure \refersec{fig:splitobjectexamplesourcefragment1}, the line
 number program header would list the two files, \texttt{demo.h} and
 \texttt{demo1.cc}, and would contain line number programs for
 \texttt{Box::contains}, \texttt{Point::x}, and \texttt{Point::y}.
@@ -490,24 +492,27 @@ by the compilation unit DIE and by the line number program.
 
 The \dotdebugaddr{} section contains relocatable addresses of
 locations in the loadable text and data that are referenced by
-debugging information entries in the split DWARF object. In this
-example, \texttt{demo1.o} may have three entries:
+debugging information entries in the split DWARF object. In the
+example in \refersec{fig:splitobjectexamplesourcefragment3}, 
+\texttt{demo1.o} may have three entries:
 \begin{center}
 %\footnotesize
 \begin{tabular}{cl}
 Slot & Location referenced \\
 \hline
-   0   &  low pc value for Box::contains  \\
-   1   &  low pc value for Point::x       \\
-   2   &  low pc value for Point::y       \\
+   0   &  low pc value for \texttt{Box::contains}  \\
+   1   &  low pc value for \texttt{Point::x}       \\
+   2   &  low pc value for \texttt{Point::y}       \\
 \end{tabular}
 \end{center}
 
 \needlines{4}
 The \dotdebugnames{}
-section contains the public names defined by the debugging
-information in the split DWARF object, and reference the skeleton
-compilation unit. When linked together into a final executable,
+section contains the names defined by the debugging
+information in the split DWARF object 
+(see Section \refersec{chap:contentsofthenameindex}, 
+and references the skeleton compilation unit. 
+When linked together into a final executable,
 they can be used by a DWARF consumer to lookup a name to find one
 or more skeleton compilation units that provide information about
 that name. From the skeleton compilation unit, the consumer can
@@ -527,6 +532,7 @@ The split DWARF objects each contain the following sections:
   \dotdebuginfodwo{} (one COMDAT section for each type unit)
   \dotdebuglocdwo
   \dotdebuglinedwo
+  \dotdebugmacro
   \dotdebugstroffsetsdwo
   \dotdebugstrdwo
 \end{alltt}
@@ -549,6 +555,8 @@ compilation unit.
 code \DWFORMstrx, referring to slots in the
 \dotdebugstroffsetsdwo{} section.
 
+\textit{Use of \DWFORMstrp{} is not appropriate in a split DWARF object file.}
+
 \needlines{4}
 \item References to range lists in the \dotdebugranges{} section are
 all relative to the base offset given by \DWATrangesbase{}
@@ -671,8 +679,11 @@ function.
 Each type unit is contained in its own COMDAT \dotdebuginfodwo{}
 section, and looks like a normal type unit in a non-split object,
 except that the \DWTAGtypeunit{} DIE contains a \DWATstmtlist{}
-attribute that refers to a skeleton \dotdebuglinedwo{} section. The
-skeleton \dotdebuglinedwo{} section contains a normal line number
+attribute that refers to a specialized \dotdebuglinedwo{}
+\addtoindexx{type unit!specialized \texttt{.debug\_line.dwo} section in}
+\addtoindexx{specialized \texttt{.debug\_line.dwo} section}
+section. This
+section contains a normal line number
 program header with a list of include directories and filenames,
 but no line number program. This section is used only as a
 reference for filenames needed for \DWATdeclfile{} attributes
@@ -706,7 +717,7 @@ Figure \refersec{fig:splitobjectexamplestringtableslots}.
 \end{figure}
 
 Each entry in the table is the offset of the string, which is
-contained in the \dotdebugstrdwo{} section. In a split DWARF object,
+contained in the \dotdebugstrdwo{} section. In a split DWARF object file,
 these offsets are not relocatable, since they are not part of the
 relocatable object, but when combined into a DWARF package file,
 each slot must be adjusted to refer to the appropriate offset
index ec615ff..96e6362 100644 (file)
@@ -100,24 +100,22 @@ of zero is assumed.
 
 \textit{Attribute 
 \DWATdatabitoffset{} 
-is 
-\addtoindexx{bit offset attribute (Version 3)}
+is\addtoindexx{bit offset attribute (Version 3)}
 \addtoindexx{bit offset attribute (Version 3)|see{\textit{also} data bit offset attribute}}
 new 
 \addtoindexx{data bit offset attribute}
 in 
-\addtoindex{DWARF Version 4}, unchanged in \addtoindex{DWARF Version 5}, and
+\DWARFVersionIV{}, unchanged in \DWARFVersionV{}, and
 is also used for bit field members 
 (see Section \refersec{chap:datamemberentries}). 
-It
-\hypertarget{chap:DWATbitoffsetbasetypebitlocation}{}
-replaces the attribute 
-\DWATbitoffset{} 
-when used for base
+%\hypertarget{chap:DWATbitoffsetbasetypebitlocation}{}
+It replaces the attribute DW\_AT\_bit\_offset
 \addtoindexx{bit offset attribute (Version 3)}
+which used for base
 types as defined in \DWARFVersionIII{} and earlier.
-\DWATbitoffset{}
-is deprecated for use in base types in DWARF Version 4 and later.
+DW\_AT\_bit\_offset is deprecated
+\addtoindexx{DW\_AT\_bit\_offset (deprecated)}
+for use in base types in DWARF Version 4 and later.
 See Section 5.1 in the \DWARFVersionIV{}
 specification for a discussion of compatibility considerations.}
 
@@ -364,7 +362,7 @@ whose value is
 a null\dash terminated
 string containing the name as it appears in the source program.
 
-The interpretation of this debugging information entry is
+\textit{The interpretation of this debugging information entry is
 intentionally left flexible to allow it to be interpreted
 appropriately in different languages. For example, in 
 \addtoindex{C} and \addtoindex{C++}
@@ -380,16 +378,16 @@ example, in \addtoindex{Ada} such an unspecified type entry can be referred
 to by the type attribute of an access type where the denoted
 \addtoindexx{incomplete type (Ada)}
 type is incomplete (the name is declared as a type but the
-definition is deferred to a separate compilation unit).
+definition is deferred to a separate compilation unit).}
 
-\addtoindex{C++} permits using the 
+\textit{\addtoindex{C++} permits using the 
 \autoreturntype{} specifier for the return type of a member function declaration. 
 The actual return type is deduced based on the definition of the 
 function, so it may not be known when the function is declared.  The language 
 implementation can provide an unspecified type entry with the name \texttt{auto} which 
 can be referenced by the return type attribute of a function declaration entry.  
 When the function is later defined, the \DWTAGsubprogram{} entry for the definition
-includes a reference to the actual return type.
+includes a reference to the actual return type.}
 
 
 \section{Type Modifier Entries}
@@ -738,7 +736,7 @@ concept in DWARF, the \DWTAGsubrangetype{} child entry for that index has
 only a lower bound and no upper bound.}
 
 \textit{How coarray elements are located and how coindices are 
-converted to process specifications is processor-dependent.}
+converted to process specifications is implementation-dependent.}
 
 \needlines{8}
 \section{Structure, Union, Class and Interface Type Entries}
@@ -779,15 +777,10 @@ of a class or structure.}
 \textit{The \addtoindex{C++} notion of 
 structure is more general than in \addtoindex{C}, being
 equivalent to a class with minor differences. Accordingly,
-in the following discussion statements about 
+in the following discussion, statements about 
 \addtoindex{C++} classes may
 be understood to apply to \addtoindex{C++} structures as well.}
 
-\textit{\addtoindex{C++} has the notion of a "trivial" class, 
-whose objects can be bitwise copied. Trivial classes may have 
-different rules for passing objects of that type as parameters 
-or return values.}
-
 \subsection{Structure, Union and Class Type Entries}
 \label{chap:structureunionandclasstypeentries}
 Structure, union, and class types are represented by debugging
@@ -845,7 +838,7 @@ a \DWATdeclaration{} attribute.
 If the complete declaration of a type has been placed in
 \hypertarget{chap:DWATsignaturetypesignature}{}
 a separate \addtoindex{type unit}
-(see Section \refersec{chap:separatetypeunitentries}), 
+(see Section \refersec{chap:typeunitentries}), 
 an incomplete declaration 
 \addtoindexx{incomplete type}
 of that type in the compilation unit may provide
@@ -972,7 +965,7 @@ information entries that are owned by the interface type
 entry and that appear in the same order as the corresponding
 declarations in the source program.
 
-\subsection{Derived or Extended Structs, Classes and Interfaces}
+\subsection{Derived or Extended Structures, Classes and Interfaces}
 \label{chap:derivedorextendedstructsclasesandinterfaces}
 
 \textit{In \addtoindex{C++}, a class (or struct) 
@@ -1045,13 +1038,11 @@ may
 have a
 \DWATaccessibility{}
 attribute. 
-If no accessibility attribute
-is present, private access is assumed for an entry of a class
-and public access is assumed for an entry of an interface,
-struct or union.
+If no accessibility attribute is present, private access 
+is assumed for an entry of a class and public access is 
+assumed for an entry of a struct, union or interface.
 
-If 
-\hypertarget{chap:DWATvirtualityvirtualityofbaseclass}{}
+If\hypertarget{chap:DWATvirtualityvirtualityofbaseclass}{}
 the class referenced by the 
 \addtoindexx{inheritance entry}
 inheritance entry serves
@@ -1371,20 +1362,21 @@ Appendix \refersec{app:pascalexample}.}
 \needlines{4}
 \textit{Attribute \DWATdatabitoffset{} 
 is new in 
-\addtoindex{DWARF Version 4}, unchanged in \addtoindex{DWARF Version 5},
+\addtoindex{DWARF Version 4}, unchanged in \DWARFVersionV,
 and is also used for base types 
 (see Section 
 \refersec{chap:basetypeentries}). 
-It replaces the
-\livetarg{chap:DWATbitoffsetdatamemberbitlocation}{}
-attributes \DWATbitoffset{} and
-\DWATbytesize{} when used to
+%\livetarg{chap:DWATbitoffsetdatamemberbitlocation}{}
+It replaces the attributes 
+DW\_AT\_bit\_offset\addtoindexx{bit offset attribute (Version 3)}
+and \DWATbytesize{} when used to
 identify the beginning of bit field data members as defined
-in DWARF V3 and earlier. The \DWATbytesize, 
+in \DWARFVersionIII{} and earlier. The 
+\DWATbytesize, 
 \DWATbitsize{} and 
-\DWATbitoffset{}
-attribute combination is deprecated for data members in DWARF
-Version 4 and later. See Section 5.6.6 in the DWARF Version 4
+DW\_AT\_bit\_offset\addtoindexx{DW\_AT\_bit\_offset (deprecated)}
+attribute combination is deprecated for data members in 
+\DWARFVersionIV{} and later. See Section 5.6.6 in the \DWARFVersionIV{}
 specification for a discussion of compatibility considerations.}
 
 \subsection{Member Function Entries}
@@ -1479,17 +1471,23 @@ the entry describes a non\dash static member function whose
 object formal parameter has a type that has an equivalent
 const\dash volatile qualification.
 
-\textit{In \addtoindex{C++:2011 (ISO)}, non-static member functions can also have one of the
-ref-qualifiers, \& and \&\&. They do not change the type of the
-\doublequote{\texttt{this}}-pointer, but they affect the types of object values the
-function can be invoked on.}
+\textit{Beginning in \addtoindex{C++:2011 (ISO)}, non-static member 
+functions can also have one of the ref-qualifiers, \& and \&\&. 
+These do not change the type of the
+\doublequote{\texttt{this}}-pointer, but they do affect the types of 
+object values on which the function can be invoked.}
 
+\needlines{6}
 The member function entry may have an \DWATreferenceNAME{} attribute
 \livetarg{chap:DWATreferenceofnonstaticmember}{}
 to indicate a non-static member function that can only be called on
-l-value objects, or the \DWATrvaluereferenceNAME{} attribute 
+lvalue objects, or the \DWATrvaluereferenceNAME{} attribute 
 \livetarg{chap:DWATrvaluereferenceofnonstaticmember}{}
-to indicate that it can only be called on pr-values and x-values.
+to indicate that it can only be called on prvalues and xvalues.
+
+\textit{The lvalue, prvalue and xvalue concepts are defined in the
+\addtoindex{C++:2011} and later standards and not repeated or
+considered further in DWARF.}
 
 If a subroutine entry represents the defining declaration
 of a member function and that definition appears outside of
@@ -1523,7 +1521,8 @@ when used on other member functions.}
 
 If the member function entry has been declared as deleted,
 \hypertarget{chap:DWATdeleted}{}
-then that entry has a \DWATdeletedTARG{} attribute.\addtoindexx{deleted attribute}
+then that entry has a \DWATdeletedNAME{}\livetarg{chap:DWATdeleteddef}{}
+attribute.\addtoindexx{deleted attribute}
 
 \textit{In \addtoindex{C++}, a special member function may be 
 declared as defaulted, which explicitly declares a default
@@ -1534,13 +1533,14 @@ whether the default declaration is made inside or outside the
 class.}
 
 If the member function has been declared as defaulted, 
-then the entry has a \DWATdefaultedTARG{} 
+then the entry has a \DWATdefaultedNAME{}\livetarg{chap:DWATdefaulteddef}{}
 attribute\addtoindexx{defaulted attribute}
 whose integer constant value indicates whether, and if so,
 how, that member is defaulted. The possible values and
 their meanings are shown in 
 Table \referfol{tab:defaultedattributevaluenames}.
 
+\needlines{8}
 \begin{centering}
   \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l}
@@ -1969,6 +1969,13 @@ whose value is
 a null\dash terminated string containing the string type name as
 it appears in the source program.
 
+A string type entry may have a \DWATtype{} 
+\livetargi{char:DWAATtypeofstringtype}{attribute}{type attribute!of string type entry}
+describing how each character is encoded and is to be interpreted.  
+The value of this attribute is a \CLASSreference{} to a 
+\DWTAGbasetype{} base type entry.  If the attribute is absent, 
+then the character is encoded using the system default.
+
 \textit{The 
 \addtoindex{Fortran 2003} language standard allows string 
 types that are composed of different types of (same sized) characters. 
@@ -1980,13 +1987,6 @@ While there is no standard list of character kinds, the kinds
 \texttt{DEFAULT}\index{DEFAULT@\texttt{DEFAULT} (Fortran string kind)}
 are defined.}
 
-A string type entry may have a \DWATtype{} 
-\livetargi{char:DWAATtypeofstringtype}{attribute}{type attribute!of string type entry}
-describing how each character is encoded and is to be interpreted.  
-The value of this attribute is a \CLASSreference to a 
-\DWTAGbasetype{} base type entry.  If the attribute is absent, 
-then the character is encoded using the system default.
-
 \needlines{4}
 The string type entry may have a 
 \DWATbytesize{} attribute or 
@@ -2025,17 +2025,17 @@ is the same as the
 \needlines{8}
 \addtoindexx{DWARF Version 5}  % Avoid italics
 \textit{Prior to DWARF Version 5, the meaning of a 
-\DWATbytesize{} attribute depends on the presence of the
+\DWATbytesize{} attribute depended on the presence of the
 \DWATstringlength{} attribute:
 \begin{itemize}
-\item If \DWATstringlength{} is present, \DWATbytesize{} 
-       specifies the size of the length data to be retrieved 
+\item If \DWATstringlength{} was present, \DWATbytesize{} 
+       specified the size of the length data to be retrieved 
        from the location specified by the \DWATstringlength{} attribute.
-\item If \DWATstringlength{} is not present, \DWATbytesize{}
-       specifies the amount of storage allocated for objects
+\item If \DWATstringlength{} was not present, \DWATbytesize{}
+       specified the amount of storage allocated for objects
        of the string type.
 \end{itemize}
-In DWARF Version 5, \DWATbytesize{} always specifies the amount of storage 
+In \DWARFVersionV{}, \DWATbytesize{} always specifies the amount of storage 
 allocated for objects of the string type.}
 
 \needlines{6}
@@ -2466,7 +2466,7 @@ The presence of the
 attribute indicates that an array's rank
 (number of dimensions) is dynamic, and therefore unknown at compile
 time. The value of the \DWATrankNAME{} attribute is either an integer constant
-or a location expression whose evaluation yields the dynamic rank.
+or a DWARF expression whose evaluation yields the dynamic rank.
 
 The bounds of an array with dynamic rank are described using a
 \DWTAGgenericsubrange{} entry, which  
@@ -2487,8 +2487,8 @@ the array descriptor metadata.
   to by the descriptor, or even allocated independently of the
   descriptor.}
 
-Dimensions are enumerated $0$ to $\mathit{rank}-1$ in a left-to-right
-fashion.
+Dimensions are enumerated $0$ to $\mathit{rank}-1$ in source program
+order.
 
 \textit{For an example in Fortran 2008, see
   Section~\refersec{app:assumedrankexample}.}