Bring up to date with October 21 DWARF meeting and other review
authorRon Brender <ron.brender@gmail.com>
Wed, 29 Oct 2014 14:24:27 +0000 (10:24 -0400)
committerRon Brender <ron.brender@gmail.com>
Wed, 29 Oct 2014 14:24:27 +0000 (10:24 -0400)
feedback.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
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/generaldescription.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex

index 7a6615c..420b021 100644 (file)
@@ -15,6 +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/28/2014      & 140917.1 (procedure/subprogram terminology), 141008.1 (C++ 2014), \\
+                & miscellaneous corrections \\
 9/25/2014       & 140724.1 (line number table header), pre-release cleanups \\
 9/23/2014       & 140528.1 (alignment attribute), 120604.1 (supplementary macro sections) \\
 8/22/2014       & Miscellaneous editorial corrections, indexing improvements \\
index ac2da54..8862546 100644 (file)
@@ -355,7 +355,7 @@ not a good candidate because the entities included are not
 necessarily file level entities.
 
 This also applies to \addtoindex{Fortran} INCLUDE lines when declarations
-are included into a procedure or module context.
+are included into a subprogram or module context.
 
 Consequently a compiler must use \DWTAGpartialunit{} (instead
 of \DWTAGcompileunit) 
index 70c868b..f5b86b4 100644 (file)
@@ -134,15 +134,19 @@ for
 \addtoindexx{formal parameter entry!with default value}
 a formal parameter
 \hypertarget{chap:DWATdefaultvaluedefaultvalueofparameter}{}
-entry. The value of this attribute is a reference to the
-debugging information entry for a variable or subroutine,
-or the value may be a constant. If the attribute form is of
-class reference, the default value of the parameter is the
-value of the referenced variable (which may be constant) or
-the value returned by the referenced subroutine; a reference
-value of 0 means that no default value has been specified.
-If the value is of class constant, that constant is interpreted
-as a default value of the type of the formal parameter.
+entry. The value of this attribute may be a constant, or a reference to the
+debugging information entry for a variable, or a reference to a
+debugging information entry containing a DWARF procedure.  If the
+attribute form is of class constant, that constant is interpreted as
+a default value of the type of the formal parameter. If the attribute
+form is of class reference, and the referenced entry is for a
+variable, the default value of the parameter is the value of the
+referenced variable.  If the reference value is 0, no default value
+has been specified.  Otherwise, the attribute represents an implicit
+\DWOPcallref{} to the referenced debugging information entry, and
+the default value of the parameter is the value returned by that
+DWARF procedure, interpreted as a value of the type of the formal
+parameter.
 
 \textit{For a constant form there is no way to 
 express the absence of a default value.}
index 7254016..21fc79d 100644 (file)
@@ -536,11 +536,13 @@ file must contain a \dotdebugsup{} section that establishes the relationship.
 The \dotdebugsup section contains:
 \begin{enumerate}[1. ]
 \item \texttt{version} (uhalf) \\
+\addttindexx{version}
 A 2-byte unsigned integer representing the version of the DWARF
 information for the compilation unit (see Appendix G). The
 value in this field is \versiondotdebugsup.
 
 \item \texttt{is\_supplementary} (ubyte) \\
+\addttindexx{is\_supplementary}
 A 1-byte unsigned integer, which contains the value 1 if it is
 in the \addtoindex{supplementary object file} that other executables or 
 shared objects refer to, or 0 if it is an executable or shared object 
@@ -548,19 +550,22 @@ referring to a supplemental object file file.
 
 \needlines{4}
 \item \texttt{sup\_filename} (null terminated filename string) \\
-If \texttt{is\_supplementary} is 0, this contains either an absolute 
+\addttindexx{sup\_filename}
+If \addttindex{is\_supplementary} is 0, this contains either an absolute 
 filename for the supplementary object file, or a filename relative to 
 the object file containing the \dotdebugsup{} section.  
-If \texttt{is\_supplementary} is 1, then \texttt{sup\_filename}
+If \addttindex{is\_supplementary} is 1, then \addttindex{sup\_filename}
 is not needed and must be an empty string (a single nul byte).
 
 \needlines{4}
 \item \texttt{sup\_checksum\_len} (unsigned LEB128) \\
-Length of the following \texttt{sup\_checksum} field; 
+\addttindexx{sup\_checksum\_len}
+Length of the following \addttindex{sup\_checksum} field; 
 his value can be 0 if no checksum is provided.
 
 
 \item \texttt{sup\_checksum} (array of ubyte) \\
+\addttindexx{sup\_checksum}
 Some checksum or cryptographic hash function of the \dotdebuginfo{}, 
 \dotdebugstr{} and \dotdebugmacro{} sections of the 
 \addtoindex{supplementary object file}, or some unique identifier
@@ -846,6 +851,7 @@ integer that gives the actual length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item  \texttt{version} (\addtoindex{uhalf}) \\
+\addttindexx{version}
 A 2\dash byte unsigned integer representing the version of the
 DWARF information for the compilation unit \addtoindexx{version number!compilation unit} 
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
@@ -853,6 +859,7 @@ The value in this field is \versiondotdebuginfo.
 
 \needlines{4}
 \item \texttt{unit\_type} (\addtoindex{ubyte}) \\
+\addttindexx{unit\_type}
 A 1-byte unsigned integer identifying this unit as a compilation unit.
 The value of this field is 
 \DWUTcompile{} for a {normal compilation} unit or
@@ -863,6 +870,7 @@ The value of this field is
 
 \needlines{4}
 \item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+\addttindexx{debug\_abbrev\_offset}
 A 
 \addtoindexx{section offset!in .debug\_info header}
 4\dash byte or 8\dash byte unsigned offset into the 
@@ -874,8 +882,8 @@ in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item \texttt{address\_size} (\addtoindex{ubyte}) \\
-A 1\dash byte unsigned integer representing the size in bytes of
 \addttindexx{address\_size}
+A 1\dash byte unsigned integer representing the size in bytes of
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
@@ -908,6 +916,7 @@ consists of the 4\dash byte value \wffffffff followed by an
 
 \needlines{4}
 \item  \texttt{version} (\addtoindex{uhalf}) \\
+\addttindexx{version}
 A 2\dash byte unsigned integer representing the version of the
 DWARF information for the 
 type unit\addtoindexx{version number!type unit} 
@@ -915,6 +924,7 @@ type unit\addtoindexx{version number!type unit}
 The value in this field is \versiondotdebuginfo.
 
 \item \texttt{unit\_type} (\addtoindex{ubyte}) \\
+\addttindexx{unit\_type}
 A 1-byte unsigned integer identifying this unit as a type unit.
 The value of this field is \DWUTtype{} for a type unit
 (see Section \refersec{chap:separatetypeunitentries}).
@@ -923,6 +933,7 @@ The value of this field is \DWUTtype{} for a type unit
 
 \needlines{4}
 \item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
+\addttindexx{debug\_abbrev\_offset}
 A 
 \addtoindexx{section offset!in .debug\_info header}
 4\dash byte or 8\dash byte unsigned offset into the 
@@ -935,20 +946,19 @@ in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
 
 \needlines{4}
 \item \texttt{address\_size} (addtoindex{ubyte}) \\
+\addttindexx{address\_size}
 A 1\dash byte unsigned integer representing the size 
 \addtoindexx{size of an address}
 in bytes of
-\addttindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
 segmented addressing, this value represents the size of the
 offset portion of an address.
 
 \item \texttt{type\_signature} (8\dash byte unsigned integer) \\
-\addtoindexx{type signature}
-A 
 \addttindexx{type\_signature}
-64\dash bit unique signature (see Section 
+\addtoindexx{type signature}
+A 64\dash bit unique signature (see Section 
 \refersec{datarep:typesignaturecomputation})
 of the type described in this type
 unit.  
@@ -2545,6 +2555,7 @@ defined language.
 \DWLANGSwift{} \ddag &0x001e &0 \addtoindexx{Swift} \\
 \DWLANGJulia{} \ddag &0x001f &1 \addtoindexx{Julia} \\
 \DWLANGDylan{} \ddag &0x0020 &0 \addtoindexx{Dylan} \\
+\DWLANGCplusplusfourteen{} \ddag &0x0021 &0 \addtoindexx{C++:2014 (ISO)}\\
 \DWLANGlouser{} &0x8000 & \\
 \DWLANGhiuser{} &\xffff & \\
 
@@ -3105,6 +3116,7 @@ Each set of entries in the string offsets table contained in the
 section begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4-byte or 12-byte length containing the length of
 the set of entries for this compilation unit, not
 including the length field itself. In the 32-bit
@@ -3139,6 +3151,7 @@ Each set of entries in the address table contained in the
 \dotdebugaddr{} section begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4-byte or 12-byte length containing the length of
 the set of entries for this compilation unit, not
 including the length field itself. In the 32-bit
@@ -3184,6 +3197,7 @@ Each set of entries in the range list table contained in the
 \dotdebugranges{} section begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4-byte or 12-byte length containing the length of
 the set of entries for this compilation unit, not
 including the length field itself. In the 32-bit
@@ -3214,7 +3228,7 @@ bytes of a segment selector on the target system.
 \end{enumerate}
 
 This header is followed by a series of range list entries as
-described in Section \refersec{chap:locationlists}.
+described in Section \refersec{chap:noncontiguousaddressranges}.
 The segment size is given by the
 \addttindex{segment\_size} field of the header, and the address size is
 given by the \addttindex{address\_size} field of the header. If the
@@ -3232,6 +3246,7 @@ Each set of entries in the location list table contained in the
 \dotdebugloc{} or \dotdebuglocdwo{} sections begins with a header containing:
 \begin{enumerate}[1. ]
 \item \texttt{unit\_length} (\livelink{datarep:initiallengthvalues}{initial length}) \\
+\addttindexx{unit\_length}
 A 4-byte or 12-byte length containing the length of
 the set of entries for this compilation unit, not
 including the length field itself. In the 32-bit
index 94573ac..fccdada 100644 (file)
@@ -297,6 +297,7 @@ entry is an offset into another part of the
 sequence to be transparently included.
 
 %r
+\needlines{4}
 \item \dotdebugline{} to \dotdebuglinestr \\
 The value of a \DWFORMlinestrp{} form refers to a
 string section specific to the line number table.
index 3028a72..cffd1d3 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}{September 25, 2014}
+\newcommand{\docdate}{October 29, 2014}
 %
 \usepackage{ifthen}
 \newboolean{isdraft}
@@ -298,7 +298,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \include{introduction}                  \emptypage
 \include{generaldescription}            %\emptypage
 \include{programscope}                  %\emptypage
-\include{dataobject}                    \emptypage
+\include{dataobject}                    %\emptypage
 \include{typeentries}                   \emptypage
 \include{otherdebugginginformation}    %\emptypage
 \include{datarepresentation}            \emptypage
index 8438a04..9a80534 100644 (file)
 \newdwfnamecommands{DWLANGUPC}{DW\_LANG\_UPC}
 \newdwfnamecommands{DWLANGCpluspluszerothree}{DW\_LANG\_C\_plus\_plus\_03}
 \newdwfnamecommands{DWLANGCpluspluseleven}{DW\_LANG\_C\_plus\_plus\_11}
+\newdwfnamecommands{DWLANGCplusplusfourteen}{DW\_LANG\_C\_plus\_plus\_14}
 %
 % DW_LLE
 %
 \newcommand{\dotdebugrangesdwo}{\addtoindex{\texttt{.debug\_ranges.dwo}}}
 \newcommand{\dotdebugstrdwo}{\addtoindex{\texttt{.debug\_str.dwo}}}
 \newcommand{\dotdebugstroffsetsdwo}{\addtoindex{\texttt{.debug\_str\_offsets.dwo}}}
+\newcommand{\dotdebugtypes}{\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}}
 %
 \newcommand{\dotdebugcuindex}{\addtoindex{\texttt{.debug\_cu\_index}}}
 \newcommand{\dotdebugtuindex}{\addtoindex{\texttt{.debug\_tu\_index}}}
 \newcommand{\CLASSstring}       {\livelinki{chap:classstring}{string}{string class}}
 \newcommand{\CLASSstroffsetsptr}{\livelinki{chap:classstroffsetsptr}{stroffsetsptr}{stroffsetsptr class}}
 %
+% Header field names
+%
+\newcommand{\HFNaddresssize}              {\addttindex{address\_size}}
+\newcommand{\HFNdebugabbrevoffset}        {\addttindex{debug\_abbrev\_offset}}
+\newcommand{\HFNdebuginfolength}          {\addttindex{debug\_info\_length}}
+\newcommand{\HFNdebuginfooffset}          {\addttindex{debug\_info\_offset}}
+\newcommand{\HFNdebuglineoffset}          {\addttindex{debug\_line\_offset}}
+\newcommand{\HFNdefaultisstmt}            {\addttindex{default\_is\_stmt}}
+\newcommand{\HFNdirectoryentryformatcount}{\addttindex{directory\_entry\_format\_count}}
+\newcommand{\HFNdirectoryentryformat}     {\addttindex{directory\_entry\_format}}
+\newcommand{\HFNdirectoriescount}         {\addttindex{directories\_count}}
+\newcommand{\HFNdirectories}              {\addttindex{directories}}
+\newcommand{\HFNfilenameentryformatcount} {\addttindex{file\_name\_entry\_format\_count}}
+\newcommand{\HFNfilenameentryformat}      {\addttindex{file\_name\_entry\_format}}
+\newcommand{\HFNfilenamescount}           {\addttindex{file\_names\_count}}
+\newcommand{\HFNfilenames}                {\addttindex{file\_names}}
+\newcommand{\HFNflags}                    {\addttindex{flags}}
+\newcommand{\HFNheaderlength}             {\addttindex{header\_length}}
+\newcommand{\HFNlinebase}                 {\addttindex{line\_base}}
+\newcommand{\HFNlinerange}                {\addttindex{line\_range}}
+\newcommand{\HFNminimuminstructionlength} {\addttindex{minimum\_instruction\_length}}
+\newcommand{\HFNmaximumoperationsperinstruction}{\addttindex{maximum\_operations\_per\_instruction}}
+\newcommand{\HFNopcodebase}               {\addttindex{opcode\_base}}
+\newcommand{\HFNopcodeoperandstable}      {\addttindex{opcode\_operands\_table}}
+\newcommand{\HFNsegmentsize}              {\addttindex{segment\_size}}
+\newcommand{\HFNstandardopcodelengths}    {\addttindex{standard\_opcode\_lengths}}
+\newcommand{\HFNtypeoffset}               {\addttindex{type\_offset}}
+\newcommand{\HFNtypesignature}            {\addttindex{type\_signature}}
+\newcommand{\HFNunitlength}               {\addttindex{unit\_length}}
+\newcommand{\HFNunittype}                 {\addttindex{unit\_type}}
+\newcommand{\HFNversion}                  {\addttindex{version}}
+%
 % Miscellaneous
 %
 \newcommand{\MDfive}{\livelink{def:MDfive}{MD5}}
index b738cdf..3f316ed 100644 (file)
@@ -1316,7 +1316,7 @@ operation, beginning after the 2\dash byte constant.
 \DWOPcalltwoNAME, 
 \DWOPcallfourNAME, 
 and \DWOPcallrefNAME{} perform
-subroutine calls during evaluation of a DWARF expression or
+DWARF procedure calls during evaluation of a DWARF expression or
 location description. 
 For \DWOPcalltwoNAME{} and \DWOPcallfourNAME{}, 
 the operand is the 2\dash~ or 4\dash byte unsigned offset, respectively,
@@ -1325,7 +1325,7 @@ unit. The \DWOPcallrefNAME{} operator has a single operand. In the
 \thirtytwobitdwarfformat,
 the operand is a 4\dash byte unsigned value;
 in the \sixtyfourbitdwarfformat, it is an 8\dash byte unsigned value
-(see Section \refersec{datarep:32bitand64bitdwarfformats}). 
+(see Section \referfol{datarep:32bitand64bitdwarfformats}). 
 The operand is used as the offset of a
 debugging information entry in a 
 \dotdebuginfo{}
index f67212f..2601ddd 100644 (file)
@@ -90,6 +90,7 @@ explanatory or supplementary material, and not part of the
 format definition itself. The several appendices consist only
 of explanatory or supplementary material, and are not part
 of the formal definition.
+
 \section{Vendor Extensibility}
 
 This document does not attempt to cover all interesting
@@ -111,7 +112,7 @@ All
 names and values not reserved for vendor additions, however,
 are reserved for future versions of this document.
 
-\addtoindex{DWARF Version 4} is intended to be permissive rather than
+DWARF is intended to be permissive rather than
 prescriptive. 
 Where this specification provides a means for
 describing the source language, implementors are expected
@@ -136,12 +137,20 @@ albeit possibly in a degraded manner.
 The following is a list of the major changes made to the DWARF Debugging Information
 Format since Version 4 was published. The list is not meant to be exhaustive.
 \begin{itemize}
-\item OTHERS TBD...
+\item The \dotdebugtypes{}
+%\addtoindexi{\texttt{.debug\_types}}{\texttt{.debug\_types} (Version 4)}
+section introduced in \DWARFVersionIV{} 
+is eliminated and its contents instead contained in \dotdebuginfo{} sections
+to facilitate other changes.
 \item Add support for collecting common DWARF information (DIEs and macro definitions)
 across multiple executable and shared files and keeping it in a single
 supplementary object file.
-\item Add a string section specific to the line number table (\dotdebuglinestr)
-to more properly support the common practice of stripping all DWARF sections
+\item A new line number program header design provides the ability to 
+use an MD5 hash to validate source file version in use, allows pooling 
+of directory and file name strings and makes provision for vendor-defined
+extensions. It also adds a string section specific to the line number table 
+(\dotdebuglinestr)
+to properly support the common practice of stripping all DWARF sections
 except for line number information.
 \item Add a split object file and package representations to allow most 
 DWARF information to be compacted and/or kept separate from an executable 
@@ -150,12 +159,14 @@ or shared image. This includes new sections
 \dotdebuglinedwo, \dotdebuglocdwo, \dotdebugmacrodwo, \dotdebugstrdwo,
 \dotdebugstroffsetsdwo, \dotdebugcuindex{} and \dotdebugtuindex{} 
 together with new forms of attribute value for referencing these sections.
-This enhances DWARF support for very large programs.
+This enhances DWARF support for very large programs by saving space 
+and improving link times.
 \item Replace the \dotdebugmacinfo{} macro information representation with
 a much more compact \dotdebugmacro{} representation.
 \item Add a new debugging information entry, related attributes and
 DWARF expression operators, to describe call information, 
 including identification of tail calls and tail recursion.
+This facilitates debugging optimized code.
 \item Add a new attribute, \DWATnoreturnNAME{}, to identify a subprogram that 
 does not return to its caller.
 \item Add a new attribute, \DWATrankNAME{}, to describe the dimensionality of
@@ -168,15 +179,12 @@ Julia, Modula 3, Ocaml, Rust, OpenCL and Swift.
 
 DWARF Version 5 is compatible with DWARF Version 4 except as follows:
 \begin{itemize}
-\item A new line number program header design provides the ability to 
-use an MD5 hash to validate source file version in use, allows pooling 
-of directory and file name strings and make provision for vendor-defined
-extensions.
+\item The line number table header is substantially revised.
 \item New operand forms for attribute values are defined 
 (\DWFORMaddrxNAME, \DWFORMdatasixteenNAME, \DWFORMlinestrpNAME, \DWFORMrefsupNAME, 
 \DWFORMstrpNAME, \DWFORMstrpsupNAME, \DWFORMstrxNAME).
 (Because a pre-DWARF Version 5 consumer will not be able to interpret these even to
-ignore and skip over them, they must be considered incompatible.)
+ignore and skip over them, such new forms must be considered incompatible.)
 \item A location list entry (see Section \refersec{chap:locationlists}) with 
 the address range \mbox{(0, \doublequote{-1})} is defined as the new default location 
 list entry.
@@ -232,7 +240,7 @@ section offsets, flag compression, type signature references, and so on) cannot
 \addtoindex{DWARF Version 3}
 consumers because the consumer will not know how to skip over the
 unexpected form of data.
-\item DWARF frame and line bumber table sections include a additional fields that affect the location
+\item DWARF frame and line number table sections include additional fields that affect the location
 and interpretation of other data in the section.
 \end{itemize}
 
index 7e2a554..b7e0e3b 100644 (file)
@@ -307,7 +307,7 @@ one compilation unit. \\
 \addtoindex{basic block} &
  A sequence of instructions where only the first instruction may be a
 branch target and only the last instruction may transfer control. A
-procedure invocation is defined to be an exit from a 
+subprogram invocation is defined to be an exit from a 
 \addtoindex{basic block}.
 
 \textit{A \addtoindex{basic block} does not 
@@ -496,17 +496,18 @@ A 1-byte unsigned integer containing the size in bytes of an
 address (or offset portion of an address for segmented addressing)
 on the target system.
    
-\textit{The \texttt{address\_size} field is new in DWARF Version 5. 
+\textit{The \addttindex{address\_size} field is new in DWARF Version 5. 
 It is needed to legitimize the common practice of stripping all but 
 the line number sections (\dotdebugline{} and \dotdebuglinestr{}) 
 from an executable.}
 
 \item \texttt{segment\_size} (ubyte) \\
+\addttindexx{segment\_size}
 A 1-byte unsigned integer containing the size in bytes of a segment
 selector on the target system.
    
-\textit{The \texttt{segment\_size} field is new in DWARF Version 5. 
-It is needed in combination with the \texttt{address\_size} field (preceding) 
+\textit{The \addttindex{segment\_size} field is new in DWARF Version 5. 
+It is needed in combination with the \addttindex{address\_size} field (preceding) 
 to accurately characterize the address representation on the target 
 system.}
 
@@ -652,10 +653,12 @@ goals:}
 %%% Resume enumeration count where it left off above
 \setcounter{enumi}{\value{saveenumi}}
 \item \texttt{directory\_entry\_format\_count} (ubyte) \\
+\addttindexx{directory\_entry\_format\_count}
     A count of the number of entries that occur in the
-    following \texttt{directory\_entry\_format} field.
+    following \addttindex{directory\_entry\_format} field.
    
 \item \texttt{directory\_entry\_format} (sequence of uleb pairs) \\
+\addttindexx{directory\_entry\_format}
     A sequence of directory entry format descriptions.
     Each description consists of a pair of uleb values:
 \begin{itemize}
@@ -666,14 +669,16 @@ goals:}
 
 \needlines{4} 
 \item \texttt{directories\_count} (uleb) \\
+\addttindexx{directories\_count}
 A count of the number of entries that occur in the
 following directories field.
 
 \needlines{4}    
 \item \texttt{directories} (sequence of directory names) \\
+\addttindexx{directories}
 A sequence of directory names and optional related
 information. Each entry is encoded as described
-by the \texttt{directory\_entry\_format} field.
+by the \addttindex{directory\_entry\_format} field.
    
 Entries in this sequence describe each path that was
 searched for included source files in this compilation,
@@ -703,12 +708,14 @@ both the compilation unit DIE and the line number header can
 share a single copy of the current directory name string.}
 
 \item \texttt{file\_name\_entry\_format\_count} (ubyte) \\
+\addttindexx{file\_name\_entry\_format\_count}
 A count of the number of file entry format entries that
-occur in the following \texttt{file\_name\_entry\_format} field. 
-If this field is zero, then the \texttt{file\_names\_count} field 
+occur in the following \addttindex{file\_name\_entry\_format} field. 
+If this field is zero, then the \addttindex{file\_names\_count} field 
 (see below) must also be zero.
 
 \item \texttt{file\_name\_entry\_format} (sequence of uleb pairs) \\
+\addttindexx{file\_name\_entry\_format}
 A sequence of file entry format descriptions.
 Each description consists of a pair of uleb values:
 \begin{itemize}
@@ -718,14 +725,16 @@ Each description consists of a pair of uleb values:
 \end{itemize}
 
 \item \texttt{file\_names\_count} (uleb) \\
+\addttindexx{file\_names\_count}
 A count of the number of file name entries that occur
-in the following \texttt{file\_names} field.
+in the following \addttindex{file\_names} field.
 
 \needlines{4}
 \item \texttt{file\_names} (sequence of file name entries) \\
+\addttindexx{file\_names}
 A sequence of file names and optional related
 information. Each entry is encoded as described
-by the \texttt{file\_name\_entry\_format} field (in the
+by the \addttindex{file\_name\_entry\_format} field (in the
 order described).
   
 Entries in this sequence describe source files that
@@ -743,15 +752,19 @@ those numbers instead of file names in the line number
 program that follows.
 
 \textit{Prior to \DWARFVersionV, the current compilation 
-file name was not represented in the \texttt{file\_names}
+file name was not represented in the \addttindex{file\_names}
 field. In \DWARFVersionV, the current compilation file name 
 is explicitly present and has index 0. This is needed to legitimize 
 the common practice of stripping all but the line number sections
 (\dotdebugline{} and \dotdebuglinestr) from an executable.}
 
+\textit{Note that if a \dotdebuglinestr{} section is present, 
+both the compilation unit DIE and the line number header can
+share a single copy of the current file name string.}
+
 \end{enumerate}
 
-\subsubsubsection{Standard Content Descriptions}
+\subsubsection{Standard Content Descriptions}
 DWARF-defined content type codes are used to indicate
 the type of information that is represented in one
 component of an include directory or file name description.
@@ -762,10 +775,10 @@ The following type codes are defined.
 The component is a null-terminated path name string.
 If the associated form code is \DWFORMstring{}, then the
 string occurs immediately in the containing \texttt{directories}
-or \texttt{file\_names} field. If the form code is \DWFORMlinestrp{},
+or \addttindex{file\_names} field. If the form code is \DWFORMlinestrp{},
 then the string is included in the \dotdebuglinestr{} section
 and its offset occurs immediately in the containing
-\texttt{directories} or \texttt{file\_names} field.
+\addttindex{directories} or \addttindex{file\_names} field.
 
 \textit{Note that this use of \DWFORMlinestrp{} is similar to
 \DWFORMstrp{} but refers to the \dotdebuglinestr{} section,
@@ -796,10 +809,10 @@ This content code is always paired with one of \DWFORMdataone,
 \DWFORMdatatwo{} or \DWFORMudata.
 
 \textit{The optimal form for a producer to use (which results in the
-minimum size for the set of \texttt{include\_index} fields) depends not only
+minimum size for the set of \addttindex{include\_index} fields) depends not only
 on the number of directories in the directories
 field, but potentially on the order in which those directories are
-listed and the number of times each is used in the \texttt{file\_names} field.
+listed and the number of times each is used in the \addttindex{file\_names} field.
 However, \DWFORMudata{} is expected to be near optimal in most common
 cases.}
    
@@ -820,9 +833,9 @@ or \DWFORMdataeight.
 of the file contents. It is paired with form \DWFORMdatasixteen.
 \end{enumerate}
 
-\textit{Using this representation, the information found in a DWARF
-Version 4 line number header could be encoded as shown in 
-Figure \refersec{fig:preV5LNCTusingV5}.}
+\textit{Using this representation, the information found in a 
+\DWARFVersionIV{} line number header could be encoded as shown in 
+Figure \referfol{fig:preV5LNCTusingV5}.}
 
 \begin{figure}[here]
 \begin{dwflisting}
@@ -834,25 +847,27 @@ Figure \refersec{fig:preV5LNCTusingV5}.}
      3    \textit{Not present in Version 4}        -
      4    \textit{Not present in Version 4}        -
    5-12   \textit{Same as in Version 4}            ...
-    13    directory_entry_format_count    1
-    14    directory_entry_format          \DWLNCTpath, \DWFORMstring
-    15    directories_count               <n>
-    16    directories                     <n>*<null terminated string>
-    17    file_name_entry_format_count    4
-    18    file_name_entry_format          \DWLNCTpath, \DWFORMstring,
+    13    \HFNdirectoryentryformatcount{}    1
+    14    \HFNdirectoryentryformat{}          \DWLNCTpath, \DWFORMstring
+    15    \HFNdirectoriescount{}               <n>
+    16    \HFNdirectories{}                     <n>*<null terminated string>
+    17    \HFNfilenameentryformatcount{}    4
+    18    \HFNfilenameentryformat{}          \DWLNCTpath, \DWFORMstring,
                                           \DWLNCTdirectoryindex, \DWFORMudata,
                                           \DWLNCTtimestamp, \DWFORMudata,
                                           \DWLNCTsize, \DWFORMudata
-    19    file_names_count                <m>
-    20    file_names                      <m>*{<null terminated string>,
+    19    \HFNfilenamescount{}                <m>
+    20    \HFNfilenames{}                      <m>*{<null terminated string>,
                                           <index>, <timestamp>, <size>}
 \end{alltt}
 \end{dwflisting}
+\begin{centering}
 \caption{Pre-\DWARFVersionV{} Line Number Program Header Information \mbox{Encoded} Using \DWARFVersionV}
+\end{centering}
 \label{fig:preV5LNCTusingV5}
 \end{figure}
 
-\subsubsubsection{Vendor-defined Content Descriptions}
+\subsubsection{Vendor-defined Content Descriptions}
 Vendor-defined content descriptions may be defined using content
 type codes in the range \DWLNCTlouserTARG{} to \DWLNCThiuserTARG{}. Each
 such code may be combined with one or more forms from the set:
@@ -1313,13 +1328,13 @@ If the \texttt{offset\_size} flag is clear, the header is for a 32-bit
 DWARF format macro section and all offsets are 4 bytes long;
 if it is set, the header is for a 64-bit DWARF format macro section 
 and all offsets are 8 bytes long.
-\item \addttindex{debug\_line\_section\_offset\_flag} -- see below
+\item \addttindex{debug\_line\_offset\_flag} -- see below
 \item \addttindex{opcode\_operands\_table\_flag} -- see below
 \end{itemize}
 All other flags are reserved by DWARF.
 
-\item \addttindex{debug\_line\_section\_offset} \\
-If the \texttt{debug\_line\_section\_offset\_flag} is set,
+\item \addttindex{debug\_line\_offset} \\
+If the \texttt{debug\_line\_offset\_flag} is set,
 there follows an offset in the \dotdebugline{} section of the
 beginning of the line number information, encoded as 4-byte offset for
 a 32-bit DWARF format macro section and 8-byte offset for a 64-bit DWARF format
@@ -1677,7 +1692,7 @@ specially.}
 \label{chap:structureofcallframeinformation}
 
 DWARF supports virtual unwinding by defining an architecture
-independent basis for recording how procedures save and restore
+independent basis for recording how subprograms save and restore
 registers during their lifetimes. This basis must be augmented
 on some machines with specific information that is defined by
 an architecture specific ABI authoring committee, a hardware
index 57444c4..7c54e7e 100644 (file)
@@ -133,13 +133,17 @@ indicating the source language of the compilation
 unit. The set of language names and their meanings are given
 in Table \refersec{tab:languagenames}.
 
-\begin{table}[t]
-\centering
-\caption{Language names}
-\label{tab:languagenames}
-\begin{tabular}{l|l}
-\hline
-Language name & Meaning\\ \hline
+\begin{centering}
+  \setlength{\extrarowheight}{0.1cm}
+\begin{longtable}{l|l}
+  \caption{Language names} \label{tab:languagenames} \\
+  \hline \bfseries Language name & \bfseries Meaning \\ \hline
+\endfirsthead
+  \bfseries Language name & \bfseries Meaning \\ \hline
+\endhead
+  \hline \emph{Continued on next page}
+\endfoot
+\endlastfoot
 \addtoindexx{ISO-defined language names}
 \DWLANGAdaeightythreeTARG{} \dag & ISO Ada:1983 \addtoindexx{Ada:1983 (ISO)} \\
 \DWLANGAdaninetyfiveTARG{}  \dag & ISO Ada:1995 \addtoindexx{Ada:1995 (ISO)} \\
@@ -150,6 +154,7 @@ Language name & Meaning\\ \hline
 \DWLANGCplusplusTARG          & ISO C++:1998 \addtoindexx{C++:1998 (ISO)} \\
 \DWLANGCpluspluszerothreeTARG & ISO C++:2003 \addtoindexx{C++:2003 (ISO)} \\
 \DWLANGCpluspluselevenTARG    & ISO C++:2011 \addtoindexx{C++:2011 (ISO)} \\
+\DWLANGCplusplusfourteenTARG  & ISO C++:2014 \addtoindexx{C++:2014 (ISO)} \\
 \DWLANGCobolseventyfourTARG & ISO COBOL:1974 \addtoindexx{COBOL:1974 (ISO)} \\
 \DWLANGCoboleightyfiveTARG  & ISO COBOL:1985 \addtoindexx{COBOL:1985 (ISO)} \\
 \DWLANGDTARG{}~\dag & D \addtoindexx{D language} \\
@@ -176,9 +181,10 @@ Language name & Meaning\\ \hline
                          \index{Unified Parallel C|see{UPC}} \\ 
 \hline
 \dag \ \ \textit{Support for these languages is limited}& \\
-\end{tabular}
-\end{table}
+\end{longtable}
+\end{centering}
 
+\needlines{6}
 \item A \DWATstmtlist{}
 attribute whose value is 
 \addtoindexx{statement list attribute}
@@ -196,9 +202,6 @@ value of the statement list attribute is the offset in the
 information for this compilation unit 
 (see Section \refersec{chap:linenumberinformation}).
 
-\clearpage
-
-\needlines{6}
 \item A \DWATmacros{} attribute 
 \addtoindexx{macro information attribute}
 whose value is a 
@@ -324,6 +327,7 @@ presence indicates that all strings (such as the names of
 declared entities in the source program, or filenames in the line number table) 
 are represented using the UTF\dash 8 representation. 
 
+\needlines{4}
 \item A \DWATmainsubprogram{} attribute, which is a \livelink{chap:classflag}{flag}
 \addtoindexx{main subprogram attribute}
 whose presence indicates 
@@ -1315,12 +1319,12 @@ but more
 compact. However, these are not equivalent in general.}
 
 \needlines{5}
-\textit{The frame base for a procedure is typically an address fixed
+\textit{The frame base for a subprogram is typically an address fixed
 relative to the first unit of storage allocated for the
-procedure\textquoteright s stack frame. The \DWATframebase{} attribute
+subprogram\textquoteright s stack frame. The \DWATframebase{} attribute
 can be used in several ways:}
 \begin{enumerate}[1. ]
-\item \textit{In procedures that need 
+\item \textit{In subprograms that need 
 \addtoindexx{location list}
 location lists to locate local
 variables, the \DWATframebase{} can hold the needed location
@@ -1357,7 +1361,7 @@ constraints:
 
 \begin{enumerate}[1. ]
 \item It should compute a value that does not change during the
-life of the procedure, and
+life of the subprogram, and
 
 \item The computed value should be unique among instances of
 the same subroutine. (For typical \DWATframebase{} use, this