Review copy for general distribution to Committee. Includes changes
authorRon Brender <ron.brender@gmail.com>
Mon, 19 Oct 2015 22:03:38 +0000 (18:03 -0400)
committerRon Brender <ron.brender@gmail.com>
Mon, 19 Oct 2015 22:03:38 +0000 (18:03 -0400)
from Oct 7-8, 2015. Includes line numbers.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index dc62ba7..39457b7 100644 (file)
@@ -15,8 +15,8 @@ This change summary is included only in draft versions of this document.
 \begin{longtable}{ll}
 \textbf{Date}  & \textbf{Issue Incorporated or Other Change}   \\ \hline       \\
 \endhead
-10/14-18/2015   & Editorial work from group review II, including fix double spaces problems \\
-8/26-28/2015    & Editorial work from group review \\
+10/14-19/2015   & Editorial work from group review II, including fix double spaces problems \\
+8/26-28/2015    & Editorial work from group review, add change bars \\
 8/17/2015       & Editorial work XI \\
 7/28-8/11/2015  & 150623.1 (MD5 digest), new F.3 (.dwp files), remove trial Selected Glossary, \\
                 & replace Fig 6.1 (again), more editorial work X \\
index 8ae3b75..633f6e5 100644 (file)
@@ -169,74 +169,9 @@ target architecture.
 \textit{One way in which a formal parameter
 with a constant value and no location can arise is for a
 formal parameter of an inlined subprogram that corresponds
-to a constant actual parameter of a call that is inlined.
-}
-
-\item \hypertarget{chap:DWATstartscopeobjectdeclaration}{}
-A \DWATstartscopeDEFN{}\addtoindexx{start scope attribute}
-attribute if the address range for the scope of an
-object is a subset of the address range for the
-the lexical scope most closely enclosing the object. 
-There are two cases:
-\begin{enumerate}[a) ]
-\item If 
-\bb
-the
-\eb
-address range for the scope of the object entry 
-includes all of addresses for the containing scope except 
-for a contiguous sequence of bytes at the beginning of the 
-address range for the containing scope, then the address is 
-specified using a value of class constant. If the address
-range for the containing scope is contiguous, the value of 
-this attribute is the offset in bytes of the beginning of 
-the address range for the scope of the object from the low 
-PC value of the debugging information entry that defines
-that containing scope. If the address range of the containing 
-scope is non-contiguous 
-(see \refersec{chap:noncontiguousaddressranges})
-the value of this attribute is the offset in bytes of the 
-beginning of the address range for the scope of the object 
-from the beginning of the first \addtoindex{range list} entry
-for the containing scope that is not a base selection entry, 
-a default selection entry or an end-of-list entry.
-
-\needlines{4}
-\item Otherwise, the set of addresses for the scope of the 
-object is specified using a value of class \CLASSrangelistptr{}. 
-This value indicates the beginning of a \addtoindex{range list}
-(see \ref{chap:noncontiguousaddressranges}).
-\end{enumerate}
-
+to a constant actual parameter of a call that is inlined.}
 
-\textit{The scope of a variable may begin somewhere in the middle of
-a lexical \livelink{chap:lexicalblock}{block} in a language 
-that allows executable code in a
-\nolink{block} before a variable declaration, or where one declaration
-containing initialization code may change the scope of a
-subsequent declaration.  For example, in the following \addtoindex{C} code:}
-
-\begin{lstlisting}
-float x = 99.99;
-int myfunc()
-{
-    float f = x;
-    float x = 88.99;
-    return 0;
-}
-\end{lstlisting}
-
-\textit{\addtoindex{C} scoping rules require that the value of the variable x
-assigned to the variable f in the initialization sequence is
-the value of the global variable x, rather than the local x,
-because the scope of the local variable x only starts after
-the full declarator for the local x.}
-
-\textit{Due to optimization, the scope of an object may be
-non-contiguous and require use of a \addtoindex{range list} even when
-the containing scope is contiguous. Conversely, the scope of
-an object may not require its own \addtoindex{range list} even when the
-containing scope is non-contiguous.}
+\bbpareb
 
 \item \hypertarget{chap:DWATendianityendianityofdata}{}
 A \DWATendianityDEFN{} attribute,
@@ -252,6 +187,11 @@ of data for the given type is assumed.
 The set of values
 and their meaning for this attribute is given in 
 Table \ref{tab:endianityattributevalues}.
+\bbeb
+These represent the default encoding formats as defined by
+the target architecture's ABI or processor definition. The
+exact definition of these formats may differ in subtle ways
+for different architectures.
 
 \begin{table}[h]
 \caption{Endianity attribute values}
@@ -270,11 +210,6 @@ Name&Meaning\\ \hline
 \end{table}
 
 
-These represent the default encoding formats as defined by
-the target architecture's ABI or processor definition. The
-exact definition of these formats may differ in subtle ways
-for different architectures.
-
 \needlines{6}
 \item \hypertarget{chap:DWATconstexprcompiletimeconstantobject}{}
 A \DWATconstexprDEFN{} attribute,
index f6c0877..a772092 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}{October 18, 2015}
+\newcommand{\docdate}{October 19, 2015}
 %
 \usepackage{ifthen}
     \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
@@ -339,8 +339,8 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 
 \uselinenos\include{introduction}              %\emptypage
 \uselinenos\include{generaldescription}        %\emptypage
-\uselinenos\include{programscope}              \emptypage
-\uselinenos\include{dataobject}                %\emptypage
+\uselinenos\include{programscope}              %\emptypage
+\uselinenos\include{dataobject}                \emptypage
 \uselinenos\include{typeentries}               \emptypage
 \uselinenos\include{otherdebugginginformation} \emptypage
 \uselinenos\include{datarepresentation}        %\emptypage
index bd3b534..24ae01f 100644 (file)
@@ -697,12 +697,9 @@ Usage
            {Incomplete, non-defining, or separate declaration corresponding to a declaration}
            {incomplete, non-defining, or separate declaration corresponding to a declaration} \\
 \DWATstartscopeTARG
-&\livelinki{chap:DWATstartscopeobjectdeclaration}
-        {Object declaration}
-        {object declaration}\\*
-&\livelinki{chap:DWATstartscopetypedeclaration}
-        {Type declaration}
-        {type declaration}\\
+&\livelinki{chap:DWATstartscopeofdeclaration}
+        {Reduced scope of declaration}
+        {reduced scope of declaration} \\*
 \DWATstaticlinkTARG
 &\livelinki{chap:DWATstaticlinklocationofuplevelframe}
         {Location of uplevel frame}
@@ -2573,7 +2570,7 @@ Name&Value&Meaning  \\
 
 \needlines{6}
 \section{Non-Defining Declarations and Completions}
-\label{nondefiningdeclarationsandcompletions}
+\label{chap:nondefiningdeclarationsandcompletions}
 A debugging information entry representing a program entity
 typically represents the defining declaration of that
 entity. In certain contexts, however, a debugger might need
@@ -3215,4 +3212,5 @@ alignment of the entity.
 
 \textit{For example, an alignment attribute whose value is 8 indicates
 that the entity to which it applies occurs at an address that is a
-multiple of eight (not a multiple of $2^8$ or 256).}
\ No newline at end of file
+multiple of eight (not a multiple of $2^8$ or 256).}
+
index eba92d8..bdab148 100644 (file)
@@ -1111,7 +1111,7 @@ itself imported by a use statement without an explicit mention
 may be represented by an imported declaration entry that refers
 to the original debugging information entry. For example, given
 }
-
+\vspace{2mm}
 \begin{lstlisting}
 module A
 integer X, Y, Z
@@ -1124,8 +1124,8 @@ end module
 module C
 use B, only Q => X
 end module
-\end{lstlisting}
 
+\end{lstlisting}
 \textit{the imported declaration entry for Q within module C refers
 directly to the variable declaration entry for X in module A
 because there is no explicit representation for X in module B.
@@ -1282,12 +1282,11 @@ declared using function prototype style declarations and
 those declared using non-prototype declarations.}
 
 A subroutine entry declared with a function prototype style
-declaration may have 
+declaration may have a
 \addtoindexx{prototyped attribute}
-a 
-\DWATprototypedNAME{} attribute, which is
-a \CLASSflag. 
 \bb
+\DWATprototypedDEFN{} attribute, which is
+a \CLASSflag. 
 The attribute indicates whether a subroutine entry point corresponds
 to a function declaration that includes parameter prototype information.
 \eb 
@@ -1353,8 +1352,11 @@ entry point(s) as a whole,
 the following attributes provide summary information about the calls
 that occur within a subprogram.}
 
-A subroutine entry may have \DWATcallalltailcallsNAME, 
-\DWATcallallcallsNAME{} and/or \DWATcallallsourcecallsNAME{} 
+A subroutine entry may have 
+\bb
+\DWATcallalltailcalls, 
+\DWATcallallcalls{} and/or \DWATcallallsourcecalls{} 
+\eb
 attributes, each of which is a 
 \livelink{chap:classflag}{flag}.
 \addtoindexx{call site summary information}
@@ -2124,8 +2126,12 @@ and without regard to the fact that it is within an outer
 concrete instance tree.
 \end{enumerate}
 
+\textit{%
+\bb
 See Appendix \refersec{app:inliningexamples} 
 for discussion and examples.
+\eb
+}
 
 \subsection{Trampolines}
 \label{chap:trampolines}
@@ -2544,30 +2550,28 @@ with the tag \DWTAGwithstmtTARG.
 A with statement entry may have either a 
 \DWATlowpc{} and
 \DWAThighpc{} pair of attributes 
-\addtoindexx{high PC attribute}
-or 
 \addtoindexx{low PC attribute}
-a \DWATranges{} attribute
+\addtoindexx{high PC attribute}
+or a
+\DWATranges{} attribute
 \addtoindexx{ranges attribute}
 whose values encode the contiguous or non-contiguous address
 ranges, respectively, of the machine instructions generated
 for the with statement 
 (see Section \refersec{chap:codeaddressesandranges}).
 
-A 
-\hypertarget{chap:DWATentrypcofwithstmt}{}
-with statement entry may also have 
+A\hypertarget{chap:DWATentrypcofwithstmt}{}
+with statement entry may also have a
 \addtoindexx{entry PC attribute!for with statement}
-a 
 \DWATentrypc{} attribute
 whose value is the address of the first executable instruction
 of the with statement (see 
 Section \refersec{chap:entryaddress}).
 
 \needlines{5}
-The with statement entry has 
+The with statement entry has a
 \addtoindexx{type attribute}
-\DWATtype{} attribute, denoting
+\DWATtype{} attribute, denoting
 the type of record whose fields may be referenced without full
 qualification within the body of the statement. It also has
 \addtoindexx{location attribute}
@@ -2596,14 +2600,12 @@ a debugging information entry
 \addtoindexx{catch block entry}
 with the tag \DWTAGcatchblockTARG.
 
-% nolink as we have links just above and do not have a combo link for both
 Both try and catch \nolink{block} entries may have either a
 \DWATlowpc{} and 
 \DWAThighpc{} pair of attributes 
-\addtoindexx{high PC attribute}
-or 
 \addtoindexx{low PC attribute}
-a
+\addtoindexx{high PC attribute}
+or a
 \DWATranges{} attribute 
 \addtoindexx{ranges attribute}
 whose values encode the contiguous
@@ -2628,9 +2630,85 @@ that catch \nolink{block}.
 This child entry has one of the tags
 \DWTAGformalparameter{}\addtoindexx{formal parameter entry!in catch block}
 or
-\DWTAGunspecifiedparameters{},\addtoindexx{unspecified parameters entry!in catch block}
+\DWTAGunspecifiedparameters{},
+\addtoindexx{unspecified parameters entry!in catch block}
 and will have the same form as other parameter entries.
 
 The siblings immediately following a try \nolink{block} 
 entry are its corresponding catch \nolink{block} entries.
 
+
+\bb
+\section{Declarations with Reduced Scope}
+\label{declarationswithreducedscope}
+\hypertarget{chap:DWATstartscopeofdeclaration}{}
+Any debugging information entry for a declaration 
+(including objects, subprograms, types and modules) whose scope 
+has an address range that is a subset of the address range for 
+the lexical scope most closely enclosing the declared entity 
+may have a 
+\DWATstartscopeDEFN{}\addtoindexx{start scope attribute}
+attribute to specify that reduced range of addresses. 
+
+There are two cases:
+\begin{enumerate}[1. ]
+\item If the address range for the scope of the entry 
+includes all of addresses for the containing scope except 
+for a contiguous sequence of bytes at the beginning of the 
+address range for the containing scope, then the address is 
+specified using a value of class \CLASSconstant. 
+
+\begin{enumerate}[a) ]
+\item If the address
+range of the containing scope is contiguous, the value of 
+this attribute is the offset in bytes of the beginning of 
+the address range for the scope of the object from the low 
+PC value of the debugging information entry that defines
+that containing scope. 
+\item If the address range of the containing 
+scope is non-contiguous 
+(see \refersec{chap:noncontiguousaddressranges})
+the value of this attribute is the offset in bytes of the 
+beginning of the address range for the scope of the entity 
+from the beginning of the first \addtoindex{range list} entry
+for the containing scope that is not a base selection entry, 
+a default selection entry or an end-of-list entry.
+\end{enumerate}
+
+\needlines{4}
+\item Otherwise, the set of addresses for the scope of the 
+entity is specified using a value of class \CLASSrangelistptr{}. 
+This value indicates the beginning of a \addtoindex{range list}
+(see Section \refersec{chap:noncontiguousaddressranges}).
+\end{enumerate}
+
+\textit{For example, the scope of a variable may begin somewhere 
+in the midst of a lexical \livelink{chap:lexicalblock}{block} in a 
+language that allows executable code in a
+\nolink{block} before a variable declaration, or where one declaration
+containing initialization code may change the scope of a
+subsequent declaration.  Consider the following example \addtoindex{C} code:}
+
+\vspace{3mm}
+\begin{lstlisting}
+float x = 99.99;
+int myfunc()
+{
+    float f = x;
+    float x = 88.99;
+    return 0;
+}
+\end{lstlisting}
+
+\textit{\addtoindex{C} scoping rules require that the value of the 
+variable \texttt{x} assigned to the variable \texttt{f} in the 
+initialization sequence is the value of the global variable \texttt{x}, 
+rather than the local \texttt{x}, because the scope of the local variable 
+\texttt{x} only starts after the full declarator for the local \texttt{x}.}
+
+\textit{Due to optimization, the scope of an object may be
+non-contiguous and require use of a \addtoindex{range list} even when
+the containing scope is contiguous. Conversely, the scope of
+an object may not require its own \addtoindex{range list} even when the
+containing scope is non-contiguous.}
+\eb
index 1e0b301..5c503bb 100644 (file)
@@ -2,16 +2,9 @@
 \label{chap:typeentries}
 This section presents the debugging information entries
 that describe program types: base types, modified types and
-user\dash defined types.
+user-defined types.
 
-If the scope of the declaration of a named type begins 
-after\hypertarget{chap:DWATstartscopetypedeclaration}{}
-\bbeb 
-the scope most closely enclosing the
-declaration, the declaration may have a 
-\addtoindexx{start scope attribute}
-\DWATstartscopeDEFN{} attribute as described for objects in 
-Section \refersec{chap:dataobjectentries}.
+\bbpareb
 
 \section{Base Type Entries}
 \label{chap:basetypeentries}
@@ -48,7 +41,8 @@ If omitted, the encoding assumes the representation that
 is the default for the target architecture.
 
 \needlines{4}
-A base type entry has either a
+A base type entry has a
+\bbeb
 \addtoindexx{byte size attribute}
 \DWATbytesize{}\hypertarget{chap:DWATbytesizedataobjectordatatypesize}{}
 attribute or a
@@ -56,8 +50,7 @@ attribute or a
 \DWATbitsize{}\hypertarget{chap:DWATbitsizebasetypebitsize}{} 
 attribute whose \livelink{chap:classconstant}{integer constant} value
 (see Section \refersec{chap:byteandbitsizes}) 
-is the amount of storage needed to hold
-a value of the type.
+is the amount of storage needed to hold a value of the type.
 
 \needlines{5}
 \textit{For example, the 
@@ -82,11 +75,9 @@ attribute describes the actual size in bits used to represent
 values of the given type. The data bit offset attribute is the
 offset in bits from the beginning of the containing storage to
 the beginning of the value. Bits that are part of the offset
-are padding. The data bit offset uses the bit numbering and
-direction conventions that are appropriate to the current
-language on the
-target system to locate the beginning of the storage and
-value. If this attribute is omitted a default data bit offset
+are padding. 
+\bbeb
+If this attribute is omitted a default data bit offset
 of zero is assumed.
 
 A \DWTAGbasetype{} entry may have additional attributes that