Incorporte all changes and approved issued to date.
authorRon Brender <ron.brender@gmail.com>
Sat, 8 Feb 2014 22:47:03 +0000 (17:47 -0500)
committerRon Brender <ron.brender@gmail.com>
Sat, 8 Feb 2014 22:47:03 +0000 (17:47 -0500)
Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/copyright.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/dwarfnamecmds.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 010d653..0f34d9f 100644 (file)
@@ -763,9 +763,10 @@ means include all three of the
 
 \hline
 \DWTAGtypeunit
 
 \hline
 \DWTAGtypeunit
-&\DWATaddrbase{} \\*
 &\DWATlanguage{} \\*
 &\DWATlanguage{} \\*
+&\DWATstmtlist{} \\*
 &\DWATstroffsetsbase{} \\*
 &\DWATstroffsetsbase{} \\*
+&\DWATuseUTFeight{} \\*
 
 \hline
 \DWTAGuniontype
 
 \hline
 \DWTAGuniontype
index 4e10553..79328a0 100644 (file)
@@ -11,9 +11,12 @@ Note
 This change summary is included only in draft versions of this document.
 \end{center}
 
 This change summary is included only in draft versions of this document.
 \end{center}
 
-\vspace{1cm}
-\begin{tabular}{ll}
+%\vspace{1cm}
+\begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
+\endhead
+2/8/2014        & 131113.1 (UTF-8), 131113.2 (correct \DWTAGtypeunitNAME{} in Appendix A),      \\
+                & 131217.1 (C++ "auto" return type), 131105.1 (add example)     \\
 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 \\
 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 \\
@@ -39,12 +42,12 @@ This change summary is included only in draft versions of this document.
                        & 110803.1 (tls), 110926.1 (DW\_OP\_callx), 121212.1 (type unit)        \\
                        & 121221.1 (location length), 130121.1 (default location) \\
                        & 121123.1 (length in location list entry),             \\
                        & 110803.1 (tls), 110926.1 (DW\_OP\_callx), 121212.1 (type unit)        \\
                        & 121221.1 (location length), 130121.1 (default location) \\
                        & 121123.1 (length in location list entry),             \\
-                       & 110110.1 \& 130623.1 (size of string length--\textbf{normative text only, need examples})     \\
+                       & 110110.1 \& 130623.1 (size of string length w/o example)      \\
 6/20/2013      & 090824.1 (coarray)                                                    \\
 6/18/2013      & 100211.1 (OpenCL), add this Change Summary    \\
 6/1/2013       & Begin V5 (from V4.1), delete V4 vs V3 stuff, delete "new in V4" \\
 (Pre-V5)       & 100923.1 (bungled subheader), 101015.1 (sig8 typo), \\
                        & 110404.1 (DW\_TAG\_member typos) \\
 
 6/20/2013      & 090824.1 (coarray)                                                    \\
 6/18/2013      & 100211.1 (OpenCL), add this Change Summary    \\
 6/1/2013       & Begin V5 (from V4.1), delete V4 vs V3 stuff, delete "new in V4" \\
 (Pre-V5)       & 100923.1 (bungled subheader), 101015.1 (sig8 typo), \\
                        & 110404.1 (DW\_TAG\_member typos) \\
 
-\end{tabular}
+\end{longtable}
 \end{abstract}
 \end{abstract}
index 9026c34..adcbe91 100644 (file)
@@ -7,7 +7,7 @@
 \begin{center}
 \dwf, Version 5
 
 \begin{center}
 \dwf, Version 5
 
-Copyright\copyright 2010, 2013 \dwf\ Committee
+Copyright\copyright 2010, 2014 \dwf\ Committee
 \end{center}
 
 \vspace{4ex}
 \end{center}
 
 \vspace{4ex}
index cc582af..13c62cd 100644 (file)
@@ -177,7 +177,7 @@ or DWARF object file that contains the second partition.
 The second partition contains the debugging information that
 does not need to be processed by the linker. These sections
 may be left in the object files and ignored by the linker
 The second partition contains the debugging information that
 does not need to be processed by the linker. These sections
 may be left in the object files and ignored by the linker
-(i.e., not combined and copied to the executable object), or
+(that is, not combined and copied to the executable object), or
 they may be placed by the producer in a separate DWARF object
 file. This partition includes the following:
 \begin{itemize}
 they may be placed by the producer in a separate DWARF object
 file. This partition includes the following:
 \begin{itemize}
@@ -1121,7 +1121,7 @@ Any combination of these three forms may be used within a single compilation.
 
 If the \DWATuseUTFeight{}
 \addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
 
 If the \DWATuseUTFeight{}
 \addtoindexx{use UTF8 attribute}\addtoindexx{UTF-8} attribute is specified for the
-compilation, partial or type unit entry, string values are encoded using the
+compilation, partial, skeleton or type unit entry, string values are encoded using the
 UTF\dash 8 (\addtoindex{Unicode} Transformation Format\dash 8) from the Universal
 Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
 the string representation is unspecified.
 UTF\dash 8 (\addtoindex{Unicode} Transformation Format\dash 8) from the Universal
 Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
 the string representation is unspecified.
@@ -2983,7 +2983,7 @@ the type (according to the method in Step 2), the letter 'E',
 and the name of the type. For \DWTAGfriend, if the referenced
 entry is a \DWTAGsubprogram, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
 and the name of the type. For \DWTAGfriend, if the referenced
 entry is a \DWTAGsubprogram, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
-(e.g., the mangled linker name).
+(for example, the mangled linker name).
 
 
 \item If the tag in Step 3 is not one of \DWTAGpointertype,
 
 
 \item If the tag in Step 3 is not one of \DWTAGpointertype,
@@ -3063,7 +3063,7 @@ 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
 least significant 64 bits are taken as the type signature.
 
 \textit{The string S is intended to be a flattened representation of
-the type that uniquely identifies that type (i.e., a different
+the type that uniquely identifies that type (that is, a different
 type is highly unlikely to produce the same string).}
 
 \textit{A debugging information entry should not be placed in a
 type is highly unlikely to produce the same string).}
 
 \textit{A debugging information entry should not be placed in a
@@ -3074,7 +3074,7 @@ if any of the following apply:}
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
 
 \item \textit{The entry has an attribute whose value is a location
 expression, and the location expression contains a reference to
-another debugging information entry (e.g., a \DWOPcallref{}
+another debugging information entry (for example, a \DWOPcallref{}
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
 operator), as it is unlikely that the entry will remain
 identical across compilation units.}
 
index 27a5752..532c6d6 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.
 %
 % 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}{December 18, 2013}
+\newcommand{\docdate}{February 8, 2014}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
@@ -309,9 +309,9 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 
 \include{introduction}
 \include{generaldescription}            \emptypage
 
 \include{introduction}
 \include{generaldescription}            \emptypage
-\include{programscope}                  \emptypage
+\include{programscope}                  %\emptypage
 \include{dataobject}                    \emptypage
 \include{dataobject}                    \emptypage
-\include{typeentries}                   \emptypage
+\include{typeentries}                   %\emptypage
 \include{otherdebugginginformation}    \emptypage
 \include{datarepresentation}            %\emptypage
 
 \include{otherdebugginginformation}    \emptypage
 \include{datarepresentation}            %\emptypage
 
@@ -321,7 +321,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \include{attributesbytag}                              \emptypage
 \include{debugsectionrelationships}     %\emptypage
 \include{encodingdecoding}              \emptypage
 \include{attributesbytag}                              \emptypage
 \include{debugsectionrelationships}     %\emptypage
 \include{encodingdecoding}              \emptypage
-\include{examples}                      \emptypage
+\include{examples}                      %\emptypage
 \include{compression}                   %\emptypage
 \include{splitobjects}                                 %\emptypage
 \include{sectionversionnumbers}
 \include{compression}                   %\emptypage
 \include{splitobjects}                                 %\emptypage
 \include{sectionversionnumbers}
index e3fdafc..74d3617 100644 (file)
 \newdwfnamecommands{DWFORMblock}{DW\_FORM\_block}
 \newdwfnamecommands{DWFORMblockone}{DW\_FORM\_block1}
 \newdwfnamecommands{DWFORMblocktwo}{DW\_FORM\_block2}
 \newdwfnamecommands{DWFORMblock}{DW\_FORM\_block}
 \newdwfnamecommands{DWFORMblockone}{DW\_FORM\_block1}
 \newdwfnamecommands{DWFORMblocktwo}{DW\_FORM\_block2}
-\newdwfnamecommands{DWFORMblockfour}{DW\_FORM\_block3}
+\newdwfnamecommands{DWFORMblockfour}{DW\_FORM\_block4}
 \newdwfnamecommands{DWFORMdata}{DW\_FORM\_data}
 \newdwfnamecommands{DWFORMdataone}{DW\_FORM\_data1}
 \newdwfnamecommands{DWFORMdatatwo}{DW\_FORM\_data2}
 \newdwfnamecommands{DWFORMdata}{DW\_FORM\_data}
 \newdwfnamecommands{DWFORMdataone}{DW\_FORM\_data1}
 \newdwfnamecommands{DWFORMdatatwo}{DW\_FORM\_data2}
index 61166ab..0504d9d 100644 (file)
@@ -1434,7 +1434,7 @@ public:
 void g() {
     A a;
     // The type of pointer is "void (A::*)() const &&".
 void g() {
     A a;
     // The type of pointer is "void (A::*)() const &&".
-    auto pointer = &A::f;
+    auto pointer_to_member_function = &A::f;
 }
 \end{lstlisting}
 \caption{Member function with reference-qualification example: source \mbox{fragment}}
 }
 \end{lstlisting}
 \caption{Member function with reference-qualification example: source \mbox{fragment}}
@@ -1446,8 +1446,44 @@ void g() {
 \begin{dwflisting}
 \begin{alltt}
 
 \begin{dwflisting}
 \begin{alltt}
 
-... to be provided...
+100$:   \DWTAGclasstype
+            \DWATname("A")
+            \DWTAGsubprogram
+                \DWATname("f")
+                \DWATrvaluereference(0x01)
+                \DWTAGformalparameter
+                    \DWATtype({ref to 200$})    ! to const A*
+                    \DWATartificial(0x01)
+
+200$:   ! const A*
+        \DWTAGpointertype
+            \DWATtype({ref to 300$})             ! to const A
+
+300$:   ! const A
+        \DWTAGconsttype
+            \DWATtype({ref to 100$})             ! to class A
+
+400$:   ! mfptr
+        \DWTAGptrtomembertype
+            \DWATtype({ref to 400$})             ! to functype
+            \DWATcontainingtype({ref to 100$})  ! to class A
+
+500$:   ! functype
+        \DWTAGsubroutinetype
+            \DWATrvaluereference(0x01)
+            \DWTAGformalparameter
+                \DWATtype({ref to 200$})         ! to const A*
+                \DWATartificial(0x01)
 
 
+600$:   \DWTAGsubprogram
+            \DWATname("g")
+            \DWTAGvariable
+                \DWATname("a")
+                \DWATtype({ref to 100$})         ! to class A
+            \DWTAGvariable
+                \DWATname("pointer_to_member_function")
+                \DWATtype({ref to 300$})
+         
 \end{alltt}
 \end{dwflisting}
 \caption{Member function with reference-qualification example: DWARF \mbox{description}}
 \end{alltt}
 \end{dwflisting}
 \caption{Member function with reference-qualification example: DWARF \mbox{description}}
index 20a212a..7c7bbaf 100644 (file)
@@ -1904,13 +1904,12 @@ given
 segment 
 \addtoindexx{segmented addressing|see{address space}}
 rather than as locations within a single flat
 segment 
 \addtoindexx{segmented addressing|see{address space}}
 rather than as locations within a single flat
-\addtoindexx{address space!flat}.
+\addtoindexx{address space!flat}
 address space.}
 
 Any debugging information entry that contains a description
 \hypertarget{chap:DWATsegmentaddressinginformation}{}
 address space.}
 
 Any debugging information entry that contains a description
 \hypertarget{chap:DWATsegmentaddressinginformation}{}
-of the location of an object or subroutine may have
-a 
+of the location of an object or subroutine may have a 
 \DWATsegment{} attribute, 
 \addtoindexx{segment attribute}
 whose value is a location
 \DWATsegment{} attribute, 
 \addtoindexx{segment attribute}
 whose value is a location
@@ -1944,7 +1943,7 @@ Similarly, if the entry has a
 \addtoindexx{segment attribute}
 containing an empty location description, that
 entry is assumed to exist within a 
 \addtoindexx{segment attribute}
 containing an empty location description, that
 entry is assumed to exist within a 
-\addtoindexi{flat}{address space!flat}.
+\addtoindexi{flat}{address space!flat}
 address space.
 
 \textit{Some systems support different classes of 
 address space.
 
 \textit{Some systems support different classes of 
index 3ad25f5..1e5c0cc 100644 (file)
@@ -133,7 +133,7 @@ indicating the source language of the compilation
 unit. The set of language names and their meanings are given
 in Table \refersec{tab:languagenames}.
 
 unit. The set of language names and their meanings are given
 in Table \refersec{tab:languagenames}.
 
-\begin{table}[here]
+\begin{table}[t]
 \centering
 \caption{Language names}
 \label{tab:languagenames}
 \centering
 \caption{Language names}
 \label{tab:languagenames}
@@ -188,6 +188,8 @@ value of the statement list attribute is the offset in the
 information for this compilation unit 
 (see Section \refersec{chap:linenumberinformation}).
 
 information for this compilation unit 
 (see Section \refersec{chap:linenumberinformation}).
 
+\clearpage
+
 \needlines{6}
 \item A \DWATmacroinfo{} attribute 
 \addtoindexx{macro information attribute}
 \needlines{6}
 \item A \DWATmacroinfo{} attribute 
 \addtoindexx{macro information attribute}
@@ -340,6 +342,7 @@ Indirect string references
 (using \DWFORMstrx) within the compilation unit are
 interpreted as indices relative to this base.
 
 (using \DWFORMstrx) within the compilation unit are
 interpreted as indices relative to this base.
 
+\needlines{6}
 \item A \DWATaddrbaseNAME\addtoindexx{address table base attribute}
 \hypertarget{chap:DWATaddrbaseforaddresstable}{}
 attribute, whose value is a reference.
 \item A \DWATaddrbaseNAME\addtoindexx{address table base attribute}
 \hypertarget{chap:DWATaddrbaseforaddresstable}{}
 attribute, whose value is a reference.
@@ -412,19 +415,31 @@ unsigned hash of the full compilation unit.  This hash
 value is computed by the method described in 
 Section \refersec{datarep:typesignaturecomputation}.
 
 value is computed by the method described in 
 Section \refersec{datarep:typesignaturecomputation}.
 
+\needlines{6}
 \item
 \item
-A \DWATrangesbase{} attribute (the same as for regular
+A \DWATuseUTFeight{} attribute (the same as for regular compilation unit
+entries).
+
+\textit{This attribute applies to strings referred to by the skeleton
+compilation unit entry itself, and strings in the associated line
+number information.
+The representation for strings in the DWARF object file is determined
+by the presence of a \DWATuseUTFeight{} attribute in the full compilation
+unit.}
+
+\item
+A \DWATstroffsetsbase{} attribute, for indirect strings references 
+from the skeleton compilation unit (the same as for regular 
 compilation unit entries).
 
 compilation unit entries).
 
-\needlines{6}
 \item
 A \DWATaddrbase{} attribute (the same as for regular
 compilation unit entries).
 
 \item
 \item
 A \DWATaddrbase{} attribute (the same as for regular
 compilation unit entries).
 
 \item
-A \DWATstroffsetsbase{} attribute, for indirect strings references 
-from the skeleton compilation unit (the same as for regular 
+A \DWATrangesbase{} attribute (the same as for regular
 compilation unit entries).
 compilation unit entries).
+
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
 \end{enumerate}
 
 All other attributes of a compilation unit entry (described
@@ -460,6 +475,7 @@ any entity or construct in the source program. It is merely
 unit used as a partial unit, to a place in some other
 compilation unit.}
 
 unit used as a partial unit, to a place in some other
 compilation unit.}
 
+\needlines{6}
 \subsection{Separate Type Unit Entries}
 \label{chap:separatetypeunitentries}
 An object file may contain any number of separate type
 \subsection{Separate Type Unit Entries}
 \label{chap:separatetypeunitentries}
 An object file may contain any number of separate type
@@ -509,6 +525,11 @@ 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.
 
 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
+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.
+
 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
 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
@@ -917,6 +938,8 @@ instance of a subroutine or function \\
 \DWTAGentrypointTARG{} & An alternate entry point \\
 \end{tabular}
 
 \DWTAGentrypointTARG{} & An alternate entry point \\
 \end{tabular}
 
+
+\needlines{6}
 \subsection{General Subroutine and Entry Point Information}
 \label{chap:generalsubroutineandentrypointinformation}
 The subroutine or entry point entry has a \DWATname{} 
 \subsection{General Subroutine and Entry Point Information}
 \label{chap:generalsubroutineandentrypointinformation}
 The subroutine or entry point entry has a \DWATname{} 
@@ -1081,6 +1104,16 @@ to denote the type returned by that function.
 \addtoindex{C} void functions should
 not have an attribute for the return type.  }
 
 \addtoindex{C} void functions should
 not have an attribute for the return type.  }
 
+\textit{Debugging information entries for declarations of \addtoindex{C++} 
+member functions with an 
+\addtoindex{\texttt{auto} return type} specifier should use an unspecified 
+type entry (see 
+Section \refersec{chap:unspecifiedtypeentries}). 
+The debugging information entry for the corresponding definition
+should provide the deduced return type.  This practice causes the description of
+the containing class to be consistent across compilation units, allowing the class
+declaration to be placed into a separate type unit if desired.}
+
 
 \subsection{Subroutine and Entry Point Locations}
 \label{chap:subroutineandentrypointlocations}
 
 \subsection{Subroutine and Entry Point Locations}
 \label{chap:subroutineandentrypointlocations}
@@ -1278,7 +1311,7 @@ frame of the parent. It can then attempt to find the reference
 within the context of the parent.}
 
 
 within the context of the parent.}
 
 
-
+\needlines{8}
 \subsection{Types Thrown by Exceptions}
 \label{chap:typesthrownbyexceptions}
 
 \subsection{Types Thrown by Exceptions}
 \label{chap:typesthrownbyexceptions}
 
@@ -1340,7 +1373,7 @@ artificially by the compiler for this instantiation.
 \end{enumerate}
 
 
 \end{enumerate}
 
 
-
+\needlines{8}
 \subsection{Inlinable and Inlined Subroutines}
 A declaration or a definition of an inlinable subroutine
 is represented by a debugging information entry with the
 \subsection{Inlinable and Inlined Subroutines}
 A declaration or a definition of an inlinable subroutine
 is represented by a debugging information entry with the
@@ -1478,6 +1511,7 @@ entries. Also, the ordering rules for formal parameter entries,
 member entries, and so on, all apply regardless of whether
 or not a given entry is abstract.
 
 member entries, and so on, all apply regardless of whether
 or not a given entry is abstract.
 
+\needlines{5}
 \subsubsection{Concrete Inlined Instances}
 \label{chap:concreteinlinedinstances}
 
 \subsubsection{Concrete Inlined Instances}
 \label{chap:concreteinlinedinstances}
 
@@ -1502,7 +1536,7 @@ a
 attribute whose values encode the contiguous or non\dash contiguous
 address ranges, respectively, of the machine instructions
 generated for the inlined subroutine (see 
 attribute whose values encode the contiguous or non\dash contiguous
 address ranges, respectively, of the machine instructions
 generated for the inlined subroutine (see 
-Section \refersec{chap:codeaddressesandranges}). 
+Section \referfol{chap:codeaddressesandranges}). 
 An
 \hypertarget{chap:DWATentrypcentryaddressofinlinedsubprogram}{}
 inlined subroutine entry may 
 An
 \hypertarget{chap:DWATentrypcentryaddressofinlinedsubprogram}{}
 inlined subroutine entry may 
@@ -1629,6 +1663,7 @@ to this rule is that the root of a concrete instance tree
 can only be associated with the root of its associated abstract
 instance tree (which must have the tag \DWTAGsubprogram).
 
 can only be associated with the root of its associated abstract
 instance tree (which must have the tag \DWTAGsubprogram).
 
+\needlines{6}
 In general, the structure and content of any given concrete
 inlined instance tree will be closely analogous to the
 structure and content of its associated abstract instance
 In general, the structure and content of any given concrete
 inlined instance tree will be closely analogous to the
 structure and content of its associated abstract instance
index 7966711..26b749a 100644 (file)
@@ -370,14 +370,20 @@ to by the type attribute of an access type where the denoted
 type is incomplete (the name is declared as a type but the
 definition is deferred to a separate compilation unit).
 
 type is incomplete (the name is declared as a type but the
 definition is deferred to a separate compilation unit).
 
+\addtoindex{C++} permits using the 
+\addtoindexi{\texttt{auto}}{\texttt{auto return type}} 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.
+
+
 \section{Type Modifier Entries}
 \label{chap:typemodifierentries}
 \addtoindexx{type modifier entry}
 \section{Type Modifier Entries}
 \label{chap:typemodifierentries}
 \addtoindexx{type modifier entry}
-
-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{atomic type entry}}
 \addtoindexx{type modifier|see{constant type entry}}
 \addtoindexx{type modifier|see{reference type entry}}
@@ -386,6 +392,10 @@ given in Table \refersec{tab:typemodifiertags}.
 \addtoindexx{type modifier|see{pointer type entry}}
 \addtoindexx{type modifier|see{shared type entry}}
 \addtoindexx{type modifier|see{volatile type entry}}
 \addtoindexx{type modifier|see{pointer type entry}}
 \addtoindexx{type modifier|see{shared type entry}}
 \addtoindexx{type modifier|see{volatile type entry}}
+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}.
 
 If a name has been given to the modified type in the source
 program, then the corresponding modified type entry has
 
 If a name has been given to the modified type in the source
 program, then the corresponding modified type entry has
@@ -490,7 +500,7 @@ reference to an object of the type \mbox{being} modified
 \end{tabular}
 \end{table}
 
 \end{tabular}
 \end{table}
 
-%The following clearpage prevents splitting the example across pages.
+\needlines{6}
 \textit{As examples of how type modifiers are ordered, consider the following
 \addtoindex{C} declarations:}
 \begin{lstlisting}[numbers=none]
 \textit{As examples of how type modifiers are ordered, consider the following
 \addtoindex{C} declarations:}
 \begin{lstlisting}[numbers=none]
@@ -654,7 +664,7 @@ tag
 \DWTAGenumerationtype. These entries are
 children of the
 array type entry and are ordered to reflect the appearance of
 \DWTAGenumerationtype. These entries are
 children of the
 array type entry and are ordered to reflect the appearance of
-the dimensions in the source program (i.e., leftmost dimension
+the dimensions in the source program (that is, leftmost dimension
 first, next to leftmost second, and so on).
 
 \textit{In languages that have no concept of a 
 first, next to leftmost second, and so on).
 
 \textit{In languages that have no concept of a 
@@ -719,6 +729,7 @@ 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.}
 
 \textit{How coarray elements are located and how coindices are 
 converted to process specifications is processor-dependent.}
 
+\needlines{8}
 \section{Structure, Union, Class and Interface Type Entries}
 \label{chap:structureunionclassandinterfacetypeentries}
 
 \section{Structure, Union, Class and Interface Type Entries}
 \label{chap:structureunionclassandinterfacetypeentries}
 
@@ -1220,6 +1231,7 @@ the low\dash order bit of the object.}
 \addtoindexx{beginning of an object}
 beginning of the object.}
 
 \addtoindexx{beginning of an object}
 beginning of the object.}
 
+\needlines{5}
 \textit{For example, take one possible representation of the following 
 \addtoindex{C} structure definition 
 in both big\dash and little\dash endian byte orders:}
 \textit{For example, take one possible representation of the following 
 \addtoindex{C} structure definition 
 in both big\dash and little\dash endian byte orders:}
@@ -1440,8 +1452,11 @@ Subroutine entries containing the
 do not need to duplicate information provided
 by the declaration entry referenced by the specification
 attribute. In particular, such entries do not need to contain
 do not need to duplicate information provided
 by the declaration entry referenced by the specification
 attribute. In particular, such entries do not need to contain
-attributes for the name or return type of the function member
-whose definition they represent.
+a name attribute giving the name of the function member whose 
+definition they represent.  
+Similarly, such entries do not need to contain a return type attribute, 
+unless the return type on the declaration was unspecified (for example, the 
+declaration used the \addtoindex{C++} \addtoindex{\texttt{auto} return type} specifier).
 
 \needlines{5}
 \subsection{Class Template Instantiations}
 
 \needlines{5}
 \subsection{Class Template Instantiations}