Files for 2013-12-18 draft document. This incorporates
authorRon Brender <ron.brender@gmail.com>
Thu, 19 Dec 2013 00:06:53 +0000 (19:06 -0500)
committerRon Brender <ron.brender@gmail.com>
Thu, 19 Dec 2013 00:06:53 +0000 (19:06 -0500)
all approved changes and review comments to date.

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

index 0bb77f1..010d653 100644 (file)
@@ -59,12 +59,19 @@ means include all three of the
 &\DWATdescription{} \\
 &\DWATname{} \\
 &\DWATordering{} \\
+&\DWATrank{} \\
 &\DWATsibling{} \\
 &\DWATspecification{} \\
 &\DWATstartscope{} \\
 &\DWATtype{} \\
 &\DWATvisibility{} \\
 
+\hline
+\DWTAGatomictype
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
+
 \hline
 \DWTAGbasetype
 &\livelink{chap:DECL}{DECL} \\
@@ -119,10 +126,11 @@ means include all three of the
 
 \hline
 \DWTAGcoarraytype
-&\livelink{chap:DECL}{DECL} \\
-&\DWATname{} \\
-&\DWATsibling{} \\
-&\DWATtype{} \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATname{} \\*
+&\DWATdescription{} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
 
 \hline
 \DWTAGcommonblock
@@ -175,12 +183,9 @@ means include all three of the
 
 \hline
 \DWTAGconsttype
-&\DWATallocated{} \\
-&\DWATassociated{} \\
-&\DWATdatalocation{} \\
-&\DWATname{} \\
-&\DWATsibling{} \\
-&\DWATtype{} \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
 
 \hline
 \DWTAGconstant
@@ -336,9 +341,9 @@ means include all three of the
 
 \hline
 \DWTAGimportedmodule
-&\livelink{chap:DECL}{DECL} \\
-&\DWATimport{} \\
-&\DWATsibling{} \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATimport{} \\*
+&\DWATsibling{} \\*
 &\DWATstartscope{} \\
 
 \hline
@@ -382,9 +387,9 @@ means include all three of the
 
 \hline
 \DWTAGlabel
-&\livelink{chap:DECL}{DECL} \\
-&\DWATabstractorigin{} \\
-&\DWATdescription{} \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATabstractorigin{} \\*
+&\DWATdescription{} \\*
 &\DWATlowpc{} \\
 &\DWATname{} \\
 &\DWATsegment{} \\
@@ -418,9 +423,9 @@ means include all three of the
 &\DWATdescription{} \\
 &\DWATmutable{} \\
 &\DWATname{} \\
-&\DWATsibling{} \\
-&\DWATtype{} \\
-&\DWATvisibility{} \\
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
+&\DWATvisibility{} \\*
 
 \hline
 \DWTAGmodule
@@ -466,12 +471,9 @@ means include all three of the
 
 \hline
 \DWTAGpackedtype
-&\DWATallocated{} \\
-&\DWATassociated{} \\
-&\DWATdatalocation{} \\
-&\DWATname{} \\
-&\DWATsibling{} \\
-&\DWATtype{} \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
 
 \hline
 \DWTAGpartialunit
@@ -497,14 +499,10 @@ means include all three of the
 
 \hline
 \DWTAGpointertype
-&\livelink{chap:DECL}{DECL}  \\
-&\DWATaddressclass{}  \\
-&\DWATallocated{}  \\
-&\DWATassociated{}  \\
-&\DWATdatalocation{}  \\
-&\DWATname{}  \\
-&\DWATsibling{}  \\
-&\DWATtype{}  \\
+&\livelink{chap:DECL}{DECL}  \\*
+&\DWATaddressclass{}  \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
 
 \hline
 \DWTAGptrtomembertype
@@ -525,33 +523,24 @@ means include all three of the
 
 \hline
 \DWTAGreferencetype
+&\livelink{chap:DECL}{DECL} \\*
 &\DWATaddressclass{}  \\*
-&\DWATallocated{}  \\*
-&\DWATassociated{}  \\
-&\DWATdatalocation{}  \\
-&\DWATname{}  \\
-&\DWATsibling{}  \\
-&\DWATtype{}  \\
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
 
 \hline
 \DWTAGrestricttype
-&\DWATallocated{}  \\
-&\DWATassociated{}  \\
-&\DWATdatalocation{}  \\
-&\DWATname{}  \\
-&\DWATsibling{}  \\
-&\DWATtype{}  \\
+&\livelink{chap:DECL}{DECL} \\*
+&\DWATsibling{} \\*
+&\DWATtype{} \\*
+
 
 \hline
 \DWTAGrvaluereferencetype
 &\livelink{chap:DECL}{DECL}  \\*
 &\DWATaddressclass{}  \\*
-&\DWATallocated{}  \\
-&\DWATassociated{}  \\
-&\DWATdatalocation{}  \\
-&\DWATname{}  \\
-&\DWATsibling{}  \\
-&\DWATtype{}  \\
+&\DWATsibling{}  \\*
+&\DWATtype{}  \\*
 
 \hline
 \DWTAGsettype
@@ -573,13 +562,10 @@ means include all three of the
 
 \hline
 \DWTAGsharedtype
-&\DWATallocated{}  \\
-&\DWATassociated{}  \\
-&\DWATcount{}  \\
-&\DWATdatalocation{}  \\
-&\DWATname{}  \\
-&\DWATsibling{}  \\
-&\DWATtype{}  \\
+&\livelink{chap:DECL}{DECL}  \\*
+&\DWATcount{}  \\*
+&\DWATsibling{}  \\*
+&\DWATtype{}  \\*
 
 \hline
 \DWTAGstringtype
@@ -646,7 +632,9 @@ means include all three of the
 &\DWATpure{}  \\
 &\DWATranges{}  \\
 &\DWATrecursive{}  \\
+&\DWATreference{} \\
 &\DWATreturnaddr{}  \\
+&\DWATrvaluereference{} \\
 &\DWATsegment{}  \\
 &\DWATsibling{}  \\
 &\DWATspecification{}  \\
@@ -694,6 +682,8 @@ means include all three of the
 &\DWATdescription{}  \\
 &\DWATname{}  \\
 &\DWATprototyped{}  \\
+&\DWATreference{} \\
+&\DWATrvaluereference{} \\
 &\DWATsibling{}  \\
 &\DWATstartscope{}  \\
 &\DWATtype{}  \\
@@ -712,9 +702,9 @@ means include all three of the
 &\DWATname{}   \\
 &\DWATsibling{}   \\
 &\DWATsignature{}   \\
-&\DWATstartscope{}   \\
-&\DWATtype{}   \\
-&\DWATvisibility{}   \\
+&\DWATstartscope{}   \\*
+&\DWATtype{}   \\*
+&\DWATvisibility{}   \\*
 
 \hline
 \DWTAGtemplatetypeparameter
@@ -757,9 +747,9 @@ means include all three of the
 
 \hline
 \DWTAGtypedef
-&\livelink{chap:DECL}{DECL}   \\
-&\DWATabstractorigin{}   \\
-&\DWATaccessibility{}   \\
+&\livelink{chap:DECL}{DECL}   \\*
+&\DWATabstractorigin{}   \\*
+&\DWATaccessibility{}   \\*
 &\DWATallocated{}   \\
 &\DWATassociated{}   \\
 &\DWATdatalocation{}   \\
@@ -837,9 +827,9 @@ means include all three of the
 &\DWATaccessibility{}   \\
 &\DWATabstractorigin{}   \\
 &\DWATdeclaration{}   \\
-&\DWATdiscrlist{}   \\
-&\DWATdiscrvalue{}   \\
-&\DWATsibling{}   \\
+&\DWATdiscrlist{}   \\*
+&\DWATdiscrvalue{}   \\*
+&\DWATsibling{}   \\*
 
 \hline
 \DWTAGvariantpart
@@ -853,10 +843,7 @@ means include all three of the
 
 \hline
 \DWTAGvolatiletype{}  
-&\DWATallocated{}   \\
-&\DWATassociated{}    \\
-&\DWATdatalocation{}    \\
-&\DWATname{}    \\*
+&\livelink{chap:DECL}{DECL}   \\*
 &\DWATsibling{}    \\*
 &\DWATtype{}    \\*
 
index 3280f4e..4e10553 100644 (file)
@@ -13,7 +13,9 @@ This change summary is included only in draft versions of this document.
 
 \vspace{1cm}
 \begin{tabular}{ll}
-\textbf{Date}  & \textbf{Issue Incorported or Other Change}    \\ \hline       \\
+\textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
+12/18/2013      & 131105.1 (\&- and \&\&-qualification), 131216.1 (non-defining wording), \\
+                & 131112.1 (\_Atomic type), review comments to date \\
 11/22/2013      & 131106.1 (dynamic type), review comments to date \\
 10/26/2013             & 130313.1 (indirect string table), 130313.2 (indirect address table),  \\
                                & 130313.3 (ranges without relocations), 130313.4 (split objects) \\
index 66566f4..3fc2800 100644 (file)
@@ -927,7 +927,7 @@ Figure \refersec{fig:typesignaturecomputation1flattenedbytestream}.
 \end{figure}
 
 \needlines{4}
-Running an \addtoindex{MD5 hash} over this byte stream, and taking the
+Running an \MDfive{} hash over this byte stream, and taking the
 low\dash order 64 bits, yields the final signature: 
 0xd28081e8 dcf5070a.
 
@@ -1054,13 +1054,6 @@ refer to the type signature
 \addtoindexx{type signature}
 for that type.
 
-In computing a signature for the type \texttt{N::A}, flatten the type
-description into a byte stream according to the procedure
-outlined in 
-Section \refersec{datarep:typesignaturecomputation}.
-The result is shown in 
-Figure \refersec{fig:typesignatureexample2flattenedbytestream}.
-
 \begin{figure}
 \figurepart{1}{3}
 \begin{dwflisting}
@@ -1227,17 +1220,23 @@ Figure~\ref{fig:typesignatureexample2flattenedbytestream}: Type signature exampl
 \end{center}
 \end{figure}
 
-Running an \addtoindex{MD5 hash} over this byte stream, and taking the
+In computing a signature for the type \texttt{N::A}, flatten the type
+description into a byte stream according to the procedure
+outlined in 
+Section \refersec{datarep:typesignaturecomputation}.
+The result is shown in 
+Figure \refersec{fig:typesignatureexample2flattenedbytestream}.
+
+Running an \MDfive{} hash over this byte stream, and taking the
 low-order 64 bits, yields the final signature: 0xd6d160f5
 5589f6e9.
 
-
 A source file that includes this header file may declare a
 variable of type \texttt{N::A}, and its DWARF information may look
 like that shown in 
 Figure \refersec{fig:typesignatureexampleusage}.
 
-\begin{figure}
+\begin{figure}[h]
 \begin{dwflisting}
 \begin{alltt}
   \DWTAGcompileunit
@@ -1323,6 +1322,8 @@ empty
 \label{fig:typesignaturecomputationgrammar}
 \end{figure}
 
+
+\clearpage
 \section{Summary of Compression Techniques}
 \label{app:summaryofcompressiontechniques}
 \subsection{\#include compression}
@@ -1376,7 +1377,6 @@ different in that the \texttt{\textless file-designator\textgreater}
 should be interpreted as a \texttt{\textless file-designator\textgreater}.
 
 
-
 \subsection{Single-function-per-DWARF-compilation-unit}
 \label{app:singlefunctionperdwarfcompilationunit}
 
index 9e48563..3cb5500 100644 (file)
@@ -190,7 +190,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 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
index 83294ed..cc582af 100644 (file)
@@ -34,7 +34,7 @@ appropriate prefix
 \DWCFAlouserMARK\DWCFAhiuserMARK{}     DW\_CFA 
 respectively) followed by
 \_lo\_user or \_hi\_user. 
-\textit{For example, for entry tags, the special
+\textit{For example, for DIE tags, the special
 labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
 Values in the  range between \textit{prefix}\_lo\_user 
 and \textit{prefix}\_hi\_user inclusive,
@@ -235,6 +235,7 @@ base address at which the object was attached. This offset
 is available in the run\dash time linker\textquoteright s data structures.}
 
 
+\needlines{6}
 \section{32-Bit and 64-Bit DWARF Formats}
 \label{datarep:32bitand64bitdwarfformats}
 \hypertarget{datarep:xxbitdwffmt}{}
@@ -678,6 +679,7 @@ Table \refersec{tab:tagencodings}.
 \DWTAGcoarraytype~\ddag &0x44 \\
 \DWTAGgenericsubrange~\ddag &0x45 \\
 \DWTAGdynamictype~\ddag & 0x46 \\
+\DWTAGatomictype~\ddag & 0x47 \\
 \DWTAGlouser&0x4080      \\
 \DWTAGhiuser&\xffff      \\
 \end{longtable}
@@ -825,6 +827,8 @@ described in the previous bullet) in the
 The representation of a \DWFORMaddrxNAME{} value is an unsigned
 \addtoindex{LEB128} value, which is interpreted as a zero-based 
 index into an array of addresses in the \dotdebugaddr{} section.
+The index is relative to the value of the \DWATaddrbase{} attribute 
+of the associated compilation unit.
 \end{itemize}
 
 \needlines{4}
@@ -923,7 +927,7 @@ no value is encoded in the debugging information entry itself.
 This is an offset into 
 \addtoindexx{section offset!in class lineptr value}
 the 
-\dotdebugline{} section
+\dotdebugline{} or \dotdebuglinedwo{} section
 (\DWFORMsecoffset).
 It consists of an offset from the beginning of the 
 \dotdebugline{}
@@ -962,7 +966,7 @@ in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
 This is an 
 \addtoindexx{section offset!in class macptr value}
 offset into the 
-\dotdebugmacinfo{} section
+\dotdebugmacinfo{} or \dotdebugmacinfo{} section
 (\DWFORMsecoffset). 
 It consists of an offset from the
 beginning of the \dotdebugmacinfo{} 
@@ -1165,206 +1169,257 @@ Table \refersec{tab:attributeformencodings}.
   \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 \DWATsibling&0x01&\livelink{chap:classreference}{reference} 
-        \addtoindexx{sibling attribute!encoding} \\
+            \addtoindexx{sibling attribute!encoding} \\
 \DWATlocation&0x02&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr}\addtoindexx{location attribute!encoding}   \\
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{location attribute!encoding}   \\
 \DWATname&0x03&\livelink{chap:classstring}{string} 
-        \addtoindexx{name attribute!encoding} \\
+            \addtoindexx{name attribute!encoding} \\
 \DWATordering&0x09&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{ordering attribute!encoding}  \\
-\DWATbytesize&0x0b&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classreference}{reference} \addtoindexx{byte size attribute!encoding} \\
+            \addtoindexx{ordering attribute!encoding}  \\
+\DWATbytesize&0x0b&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{byte size attribute!encoding} \\
 \DWATbitoffset&0x0c&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit offset attribute!encoding}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{bit offset attribute!encoding}  \\
 \DWATbitsize&0x0d&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit size attribute!encoding} \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}   
+            \addtoindexx{bit size attribute!encoding} \\
 \DWATstmtlist&0x10&\livelink{chap:classlineptr}{lineptr} 
-        \addtoindexx{statement list attribute!encoding} \\
+            \addtoindexx{statement list attribute!encoding} \\
 \DWATlowpc&0x11&\livelink{chap:classaddress}{address} 
-        \addtoindexx{low PC attribute!encoding}  \\
-\DWAThighpc&0x12&\livelink{chap:classaddress}{address}, \livelink{chap:classconstant}{constant} 
-        \addtoindexx{high PC attribute!encoding}  \\
+            \addtoindexx{low PC attribute!encoding}  \\
+\DWAThighpc&0x12&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classconstant}{constant}
+            \addtoindexx{high PC attribute!encoding}  \\
 \DWATlanguage&0x13&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{language attribute!encoding}  \\
+            \addtoindexx{language attribute!encoding}  \\
 \DWATdiscr&0x15&\livelink{chap:classreference}{reference} 
-        \addtoindexx{discriminant attribute!encoding}  \\
+            \addtoindexx{discriminant attribute!encoding}  \\
 \DWATdiscrvalue&0x16&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{discriminant value attribute!encoding}  \\
+            \addtoindexx{discriminant value attribute!encoding}  \\
 \DWATvisibility&0x17&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{visibility attribute!encoding} \\
+            \addtoindexx{visibility attribute!encoding} \\
 \DWATimport&0x18&\livelink{chap:classreference}{reference} 
-        \addtoindexx{import attribute!encoding}  \\
+            \addtoindexx{import attribute!encoding}  \\
 \DWATstringlength&0x19&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{string length attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{string length attribute!encoding}  \\
 \DWATcommonreference&0x1a&\livelink{chap:classreference}{reference} 
-        \addtoindexx{common reference attribute!encoding}  \\
+            \addtoindexx{common reference attribute!encoding}  \\
 \DWATcompdir&0x1b&\livelink{chap:classstring}{string} 
-        \addtoindexx{compilation directory attribute!encoding}  \\
-\DWATconstvalue&0x1c&\livelink{chap:classblock}{block}, \livelink{chap:classconstant}{constant}, \livelink{chap:classstring}{string} 
-        \addtoindexx{constant value attribute!encoding} \\
+            \addtoindexx{compilation directory attribute!encoding}  \\
+\DWATconstvalue&0x1c&\livelink{chap:classblock}{block}, 
+        \livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classstring}{string}
+            \addtoindexx{constant value attribute!encoding} \\
 \DWATcontainingtype&0x1d&\livelink{chap:classreference}{reference} 
-        \addtoindexx{containing type attribute!encoding} \\
-\DWATdefaultvalue&0x1e&\livelink{chap:classreference}{reference}, \livelink{chap:classflag}{flag} 
-        \addtoindexx{default value attribute!encoding} \\
+            \addtoindexx{containing type attribute!encoding} \\
+\DWATdefaultvalue&0x1e&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classreference}{reference}, 
+        \livelink{chap:classflag}{flag}
+            \addtoindexx{default value attribute!encoding} \\
 \DWATinline&0x20&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{inline attribute!encoding}  \\
+            \addtoindexx{inline attribute!encoding}  \\
 \DWATisoptional&0x21&\livelink{chap:classflag}{flag} 
-        \addtoindexx{is optional attribute!encoding} \\
+            \addtoindexx{is optional attribute!encoding} \\
 \DWATlowerbound&0x22&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{lower bound attribute!encoding}  \\
-\DWATproducer&0x25&\livelink{chap:classstring}{string} \addtoindexx{producer attribute!encoding}  \\
-\DWATprototyped&0x27&\livelink{chap:classflag}{flag} 
-        \addtoindexx{prototyped attribute!encoding}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{lower bound attribute!encoding}  \\
+\DWATproducer&0x25&\livelink{chap:classstring}{string}
+            \addtoindexx{producer attribute!encoding}  \\
+\DWATprototyped&0x27&\livelink{chap:classflag}{flag}
+            \addtoindexx{prototyped attribute!encoding}  \\
 \DWATreturnaddr&0x2a&\livelink{chap:classexprloc}{exprloc},
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{return address attribute!encoding}  \\
-% FIXME: lower case , not Constant
+        \livelink{chap:classloclistptr}{loclistptr}
+            \addtoindexx{return address attribute!encoding}  \\
 \DWATstartscope&0x2c&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classrangelistptr}{rangelistptr} \addtoindexx{start scope attribute!encoding}  \\
+        \livelink{chap:classrangelistptr}{rangelistptr}
+            \addtoindexx{start scope attribute!encoding}  \\
 \DWATbitstride&0x2e&\livelink{chap:classconstant}{constant},
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{bit stride attribute!encoding}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{bit stride attribute!encoding}  \\
 \DWATupperbound&0x2f&\livelink{chap:classconstant}{constant},
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} \addtoindexx{upper bound attribute!encoding}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference}
+            \addtoindexx{upper bound attribute!encoding}  \\
 \DWATabstractorigin&0x31&\livelink{chap:classreference}{reference} 
-        \addtoindexx{abstract origin attribute!encoding}  \\
+            \addtoindexx{abstract origin attribute!encoding}  \\
 \DWATaccessibility&0x32&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{accessibility attribute!encoding}  \\
+            \addtoindexx{accessibility attribute!encoding}  \\
 \DWATaddressclass&0x33&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{address class attribute!encoding}  \\
+            \addtoindexx{address class attribute!encoding}  \\
 \DWATartificial&0x34&\livelink{chap:classflag}{flag} 
-        \addtoindexx{artificial attribute!encoding}  \\
+            \addtoindexx{artificial attribute!encoding}  \\
 \DWATbasetypes&0x35&\livelink{chap:classreference}{reference} 
-        \addtoindexx{base types attribute!encoding}  \\
+            \addtoindexx{base types attribute!encoding}  \\
 \DWATcallingconvention&0x36&\livelink{chap:classconstant}{constant} 
         \addtoindexx{calling convention attribute!encoding} \\
-\DWATcount&0x37&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classreference}{reference} 
-        \addtoindexx{count attribute!encoding}  \\
+\DWATcount&0x37&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{count attribute!encoding}  \\
 \DWATdatamemberlocation&0x38&\livelink{chap:classconstant}{constant}, 
-        \livelink{chap:classexprloc}{exprloc}, \livelink{chap:classloclistptr}{loclistptr} 
-        \addtoindexx{data member attribute!encoding}  \\
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{data member attribute!encoding}  \\
 \DWATdeclcolumn&0x39&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration column attribute!encoding}  \\
+            \addtoindexx{declaration column attribute!encoding}  \\
 \DWATdeclfile&0x3a&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration file attribute!encoding}  \\
+            \addtoindexx{declaration file attribute!encoding}  \\
 \DWATdeclline&0x3b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{declaration line attribute!encoding}  \\
+            \addtoindexx{declaration line attribute!encoding}  \\
 \DWATdeclaration&0x3c&\livelink{chap:classflag}{flag} 
-        \addtoindexx{declaration attribute!encoding}  \\
+            \addtoindexx{declaration attribute!encoding}  \\
 \DWATdiscrlist&0x3d&\livelink{chap:classblock}{block} 
-        \addtoindexx{discriminant list attribute!encoding}  \\
+            \addtoindexx{discriminant list attribute!encoding}  \\
 \DWATencoding&0x3e&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{encoding attribute!encoding}  \\
+            \addtoindexx{encoding attribute!encoding}  \\
 \DWATexternal&\xiiif&\livelink{chap:classflag}{flag} 
-        \addtoindexx{external attribute!encoding}  \\
+            \addtoindexx{external attribute!encoding}  \\
 \DWATframebase&0x40&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{frame base attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{frame base attribute!encoding}  \\
 \DWATfriend&0x41&\livelink{chap:classreference}{reference} 
-        \addtoindexx{friend attribute!encoding}  \\
+            \addtoindexx{friend attribute!encoding}  \\
 \DWATidentifiercase&0x42&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{identifier case attribute!encoding}  \\
+            \addtoindexx{identifier case attribute!encoding}  \\
 \DWATmacroinfo&0x43&\livelink{chap:classmacptr}{macptr} 
-        \addtoindexx{macro information attribute!encoding}  \\
+            \addtoindexx{macro information attribute!encoding}  \\
 \DWATnamelistitem&0x44&\livelink{chap:classreference}{reference} 
-        \addtoindexx{name list item attribute!encoding}  \\
+            \addtoindexx{name list item attribute!encoding}  \\
 \DWATpriority&0x45&\livelink{chap:classreference}{reference} 
-        \addtoindexx{priority attribute!encoding}  \\
+            \addtoindexx{priority attribute!encoding}  \\
 \DWATsegment&0x46&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{segment attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{segment attribute!encoding}  \\
 \DWATspecification&0x47&\livelink{chap:classreference}{reference} 
         \addtoindexx{specification attribute!encoding}  \\
 \DWATstaticlink&0x48&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{static link attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{static link attribute!encoding}  \\
 \DWATtype&0x49&\livelink{chap:classreference}{reference} 
-        \addtoindexx{type attribute!encoding}  \\
+            \addtoindexx{type attribute!encoding}  \\
 \DWATuselocation&0x4a&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{location list attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{location list attribute!encoding}  \\
 \DWATvariableparameter&0x4b&\livelink{chap:classflag}{flag} 
-        \addtoindexx{variable parameter attribute!encoding}  \\
+            \addtoindexx{variable parameter attribute!encoding}  \\
 \DWATvirtuality&0x4c&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{virtuality attribute!encoding}  \\
+            \addtoindexx{virtuality attribute!encoding}  \\
 \DWATvtableelemlocation&0x4d&\livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classloclistptr}{loclistptr} \addtoindexx{vtable element location attribute!encoding}  \\
-\DWATallocated&0x4e&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classreference}{reference} \addtoindexx{allocated attribute!encoding}  \\
-\DWATassociated&0x4f&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classreference}{reference} \addtoindexx{associated attribute!encoding}  \\
+        \livelink{chap:classloclistptr}{loclistptr} 
+            \addtoindexx{vtable element location attribute!encoding}  \\
+\DWATallocated&0x4e&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{allocated attribute!encoding}  \\
+\DWATassociated&0x4f&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{associated attribute!encoding}  \\
 \DWATdatalocation&0x50&\livelink{chap:classexprloc}{exprloc} 
         \addtoindexx{data location attribute!encoding}  \\
-\DWATbytestride&0x51&\livelink{chap:classconstant}{constant}, \livelink{chap:classexprloc}{exprloc}, 
-        \livelink{chap:classreference}{reference} \addtoindexx{byte stride attribute!encoding}  \\
-\DWATentrypc&0x52&\livelink{chap:classaddress}{address}, \livelink{chap:classconstant}{constant} 
-        \addtoindexx{entry pc attribute!encoding}  \\
+\DWATbytestride&0x51&\livelink{chap:classconstant}{constant}, 
+        \livelink{chap:classexprloc}{exprloc}, 
+        \livelink{chap:classreference}{reference} 
+            \addtoindexx{byte stride attribute!encoding}  \\
+\DWATentrypc&0x52&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classconstant}{constant} 
+            \addtoindexx{entry pc attribute!encoding}  \\
 \DWATuseUTFeight&0x53&\livelink{chap:classflag}{flag} 
-        \addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8}  \\
+            \addtoindexx{use UTF8 attribute!encoding}\addtoindexx{UTF-8}  \\
 \DWATextension&0x54&\livelink{chap:classreference}{reference} 
-        \addtoindexx{extension attribute!encoding}  \\
+            \addtoindexx{extension attribute!encoding}  \\
 \DWATranges&0x55&\livelink{chap:classrangelistptr}{rangelistptr} 
-        \addtoindexx{ranges attribute!encoding}  \\
-\DWATtrampoline&0x56&\livelink{chap:classaddress}{address}, \livelink{chap:classflag}{flag}, 
-        \livelink{chap:classreference}{reference}, \livelink{chap:classstring}{string} \addtoindexx{trampoline attribute!encoding}  \\
+            \addtoindexx{ranges attribute!encoding}  \\
+\DWATtrampoline&0x56&\livelink{chap:classaddress}{address}, 
+        \livelink{chap:classflag}{flag}, 
+        \livelink{chap:classreference}{reference}, 
+        \livelink{chap:classstring}{string} 
+            \addtoindexx{trampoline attribute!encoding}  \\
 \DWATcallcolumn&0x57&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{call column attribute!encoding}  \\
+            \addtoindexx{call column attribute!encoding}  \\
 \DWATcallfile&0x58&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{call file attribute!encoding}  \\
+            \addtoindexx{call file attribute!encoding}  \\
 \DWATcallline&0x59&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{call line attribute!encoding}  \\
+            \addtoindexx{call line attribute!encoding}  \\
 \DWATdescription&0x5a&\livelink{chap:classstring}{string} 
-        \addtoindexx{description attribute!encoding}  \\
+            \addtoindexx{description attribute!encoding}  \\
 \DWATbinaryscale&0x5b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{binary scale attribute!encoding}  \\
+            \addtoindexx{binary scale attribute!encoding}  \\
 \DWATdecimalscale&0x5c&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{decimal scale attribute!encoding}  \\
+            \addtoindexx{decimal scale attribute!encoding}  \\
 \DWATsmall{} &0x5d&\livelink{chap:classreference}{reference} 
-        \addtoindexx{small attribute!encoding}  \\
+            \addtoindexx{small attribute!encoding}  \\
 \DWATdecimalsign&0x5e&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{decimal scale attribute!encoding}  \\
+            \addtoindexx{decimal scale attribute!encoding}  \\
 \DWATdigitcount&0x5f&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{digit count attribute!encoding}  \\
+            \addtoindexx{digit count attribute!encoding}  \\
 \DWATpicturestring&0x60&\livelink{chap:classstring}{string} 
-        \addtoindexx{picture string attribute!encoding}  \\
+            \addtoindexx{picture string attribute!encoding}  \\
 \DWATmutable&0x61&\livelink{chap:classflag}{flag} 
-        \addtoindexx{mutable attribute!encoding}  \\
+            \addtoindexx{mutable attribute!encoding}  \\
 \DWATthreadsscaled&0x62&\livelink{chap:classflag}{flag} 
-        \addtoindexx{thread scaled attribute!encoding}  \\
+            \addtoindexx{thread scaled attribute!encoding}  \\
 \DWATexplicit&0x63&\livelink{chap:classflag}{flag} 
-        \addtoindexx{explicit attribute!encoding}  \\
+            \addtoindexx{explicit attribute!encoding}  \\
 \DWATobjectpointer&0x64&\livelink{chap:classreference}{reference} 
-        \addtoindexx{object pointer attribute!encoding}  \\
+            \addtoindexx{object pointer attribute!encoding}  \\
 \DWATendianity&0x65&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{endianity attribute!encoding}  \\
+            \addtoindexx{endianity attribute!encoding}  \\
 \DWATelemental&0x66&\livelink{chap:classflag}{flag} 
-        \addtoindexx{elemental attribute!encoding}  \\
+            \addtoindexx{elemental attribute!encoding}  \\
 \DWATpure&0x67&\livelink{chap:classflag}{flag} 
-        \addtoindexx{pure attribute!encoding}  \\
+            \addtoindexx{pure attribute!encoding}  \\
 \DWATrecursive&0x68&\livelink{chap:classflag}{flag} 
-        \addtoindexx{recursive attribute!encoding}  \\
+            \addtoindexx{recursive attribute!encoding}  \\
 \DWATsignature{} &0x69&\livelink{chap:classreference}{reference} 
-        \addtoindexx{signature attribute!encoding}  \\ 
+            \addtoindexx{signature attribute!encoding}  \\ 
 \DWATmainsubprogram{} &0x6a&\livelink{chap:classflag}{flag} 
-        \addtoindexx{main subprogram attribute!encoding}  \\
+            \addtoindexx{main subprogram attribute!encoding}  \\
 \DWATdatabitoffset{} &0x6b&\livelink{chap:classconstant}{constant} 
-        \addtoindexx{data bit offset attribute!encoding}  \\
+            \addtoindexx{data bit offset attribute!encoding}  \\
 \DWATconstexpr{} &0x6c&\livelink{chap:classflag}{flag} 
-        \addtoindexx{constant expression attribute!encoding}  \\
+            \addtoindexx{constant expression attribute!encoding}  \\
 \DWATenumclass{} &0x6d&\livelink{chap:classflag}{flag} 
-        \addtoindexx{enumeration class attribute!encoding}  \\
+            \addtoindexx{enumeration class attribute!encoding}  \\
 \DWATlinkagename{} &0x6e&\livelink{chap:classstring}{string} 
-        \addtoindexx{linkage name attribute!encoding}  \\
+            \addtoindexx{linkage name attribute!encoding}  \\
 \DWATstringlengthbitsize{} \ddag&0x6f&
-               \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
+               \livelink{chap:classconstant}{constant}
+            \addtoindexx{string length attribute!size of length}  \\
 \DWATstringlengthbytesize{} \ddag&0x70&
-               \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
+               \livelink{chap:classconstant}{constant}
+            \addtoindexx{string length attribute!size of length}  \\
 \DWATrank~\ddag&0x71&
-               \livelink{chap:DWATrank}{constant, exprloc}\addtoindexx{rank attribute!encoding}  \\
+               \livelink{chap:DWATrank}{constant, exprloc}
+            \addtoindexx{rank attribute!encoding}  \\
 \DWATstroffsetsbase~\ddag&0x72&
-               \livelink{chap:classstring}{reference}\addtoindexx{string offsets base!encoding}        \\
+               \livelink{chap:classstring}{reference}
+            \addtoindexx{string offsets base!encoding} \\
 \DWATaddrbase~\ddag &0x73&
-               \livelink{chap:DWATaddrbase}{reference}\addtoindexx{address table base!encoding} \\
+               \livelink{chap:DWATaddrbase}{reference}
+            \addtoindexx{address table base!encoding} \\
 \DWATrangesbase~\ddag&0x74&
-               \livelink{chap:DWATrangesbase}{reference}\addtoindexx{ranges base!encoding} \\
+               \livelink{chap:DWATrangesbase}{reference}
+            \addtoindexx{ranges base!encoding} \\
 \DWATdwoid~\ddag &0x75&
-               \livelink{chap:DWATdwoid}{constant}\addtoindexx{split DWARF object id!encoding} \\
+               \livelink{chap:DWATdwoid}{constant}
+            \addtoindexx{split DWARF object id!encoding} \\
 \DWATdwoname~\ddag &0x76&
-               \livelink{chap:DWATdwname}{string}\addtoindexx{split DWARF object file name!encooding} \\
+               \livelink{chap:DWATdwname}{string}
+            \addtoindexx{split DWARF object file name!encoding} \\
+\DWATreference~\ddag &0x77&
+        \livelink{chap:DWATreference}{flag} \\
+\DWATrvaluereference~\ddag &0x78&
+        \livelink{chap:DWATrvaluereference}{flag} \\
 \DWATlouser&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \DWAThiuser&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
 
@@ -1559,7 +1614,7 @@ Table \refersec{tab:dwarfoperationencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag\ \textit{New in DWARF Version 5}
 \endlastfoot
 
 \DWOPaddr&0x03&1 & constant address  \\ 
@@ -1644,10 +1699,10 @@ Table \refersec{tab:dwarfoperationencodings}.
 \DWOPimplicitvalue{} &0x9e &2&ULEB128 size, \\*
                    &&&\nolink{block} of that size\\
 \DWOPstackvalue{} &0x9f &0& \\
-\DWOPimplicitpointer{} &0xa0& 2 &4- or 8-byte offset of DIE, \\*
+\DWOPimplicitpointer{}~\ddag &0xa0& 2 &4- or 8-byte offset of DIE, \\*
                               &&&SLEB128 constant offset \\
-\DWOPaddrx&0xa1&1&ULEB128 indirect address \\
-\DWOPconstx&0xa2&1&ULEB128 indirect constant   \\
+\DWOPaddrx~\ddag&0xa1&1&ULEB128 indirect address \\
+\DWOPconstx~\ddag&0xa2&1&ULEB128 indirect constant   \\
 \DWOPlouser{} &0xe0 && \\
 \DWOPhiuser{} &\xff && \\
 
@@ -2169,7 +2224,7 @@ A
 \addtoindexx{section offset!in name lookup table set of entries}
 4\dash byte or 8\dash byte 
 offset into the 
-\dotdebuginfo{}
+\dotdebuginfo{} or \dotdebuginfodwo{}
 section of the compilation unit header.
 In the \thirtytwobitdwarfformat, this is a 4\dash byte unsigned offset;
 in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned offsets
@@ -2337,14 +2392,14 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
-  \hline
+  \hline \ddag~\textit{New in DWARF Version 5}
 \endlastfoot
 
 \DWLNEendsequence      &0x01 \\
 \DWLNEsetaddress       &0x02 \\
 \DWLNEdefinefile       &0x03 \\
 \DWLNEsetdiscriminator &0x04 \\
-\DWLNEdefinefileMDfive &0c05 \\
+\DWLNEdefinefileMDfive~\ddag &0x05 \\
 \DWLNElouser           &0x80 \\
 \DWLNEhiuser           &\xff \\
 
@@ -2508,7 +2563,8 @@ corresponding compilation unit must be defined
 \section{String Offsets Table}
 \label{chap:stringoffsetstable}
 Each set of entries in the string offsets table contained in the
-\dotdebugstroffsets{} section begins with a header containing:
+\dotdebugstroffsets{} or \dotdebugstroffsetsdwo{}
+section begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
 A 4-byte or 12-byte length containing the length of
@@ -2528,7 +2584,8 @@ A 2-byte version identifier containing the value
 \item \texttt{padding} (\addtoindex{uhalf}) \\
 \end{enumerate}
 
-This header is followed by a series of string table offsets.
+This header is followed by a series of string table offsets
+that have the same representation as \DWFORMstrp.
 For the 32-bit DWARF format, each offset is 4 bytes long; for
 the 64-bit DWARF format, each offset is 8 bytes long.
 
@@ -2632,7 +2689,7 @@ offset relative to this base address.
 \section{Location List Table}
 \label{datarep:locationlisttable}
 Each set of entries in the location list table contained in the
-\dotdebugloc{} or \dotdebuglocdwo{}sections begins with a header containing:
+\dotdebugloc{} or \dotdebuglocdwo{} sections begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
 A 4-byte or 12-byte length containing the length of
@@ -2787,8 +2844,9 @@ the type definitions that are contained in
 type units.
 
 The type signature for a type T0 is formed from the 
-\addtoindex{MD5 hash}
-of a flattened description of the type. The flattened
+\MDfive{}\footnote{\livetarg{def:MDfive}{MD5} Message Digest Algorithm, 
+R.L. Rivest, RFC 1321, April 1992}
+hash of a flattened description of the type. The flattened
 description of the type is a byte sequence derived from the
 DWARF encoding of the type as follows:
 \begin{enumerate}[1. ]
@@ -2862,6 +2920,9 @@ code, and the attribute value.
 \DWATordering,
 \DWATpicturestring,
 \DWATprototyped,
+\DWATrank,
+\DWATreference,
+\DWATrvaluereference,
 \DWATsmall,
 \DWATsegment,
 \DWATstringlength,
@@ -2998,7 +3059,7 @@ example, a constant value should be preferred to a location
 expression when possible.)
 
 Once the string S has been formed from the DWARF encoding,
-an \addtoindex{MD5 hash} is computed for the string and the 
+an \MDfive{} hash is computed for the string and the 
 least significant 64 bits are taken as the type signature.
 
 \textit{The string S is intended to be a flattened representation of
@@ -3046,8 +3107,7 @@ declaration of the type.}
 \DWATdeclcolumn{} attributes are not included because they
 may vary from one source file to the next, and would prevent
 two otherwise identical type declarations from producing the
-\addtoindexx{MD5 hash}
-same hash.}
+same \MDfive{} hash.}
 
 \item \textit{The \DWATobjectpointer{} attribute is not included 
 because the information it provides is not necessary for the 
@@ -3069,6 +3129,6 @@ and replacing the function definition in the type with a non-defining
 declaration of the function (as if the function had been defined out of 
 line).}
 
-An example that illustrates the computation of an MD5 hash may be found in 
+An example that illustrates the computation of an \MDfive{} hash may be found in 
 Appendix \refersec{app:usingtypeunits}.
 
index 4b09626..3bc5aaa 100644 (file)
@@ -76,11 +76,11 @@ versus \dotdebuginfodwo).}
 \node(zsectstr)        at (12, 14) [sect] {\dotdebugstr};
 \node(zlinkl)   at (12, 12) [link] {To strings (l)};
 \node(zsectstx) at (12, 10) [sect] {\dotdebugstroffsets};
-\node(zsectloc)        at (12,  8) [sect] {\dotdebugloc};
+\node(zsectloc)        at (12,  8) [sect] {\dotdebugloc{} (m)};
 \node(zsectran)        at (12,  6) [sect] {\dotdebugranges};
 \node(zsectmac)        at (12,  4) [sect] {\dotdebugmacinfo};
 \node(zsectlin)        at (12,  2) [sect] {\dotdebugline};
-\node(zsectadx) at (12,  0) [sect] {\dotdebugaddr};
+\node(zsectadx) at (12,  0) [sect] {\dotdebugaddr{} (m)};
 
 \draw[thick,to reversed-]              (zsectstx) -- (zlinkl);
 \draw[thick,-angle 90]                 (zlinkl) -- (zsectstr);
@@ -195,11 +195,11 @@ beginning of the line number information for the referencing unit.
 %k
 \item \dotdebuginfo{} to \dotdebugaddr \\
 The value of the \DWATaddrbase{} attribute in the
-\DWTAGcompileunit{} or \DWTAGpartialunit{} DIE is the
+\DWTAGcompileunit{}, \DWTAGtypeunit{} or \DWTAGpartialunit{} DIE is the
 offset in the \dotdebugaddr{} section of the machine
-addresses for that compilation unit or type unit.
-\DWFORMaddrx, \DWOPaddrx, and \DWOPconstx{} contain
-indices relative to the beginning of that section.
+addresses for that unit.
+\DWFORMaddrx, \DWOPaddrx and \DWOPconstx{} contain
+indices relative to that offset.
 
 %l
 \item \dotdebugstroffsets{} to \dotdebugstr \\
@@ -207,4 +207,11 @@ Entries in the string offsets table
 are offsets to the corresponding string text in the 
 \dotdebugstr{} section.
 
+%m
+\item \dotdebugloc{} to \dotdebugaddr \\
+\DWOPaddrx{} and \DWOPconstx{} operators that occur in the 
+\dotdebugloc{} section refer indirectly to the 
+\dotdebugaddr{} section by way of the 
+\DWATaddrbase{} attribute in the associated \dotdebuginfo{} or 
+\dotdebugtypes{} section. 
 \end{enumerate}
index 5ca596b..27a5752 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}{November 22, 2013}
+\newcommand{\docdate}{December 18, 2013}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
@@ -185,8 +185,8 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 % Anti-ligature commands added because \/ and {} don't work for unknown reasons
 % nor does the microtext package DisableLigatures command...???
 %
-\newcommand{\xiiif}                            {0x\hspace{1pt}3\hspace{2pt}f}
-\newcommand{\xiiifff}                  {0x\hspace{1pt}3\hspace{2pt}f\hspace{2pt}f\hspace{2pt}f}
+\newcommand{\xiiif}                            {0x3\hspace{1pt}f}
+\newcommand{\xiiifff}                  {0x3\hspace{1pt}f\hspace{2pt}f\hspace{2pt}f}
 \newcommand{\xff}                              {0x\hspace{1pt}f\hspace{2pt}f}
 \newcommand{\xffff}                            {0x\hspace{1pt}f\hspace{2pt}f\hspace{2pt}f\hspace{2pt}f}
 %
@@ -318,10 +318,10 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 %  The \appendix toggles us into appendix chapters
 \appendix
 
-\include{attributesbytag}                              %\emptypage
+\include{attributesbytag}                              \emptypage
 \include{debugsectionrelationships}     %\emptypage
 \include{encodingdecoding}              \emptypage
-\include{examples}                      %\emptypage
+\include{examples}                      \emptypage
 \include{compression}                   %\emptypage
 \include{splitobjects}                                 %\emptypage
 \include{sectionversionnumbers}
index 44ddf6e..e3fdafc 100644 (file)
@@ -67,7 +67,7 @@
 \newdwfnamecommands{DWATdeclaration}{DW\_AT\_declaration}
 \newdwfnamecommands{DWATdefaultvalue}{DW\_AT\_default\_value}
 \newdwfnamecommands{DWATdescription}{DW\_AT\_description}
-\newdwfnamecommands{DWATdigitcount}{DW\_AT\_digit\_ount}
+\newdwfnamecommands{DWATdigitcount}{DW\_AT\_digit\_count}
 \newdwfnamecommands{DWATdiscr}{DW\_AT\_discr}
 \newdwfnamecommands{DWATdiscrlist}{DW\_AT\_discr\_list}
 \newdwfnamecommands{DWATdiscrvalue}{DW\_AT\_discr\_value}
 \newdwfnamecommands{DWATrangesbase}{DW\_AT\_ranges\_base}
 \newdwfnamecommands{DWATrank}{DW\_AT\_rank}
 \newdwfnamecommands{DWATrecursive}{DW\_AT\_recursive}
+\newdwfnamecommands{DWATreference}{DW\_AT\_reference}
 \newdwfnamecommands{DWATreturnaddr}{DW\_AT\_return\_addr}
+\newdwfnamecommands{DWATrvaluereference}{DW\_AT\_rvalue\_reference}
 %
 \newdwfnamecommands{DWATsegment}{DW\_AT\_segment}
 \newdwfnamecommands{DWATsibling}{DW\_AT\_sibling}
 %
 \newdwfnamecommands{DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration}
 \newdwfnamecommands{DWTAGarraytype}{DW\_TAG\_array\_type}
+\newdwfnamecommands{DWTAGatomictype}{DW\_TAG\_atomic\_type}
 \newdwfnamecommands{DWTAGbasetype}{DW\_TAG\_base\_type}
 \newdwfnamecommands{DWTAGcatchblock}{DW\_TAG\_catch\_block}
 \newdwfnamecommands{DWTAGclasstype}{DW\_TAG\_class\_type}
 \newdwfnamecommands{DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
 \newdwfnamecommands{DWTAGinterfacetype}{DW\_TAG\_interface\_type}
 \newdwfnamecommands{DWTAGlabel}{DW\_TAG\_label}
-\newdwfnamecommands{DWTAGlexicalblock}{DW\_TG\_lexical\_block}
+\newdwfnamecommands{DWTAGlexicalblock}{DW\_TAG\_lexical\_block}
 \newdwfnamecommands{DWTAGlouser}{DW\_TAG\_lo\_user}
 \newdwfnamecommands{DWTAGmember}{DW\_TAG\_member}
 \newdwfnamecommands{DWTAGmodule}{DW\_TAG\_module}
 \newdwfnamecommands{DWTAGpartialunit}{DW\_TAG\_partial\_unit}
 \newdwfnamecommands{DWTAGpointertype}{DW\_TAG\_pointer\_type}
 \newdwfnamecommands{DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}
-\newdwfnamecommands{DWTAGreferencetype}{DW\_tag\_reference\_type}
+\newdwfnamecommands{DWTAGreferencetype}{DW\_TAG\_reference\_type}
 \newdwfnamecommands{DWTAGrestricttype}{DW\_TAG\_restrict\_type}
 \newdwfnamecommands{DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type}
 \newdwfnamecommands{DWTAGsettype}{DW\_TAG\_set\_type}
 \newcommand{\dotdebuginfo}{\addtoindex{\texttt{.debug\_info}}}
 \newcommand{\dotdebugline}{\addtoindex{\texttt{.debug\_line}}}
 \newcommand{\dotdebugloc}{\addtoindex{\texttt{.debug\_loc}}}
-\newcommand{\dotdebugmacinfo}{\addtoindex{\texttt{.debug\_mac\_info}}}
+\newcommand{\dotdebugmacinfo}{\addtoindex{\texttt{.debug\_macinfo}}}
 \newcommand{\dotdebugmacro}{\addtoindex{\texttt{.debug\_macro}}}
 \newcommand{\dotdebugpubnames}{\addtoindex{\texttt{.debug\_pubnames}}}
 \newcommand{\dotdebugpubtypes}{\addtoindex{\texttt{.debug\_pubtypes}}}
 \newcommand{\dotdebuginfodwo}{\addtoindex{\texttt{.debug\_info.dwo}}}
 \newcommand{\dotdebuglinedwo}{\addtoindex{\texttt{.debug\_line.dwo}}}
 \newcommand{\dotdebuglocdwo}{\addtoindex{\texttt{.debug\_loc.dwo}}}
-\newcommand{\dotdebugmacinfodwo}{\addtoindex{\texttt{.debug\_mac\_info.dwo}}}
+\newcommand{\dotdebugmacinfodwo}{\addtoindex{\texttt{.debug\_macinfo.dwo}}}
 \newcommand{\dotdebugmacrodwo}{\addtoindex{\texttt{.debug\_macro.dwo}}}
 \newcommand{\dotdebugpubnamesdwo}{\addtoindex{\texttt{.debug\_pubnames.dwo}}}
 \newcommand{\dotdebugpubtypesdwo}{\addtoindex{\texttt{.debug\_pubtypes.dwo}}}
 \newcommand{\DWARFVersionII}  {\addtoindex{DWARF Version 2}}
 \newcommand{\DWARFVersionIIII}{\addtoindex{DWARF Version 3}}
 \newcommand{\DWARFVersionIV}  {\addtoindex{DWARF Version 4}}
-\newcommand{\DWARFVersionV}   {\addtoindex{DWARF Version 5}}
\ No newline at end of file
+\newcommand{\DWARFVersionV}   {\addtoindex{DWARF Version 5}}
+%
+% Miscellaneous
+%
+\newcommand{\MDfive}{\livelink{def:MDfive}{MD5}}
\ No newline at end of file
index 04fbb7f..61166ab 100644 (file)
@@ -1306,7 +1306,7 @@ Figure~\ref{fig:namespaceexampledwarfdescription}: Namespace example: DWARF desc
 \end{figure}
 
 \clearpage
-\section{Member Function Example}
+\section{Member Function Examples}
 \label{app:memberfunctionexample}
 
 Consider the member function example fragment in 
@@ -1417,6 +1417,44 @@ Figure~\ref{fig:memberfunctionexampledwarfdescription}: Member function example:
 \end{center}
 \end{figure}
 
+As a further example illustrating \&- and \&\&-qualification, 
+consider the member function example fragment in 
+Figure \refersec{fig:memberfunctionrefqualexamplesourcefragment}.
+The DWARF representation in 
+Figure \refersec{fig:memberfunctionrefqualexampledwarfdescription}
+is appropriate.
+
+\begin{figure}[h]
+\begin{lstlisting}
+class A {
+public:
+    void f() const &&;
+};
+   
+void g() {
+    A a;
+    // The type of pointer is "void (A::*)() const &&".
+    auto pointer = &A::f;
+}
+\end{lstlisting}
+\caption{Member function with reference-qualification example: source \mbox{fragment}}
+\label{fig:memberfunctionrefqualexamplesourcefragment}
+\end{figure}
+
+\begin{figure}[h]
+%\figurepart{1}{2}
+\begin{dwflisting}
+\begin{alltt}
+
+... to be provided...
+
+\end{alltt}
+\end{dwflisting}
+\caption{Member function with reference-qualification example: DWARF \mbox{description}}
+\label{fig:memberfunctionrefqualexampledwarfdescription}
+\end{figure}
+
+
 \clearpage
 \section{Line Number Program Example}
 \label{app:linenumberprogramexample}
index 5b0d025..37382b7 100644 (file)
@@ -41,12 +41,12 @@ 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} 
-and Version 3 
-\addtoindexx{DWARF Version 3}
+\addtoindex{DWARF Version 2}, 
+\addtoindex{DWARF Version 3} and
+\addtoindex{DWARF Version 4}
 constructs have been retained unchanged
-\addtoindexx{DWARF Version 4}
-in DWARF Version 4.
+\addtoindexx{DWARF Version 5}
+in DWARF Version 5.
 
 The \dwf\ Committee is open to compiler and debugger
 developers who have experience with source language debugging
index c99a28e..20a212a 100644 (file)
@@ -33,6 +33,7 @@ described in Chapters 3, 4 and 5.
 \autocols[0pt]{c}{2}{l}{
 \DWTAGaccessdeclaration,
 \DWTAGarraytype,
+\DWTAGatomictype,
 \DWTAGbasetype,
 \DWTAGcatchblock,
 \DWTAGclasstype,
@@ -356,8 +357,13 @@ actually declared in the source}{objects or types that are not actually declared
 &\livelinki{chap:DWATrankofdynamicarray}{Dynamic number of array dimensions}{dynamic number of array dimensions} \\
 \DWATrecursiveTARG
 &\livelinki{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine}{recursive property of a subroutine} \\
+\DWATreferenceTARG
+&\livelink{chap:DWATreferenceofnonstaticmember}{\&-qualified non-static member function} \\
 \DWATreturnaddrTARG
 &\livelinki{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location}{subroutine return address save location} \\
+\DWATrvaluereferenceTARG
+&\livelink{chap:DWATrvaluereferenceofnonstaticmember}{\&\&-qualified non-static member function} \\
+
 \DWATsegmentTARG
 &\livelinki{chap:DWATsegmentaddressinginformation}{Addressing information}{addressing information} \\
 \DWATsiblingTARG
@@ -387,7 +393,7 @@ actually declared in the source}{objects or types that are not actually declared
 \DWATstroffsetsbaseTARG
 &\livelinki{chap:DWATstroffsetbaseforindirectstringtable}{Base of string offsets table}{string offsets table} \\
 \DWATthreadsscaledTARG
-&\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}{UPC!array bound THREADS scale factor}\\
+&\livelink{chap:DWATthreadsscaledupcarrayboundthreadsscalfactor}{UPC array bound THREADS scale factor}\\
 \DWATtrampolineTARG
 &\livelinki{chap:DWATtrampolinetargetsubroutine}{Target subroutine}{target subroutine of trampoline} \\
 \DWATtypeTARG
@@ -703,12 +709,16 @@ The \DWOPaddrxNAME{} operation has a single operand that
 encodes an unsigned LEB128 value, which is a zero-based
 index into the \dotdebugaddr{} section, where a machine
 address is stored.
+This index is relative to the value of the 
+\DWATaddrbase{} attribute of the associated compilation unit.
 
 \itembfnl{\DWOPconstxTARG}
 The \DWOPconstxNAME{} operation has a single operand that
 encodes an unsigned LEB128 value, which is a zero-based
 index into the \dotdebugaddr{} section, where a constant, the
 size of a machine address, is stored.
+This index is relative to the value of the 
+\DWATaddrbase{} attribute of the associated compilation unit.
 
 \textit{The \DWOPconstxNAME{} operation is provided for constants that
 require link-time relocation but should not be
@@ -794,6 +804,7 @@ The size of the data retrieved from the
 \addtoindexi{dereferenced}{address!dereference operator}
 address is the \addtoindex{size of an address} on the target machine.
 
+\needlines{4}
 \itembfnl{\DWOPderefsizeTARG}
 The \DWOPderefsizeTARG{} operation behaves like the 
 \DWOPderef{}
@@ -1733,11 +1744,15 @@ following the type code. This value is the index of an
 address in the \dotdebugaddr{} section, which is then used as
 the base address when interpreting offsets in subsequent
 location list entries of type \DWLLEoffsetpairentry.
+This index is relative to the value of the 
+\DWATaddrbase{} attribute of the associated compilation unit.
 
 \itembfnl{\DWLLEstartendentryTARG}
 This entry contains two unsigned LEB128 values
 immediately following the type code. These values are the
-indexes of two addresses in the \dotdebugaddr{} section.
+indices of two addresses in the \dotdebugaddr{} section.
+These indices are relative to the value of the 
+\DWATaddrbase{} attribute of the associated compilation unit.
 These indicate the starting and ending addresses,
 respectively, that define the address range for which
 this location is valid. The starting and ending addresses
@@ -1746,14 +1761,17 @@ compilation unit base address. A single location
 description follows the fields that define the address range.
 
 \itembfnl{\DWLLEstartlengthentryTARG}
-This entry contains one LEB128 value and a 4-byte
+This entry contains one unsigned LEB128 value and a 4-byte
 unsigned value immediately following the type code. The
 first value is the index of an address in the \dotdebugaddr{}
 section, which marks the beginning of the address range
-over which the location is valid. The second value is the
-length of the range. The starting address given by this
+over which the location is valid.
+This index is relative to the value of the 
+\DWATaddrbase{} attribute of the associated compilation unit.
+The starting address given by this
 type of entry is not relative to the compilation unit
-base address. A single location
+base address. The second value is the
+length of the range. A single location
 description follows the fields that define the address range.
 
 \itembfnl{\DWLLEoffsetpairentryTARG}
@@ -2000,15 +2018,13 @@ global variable x rather than of the local version.}
 
 \subsection{Non-Defining Declarations}
 A debugging information entry that 
-represents a non-defining or 
-\addtoindex{non-defining declaration}
-otherwise 
+represents a non-defining 
+\addtoindexx{non-defining declaration}
+or otherwise 
 \addtoindex{incomplete declaration}
-of a program entity has 
+of a program entity has a
 \addtoindexx{declaration attribute}
-a 
-\DWATdeclaration{} 
-attribute, which is a 
+\DWATdeclaration{} attribute, which is a 
 \livelink{chap:classflag}{flag}.
 
 \subsection{Declarations Completing Non-Defining Declarations}
@@ -2446,7 +2462,7 @@ rules of the applicable programming language.
 \DWATupperbound,
 (and possibly others).}
 
-\needlines{6}
+\needlines{4}
 \section{Entity Descriptions}
 \textit{Some debugging information entries may describe entities
 in the program that are artificial, or which otherwise are
index 429d6ff..8e03424 100644 (file)
@@ -609,7 +609,7 @@ and their meanings are as follows:
 \item \DWLNFtimestampsizeTARG \\
 Entries contain a modification timestamp and file size.
 \item \DWLNFMDfiveTARG \\
-Entries contain an \addtoindex{MD5} digest of the file contents.
+Entries contain an \MDfive{} digest of the file contents.
 \end{itemize}
 
 \needlines{3}
@@ -671,7 +671,7 @@ index of a directory in the
 \end{itemize}
 If \texttt{file\_entry\_format} is \DWLNFMDfive:
 \begin{itemize}
-\item A 16-byte MD5 digest of the file contents.
+\item A 16-byte \MDfive{} digest of the file contents.
 \end{itemize}
 
 \end{itemize}
@@ -784,6 +784,7 @@ line increment, a standard opcode must be used instead of a
 special opcode. The \addtoindex{operation advance} represents the number
 of operations to skip when advancing the \addtoindex{operation pointer}.
 
+\needlines{6}
 The special opcode is then calculated using the following formula:
 \begin{alltt}
   opcode = 
@@ -1140,7 +1141,7 @@ or one of the directories in the
 number representing the directory index
 of the directory in which the file was found.  
 
-\item A 16-byte \addtoindex{MD5} digest of the file contents.
+\item A 16-byte \MDfive{} digest of the file contents.
 \end{enumerate}
 The first two operands are interpreted in the same way as the 
 first two operands of \DWLNEdefinefile.
@@ -1418,10 +1419,10 @@ instruction ignores those bits. This leaves two bits of
 storage that are available to other uses that must be treated
 specially.}
 
-
 \end{itemize}
 
 
+\needlines{6}
 \subsection{Structure of Call Frame Information}
 \label{chap:structureofcallframeinformation}
 
@@ -1612,6 +1613,7 @@ rule table represents the return address of the function. Note
 that this column might not correspond to an actual machine
 register.
 
+\needlines{4}
 \item \texttt{initial\_instructions} (array of \addtoindex{ubyte}) \\
 A sequence of rules that are interpreted to create the initial
 setting of each column in the table.  
@@ -1671,6 +1673,7 @@ Enough \DWCFAnop{} instructions
 to make the size of this entry match the length value above.
 \end{enumerate}
 
+\needlines{8}
 \subsection{Call Frame Instructions}
 \label{chap:callframeinstructions}
 
@@ -1691,8 +1694,9 @@ operators cannot be used in such operands:
 
 \begin{itemize}
 \item \DWOPcalltwo, \DWOPcallfour{} 
-and \DWOPcallref{} operators
-are allowed the call frame information must not depend on other
+and \DWOPcallref{} operators are 
+not allowed in an operand of these instructions because
+the call frame information must not depend on other
 debug sections.
 
 \needlines{5}
index 1c1e2c9..3ad25f5 100644 (file)
@@ -335,7 +335,8 @@ Section \refersec{chap:entryaddress}).
 attribute, whose value is a reference. 
 This attribute points to the first string
 offset of the compilation unit's contribution to the
-\dotdebugstroffsets{} section. Indirect string references
+\dotdebugstroffsets{} (or \dotdebugstroffsetsdwo{}) section. 
+Indirect string references
 (using \DWFORMstrx) within the compilation unit are
 interpreted as indices relative to this base.
 
@@ -344,13 +345,14 @@ interpreted as indices relative to this base.
 attribute, whose value is a reference.
 This attribute points to the beginning of the compilation
 unit's contribution to the \dotdebugaddr{} section.
-Indirect references (using \DWFORMaddrx, \DWOPaddrx, or
-\DWOPconstx) within the compilation unit are
+Indirect references (using \DWFORMaddrx, \DWOPaddrx, 
+\DWOPconstx, \DWLLEbaseaddressselectionentry{}, 
+\DWLLEstartendentry, or \DWLLEstartlengthentry) within the compilation unit are
 interpreted as indices relative to this base.
 
 \needlines{5}
 \item A \DWATrangesbaseNAME\addtoindexx{ranges table base attribute}
-\hypertarget{chap:DWATrangesbaseforrangestable}{}
+\hypertarget{chap:DWATrangesbaseforrangelists}{}
 attribute, whose value is a reference.
 This attribute points to the beginning of the compilation
 unit's contribution to the \dotdebugranges{} section.
@@ -397,13 +399,15 @@ A \DWATcompdir{} attribute (the same as for regular
 compilation unit entries).
 
 \item
-A \DWATdwoname{} attribute whose value is a
+\livetarg{chap:DWATdwoidforunit}{}
+A \DWATdwonameNAME{} attribute whose value is a
 null-terminated string containing the full or relative
 path name of the DWARF object file that contains the full
 compilation unit.
 
 \item
-A \DWATdwoid{} attribute whose value is an 8-byte
+\livetarg{chap:DWATdwoidforunit}{}
+A \DWATdwoidNAME{} attribute whose value is an 8-byte
 unsigned hash of the full compilation unit.  This hash
 value is computed by the method described in 
 Section \refersec{datarep:typesignaturecomputation}.
index 9e32d5f..d6ecc94 100644 (file)
@@ -27,14 +27,13 @@ sections and so an incompatible change in those sections'
 format would be represented by a change in the 
 and \dotdebugtypes{} section version number.
 
-\clearpage
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{lcccc}
   \caption{Section version numbers} \label{tab:sectionversionnumbers} \\
   \hline \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 &\bfseries V5 \\ \hline
 \endfirsthead
-   \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 \\ \hline
+   \bfseries Section Name &\bfseries V2 &\bfseries V3 &\bfseries V4 &\bfseries V5 \\ \hline
 \endhead
   \hline \emph{Continued on next page}
 \endfoot
@@ -45,7 +44,7 @@ and \dotdebugtypes{} section version number.
 \dotdebugaranges{}  & 2 & 2 & 2 & 2 \\
 \dotdebugframe{}    & 1 & 3 & 4 & 4 \\
 \dotdebuginfo{}     & 2 & 3 & 4 & 5 \\
-\dotdebugline{}     & 2 & 3 & 4 & 4 \\
+\dotdebugline{}     & 2 & 3 & 4 & 5 \\
 \dotdebugloc{}      & - & - & - & 5 \\
 \dotdebugmacinfo{}  & - & - & - & - \\
 \dotdebugpubnames{} & 2 & 2 & 2 & 2 \\
@@ -54,6 +53,16 @@ and \dotdebugtypes{} section version number.
 \dotdebugstr{}      & - & - & - & - \\
 \dotdebugstroffsets    & x & x & x & 5 \\
 \dotdebugtypes{}    & x & x & 4 & 5 \\
+\hspace{3cm}\textit{(.dwo sections)}                              \\
+\dotdebugabbrevdwo  & x & x & x & 5 \\
+\dotdebuginfodwo    & x & x & x & 5 \\
+\dotdebuglinedwo    & x & x & x & 5 \\
+\dotdebuglocdwo     & x & x & x & 5 \\
+\dotdebugstrdwo     & x & x & x & - \\
+\dotdebugstroffsetsdwo 
+                    & x & x & x & 5 \\
+\dotdebugtypesdwo   & x & x & x & 5 \\
+
 \end{longtable}
 \end{centering}
 
index ae4e719..206d728 100644 (file)
@@ -142,15 +142,16 @@ for the compilation unit, unaffected by this design.
 \needlines{6}
 The skeleton \DWTAGcompileunit{} DIE has the following attributes:
 \autocols[0pt]{c}{3}{l}{
+\DWATaddrbase{},
 \DWATcompdir{},
-\DWATdwoname{} (new),
-\DWATdwoid{} (new),
-\DWATstmtlist{},
-\DWATlowpc{} \dag,
+\DWATdwoname{},
+\DWATdwoid{},
 \DWAThighpc{} \dag,
+\DWATlowpc{} \dag,
 \DWATranges{} \dag,
 \DWATrangesbase{},
-\DWATaddrbase{}
+\DWATstmtlist{},
+\DWATstroffsetsbase{}
 }
 \dag{} If \DWATranges{} is present, \DWATlowpc{} and \DWAThighpc{} are
 not used, and vice versa.
index 99a7f7a..7966711 100644 (file)
@@ -378,6 +378,7 @@ A base or user\dash defined type may be modified in different ways
 in different languages. A type modifier is represented in
 DWARF by a debugging information entry with one of the tags
 given in Table \refersec{tab:typemodifiertags}.
+\addtoindexx{type modifier|see{atomic type entry}}
 \addtoindexx{type modifier|see{constant type entry}}
 \addtoindexx{type modifier|see{reference type entry}}
 \addtoindexx{type modifier|see{restricted type entry}}
@@ -458,6 +459,7 @@ presentation.
 \begin{tabular}{l|p{9cm}}
 \hline
 Name&Meaning\\ \hline
+\DWTAGatomictypeTARG{} & C \addtoindex{\_Atomic} qualified type \\
 \DWTAGconsttypeTARG{} &  C or C++ const qualified type
 \addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
 \DWTAGpackedtypeTARG& \addtoindex{Pascal} or Ada packed type\addtoindexx{packed type entry}
@@ -467,7 +469,7 @@ the type being modified \addtoindexx{pointer qualified type entry} \\
 \DWTAGreferencetypeTARG& C++ (lvalue) reference 
 to an object of the type 
 \addtoindexx{reference type entry}
-being modified
+\mbox{being} modified
 \addtoindexx{reference qualified type entry} \\
 \DWTAGrestricttypeTARG& \addtoindex{C} 
 restrict 
@@ -478,7 +480,7 @@ qualified type
 \addtoindexx{rvalue reference type entry}
 rvalue 
 \addtoindexx{restricted type entry}
-reference to an object of the type being modified 
+reference to an object of the type \mbox{being} modified 
 \addtoindexx{rvalue reference qualified type entry} \\
 \DWTAGsharedtypeTARG&\addtoindex{UPC} shared qualified type 
 \addtoindexx{shared qualified type entry} \\
 \DWATobjectpointer{}
 attribute.
 
+\textit{In \addtoindex{C++}, non-static member functions can have const-volatile
+qualifiers, which affect the type of the first formal parameter (the
+\doublequote{\texttt{this}}-pointer).}
 If the member function entry describes a non\dash static member
 function that has a const\dash volatile qualification, then
 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++11}, 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.}
+
+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 
+\livetarg{chap:DWATrvaluereferenceofnonstaticmember}{}
+to indicate that it can only be called on pr-values and x-values.
+
 If a subroutine entry represents the defining declaration
 of a member function and that definition appears outside of
 the body of the enclosing class declaration, the subroutine
@@ -1553,6 +1571,7 @@ by debugging information entries owned by the corresponding
 variant entry and appear in the same order as the corresponding
 declarations in the source program.
 
+\needlines{6}
 \section{Condition Entries}
 \label{chap:conditionentries}
 
@@ -1789,6 +1808,17 @@ represented by a debugging information entry with the
 tag \DWTAGunspecifiedparameters.
 \end{enumerate}
 
+\textit{\addtoindex{C++} const-volatile qualifiers are encoded as 
+part of the type of the
+\doublequote{\texttt{this}}-pointer. 
+\addtoindex{C++11} reference and rvalue-reference qualifiers are encoded using
+the \DWATreference{} and \DWATrvaluereference{} attributes, respectively. 
+See also Section \refersec{chap:memberfunctionentries}.}
+
+A subroutine type entry may have the \DWATreference{} or
+\DWATrvaluereference{} attribute to indicate that it describes the
+type of a member function with reference or rvalue-reference 
+semantics, respectively.
 
 
 \section{String Type Entries}
@@ -1823,7 +1853,6 @@ attribute, whose value
 is the amount of
 storage needed to hold a value of the string type.
 
-
 The 
 \hypertarget{chap:DWATstringlengthstringlengthofstringtype}{}
 string type entry may also have a 
@@ -1865,6 +1894,7 @@ is the same as the
 In DWARF Version 5, \DWATbytesize{} always specifies the amount of storage 
 allocated for objects of the string type.}
 
+\needlines{6}
 \section{Set Type Entries}
 \label{chap:settypeentries}