compression.tex
authorDavid Anderson <davea42@earthlink.net>
Tue, 13 Nov 2012 03:25:46 +0000 (19:25 -0800)
committerDavid Anderson <davea42@earthlink.net>
Tue, 13 Nov 2012 03:25:46 +0000 (19:25 -0800)
datarepresentation.tex
foreword.tex
generaldescription.tex
introduction.tex
otherdebugginginformation.tex
programscope.tex
sectionversionnumbers.tex
typeentries.tex

This completes the d* index entries.
At least a decent first cut at them.

dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/foreword.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/sectionversionnumbers.tex
dwarf5/latexdoc/typeentries.tex

index c3617a1..d6e7c33 100644 (file)
@@ -5,7 +5,11 @@
 % captioning as DWARF4 here with figures as they moved (floated)
 % making it hard to follow.  Hence this uses fewer figures.
 
 % captioning as DWARF4 here with figures as they moved (floated)
 % making it hard to follow.  Hence this uses fewer figures.
 
-DWARF can use a lot of disk space.
+DWARF 
+\addtoindexx{DWARF compression}
+can 
+\addtoindexx{DWARF duplicate elimination}
+use a lot of disk space.
 
 This is especially true for C++, where the depth and complexity
 of headers can mean that many, many (possibly thousands of)
 
 This is especially true for C++, where the depth and complexity
 of headers can mean that many, many (possibly thousands of)
@@ -156,7 +160,9 @@ widely known as ``COMDATs'' or ``COMDAT sections''. (Other
 object file representations provide COMDAT\dash style mechanisms as
 well.) There are several variations in the COMDAT schemes in
 common use, any of which should be sufficient for the purposes
 object file representations provide COMDAT\dash style mechanisms as
 well.) There are several variations in the COMDAT schemes in
 common use, any of which should be sufficient for the purposes
-of the DWARF duplicate elimination techniques described here.}
+of the 
+\addtoindexx{duplication elimination|see{DWARF duplicate elimination}}
+DWARF duplicate elimination techniques described here.}
 
 \subsection{Naming and Usage Considerations}
 \label{app:namingandusageconsiderations}
 
 \subsection{Naming and Usage Considerations}
 \label{app:namingandusageconsiderations}
@@ -387,7 +393,9 @@ same object file.
 \subsection{Examples}
 \label{app:examples}
 
 \subsection{Examples}
 \label{app:examples}
 
-This section provides several examples in order to have a
+This section provides several 
+\addtoindexx{DWARF duplicate elimination!examples}
+examples in order to have a
 concrete basis for discussion.
 
 In these examples, the focus is on the arrangement of DWARF
 concrete basis for discussion.
 
 In these examples, the focus is on the arrangement of DWARF
@@ -408,7 +416,9 @@ the underlying object language is not (and varies from system to system).
 
 \subsubsection{C++ Example}
 
 
 \subsubsection{C++ Example}
 
-The addtoindex{C++} source in 
+The addtoindex{C++} source 
+\addtoindexx{DWARF duplicate elimination!C++ example}
+in 
 Section \refersec{app:duplicateeliminationexample1csource}
 is used to illustrate the DWARF
 representation intended to allow duplicate elimination.
 Section \refersec{app:duplicateeliminationexample1csource}
 is used to illustrate the DWARF
 representation intended to allow duplicate elimination.
@@ -502,7 +512,9 @@ globally visible (in accordance with
 \subsubsection{Fortran Example}
 
 
 \subsubsection{Fortran Example}
 
 
-For a Fortran example, consider 
+For a Fortran 
+\addtoindexx{DWARF duplicate elimination!Fortran example}
+example, consider 
 Figure \refersec{app:duplicateeliminationexample2fortransource}.
 
 
 Figure \refersec{app:duplicateeliminationexample2fortransource}.
 
 
@@ -662,7 +674,9 @@ visible as global entities.
 
 \subsubsection{C Example}
 
 
 \subsubsection{C Example}
 
-The \addtoindex{C++} example in this Section might appear to be equally
+The \addtoindex{C} example 
+\addtoindexx{DWARF duplicate elimination!C example}
+in this Section might appear to be equally
 valid as a \addtoindex{C} example. However, it is prudent to include
 a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
 in the primary unit 
 valid as a \addtoindex{C} example. However, it is prudent to include
 a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
 in the primary unit 
index 3cc953e..7ffee4f 100644 (file)
@@ -102,7 +102,7 @@ in the \addtoindex{.debug\_frame} section.
 
 In an initial length field, the values 0xfffffff0 through
 0xffffffff are reserved by DWARF to indicate some form of
 
 In an initial length field, the values 0xfffffff0 through
 0xffffffff are reserved by DWARF to indicate some form of
-extension relative to DWARF Version 2; such values must not
+extension relative to \addtoindex{DWARF Version 2}; such values must not
 be interpreted as a length field. The use of one such value,
 0xffffffff, is defined below 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
 be interpreted as a length field. The use of one such value,
 0xffffffff, is defined below 
 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
@@ -868,7 +868,7 @@ Table \refersec{tab:attributeformencodings}.
 \livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
 \livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
 \end{longtable}
 \livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
 \livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
 \end{longtable}
-\ddag  TAG new in DWARF Version 4 
+\ddag  TAG new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 
 \end{centering}
 
 
@@ -1088,7 +1088,7 @@ Child determination name& Value\\ \hline
 \livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding}  \\
 
 \end{longtable}
 \livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& --- \addtoindexx{high user attribute encoding}  \\
 
 \end{longtable}
-\ddag  Attribute new in DWARF Version 4 
+\ddag  Attribute new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \begin{centering}
 \end{centering}
 
 \begin{centering}
@@ -1130,7 +1130,7 @@ Child determination name& Value\\ \hline
 \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
  
 \end{longtable}
 \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
  
 \end{longtable}
-\ddag  FORM new in DWARF Version 4 
+\ddag  FORM new in \addtoindex{DWARF Version 4} 
 \end{centering}
 
 \section{Variable Length Data}
 \end{centering}
 
 \section{Variable Length Data}
@@ -1243,7 +1243,9 @@ gives algorithms for encoding and decoding these forms.
 \subsection{DWARF Expressions}
 \label{datarep:dwarfexpressions}
 
 \subsection{DWARF Expressions}
 \label{datarep:dwarfexpressions}
 
-A DWARF expression is stored in a \nolink{block} of contiguous
+A 
+\addtoindexx{DWARF Expression!operator encoding}
+DWARF expression is stored in a \nolink{block} of contiguous
 bytes. The bytes form a sequence of operations. Each operation
 is a 1\dash byte code that identifies that operation, followed by
 zero or more bytes of additional data. The encodings for the
 bytes. The bytes form a sequence of operations. Each operation
 is a 1\dash byte code that identifies that operation, followed by
 zero or more bytes of additional data. The encodings for the
@@ -1432,7 +1434,7 @@ Table \refersec{tab:basetypeencodingvalues}
 \livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
 \livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
 
 \end{longtable}
-\ddag  Base type encoding new in DWARF Version 4
+\ddag  Base type encoding new in \addtoindex{DWARF Version 4}
 \end{centering}
 
 
 \end{centering}
 
 
@@ -1761,7 +1763,9 @@ Table \refersec{tab:orderingencodings}.
 \section{Discriminant Lists}
 \label{datarep:discriminantlists}
 
 \section{Discriminant Lists}
 \label{datarep:discriminantlists}
 
-The descriptors used in the 
+The descriptors used in 
+\addtoindexx{discriminant list attribute!encoding}
+the 
 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are 
 encoded as 1\dash byte constants. The
 defined values are given in 
 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are 
 encoded as 1\dash byte constants. The
 defined values are given in 
@@ -1982,7 +1986,7 @@ Table \refersec{tab:linenumberextendedopcodeencodings}.
 \livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
 
 \end{longtable}
 \livetarg{chap:DWLNEhiuser}{DW\-\_LNE\-\_hi\-\_user}&0xff   \\
 
 \end{longtable}
-\ddag Extended opcode new in DWARF Version 4.
+\ddag Extended opcode new in \addtoindex{DWARF Version 4}.
 \end{centering}
 
 \section{Macro Information}
 \end{centering}
 
 \section{Macro Information}
@@ -2113,7 +2117,9 @@ corresponding compilation unit must be defined
 \label{datarep:dependenciesandconstraints}
 
 The debugging information in this format is intended to
 \label{datarep:dependenciesandconstraints}
 
 The debugging information in this format is intended to
-exist in 
+exist 
+\addtoindexx{DWARF section names!list of}
+in 
 the \addtoindex{.debug\_abbrev}, 
 \addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_frame},
 the \addtoindex{.debug\_abbrev}, 
 \addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_frame},
index 097855d..5f3a2d8 100644 (file)
@@ -8,14 +8,14 @@ Programming Languages Special Interest Group (PLSIG) of Unix
 International, Inc., a trade group organized to promote Unix
 System V Release 4 (SVR4).
 
 International, Inc., a trade group organized to promote Unix
 System V Release 4 (SVR4).
 
-PLSIG drafted a standard for DWARF Version 1, compatible with
+PLSIG drafted a standard for \addtoindex{DWARF Version 1}, compatible with
 the DWARF debugging format used at the time by SVR4 compilers
 and debuggers from AT\&T.  This was published as Revision 1.1.0
 the DWARF debugging format used at the time by SVR4 compilers
 and debuggers from AT\&T.  This was published as Revision 1.1.0
-on October 6, 1992. PLSIG also designed the DWARF Version 2
+on October 6, 1992. PLSIG also designed the \addtoindex{DWARF Version 2}
 format, which followed the same general philosophy as Version
 1, but with significant new functionality and a more compact,
 though incompatible, encoding.  An industry review draft
 format, which followed the same general philosophy as Version
 1, but with significant new functionality and a more compact,
 though incompatible, encoding.  An industry review draft
-of DWARF Version 2 was published as Revision 2.0.0 on July
+of \addtoindex{DWARF Version 2} was published as Revision 2.0.0 on July
 27, 1993.
 
 Unix International dissolved shortly after the draft of
 27, 1993.
 
 Unix International dissolved shortly after the draft of
@@ -25,10 +25,10 @@ mailing list was hosted by OpenGroup (formerly XOpen).
 
 The Committee reorganized in October, 1999, and met for the
 next several years to address issues that had been noted with
 
 The Committee reorganized in October, 1999, and met for the
 next several years to address issues that had been noted with
-DWARF Version 2 as well as to add a number of new features.
+\addtoindex{DWARF Version 2} as well as to add a number of new features.
 In mid-2003, the Committee became a workgroup under the Free
 Standards Group (FSG), a industry consortium chartered to
 In mid-2003, the Committee became a workgroup under the Free
 Standards Group (FSG), a industry consortium chartered to
-promote open standards. DWARF Version 3 was published on
+promote open standards. \addtoindex{DWARF Version 3} was published on
 December 20, 2005, following industry review and comment.
 
 The DWARF Committee withdrew from the Free Standards Group
 December 20, 2005, following industry review and comment.
 
 The DWARF Committee withdrew from the Free Standards Group
@@ -38,11 +38,16 @@ focused on promoting Linux. The DWARF Committee has been
 independent since that time.
 
 It is the intention of the DWARF Committee that migrating
 independent since that time.
 
 It is the intention of the DWARF Committee that migrating
-from DWARF Version 2 or Version 3 
+from \addtoindex{DWARF Version 2} or Version 3 
+\addtoindexx{DWARF Version 3}
 or Version 4 to later versions should
 be straightforward and easily accomplished. 
 or Version 4 to later versions should
 be straightforward and easily accomplished. 
-Almost all DWARF
-Version 2 and Version 3 and Version 4 
+Almost all 
+\addtoindex{DWARF Version 2} 
+and Version 3 
+\addtoindexx{DWARF Version 3}
+and Version 4 
+\addtoindexx{DWARF Version 4}
 constructs have been retained unchanged
 in DWARF Version 5.
 
 constructs have been retained unchanged
 in DWARF Version 5.
 
index 6c619c4..154bd7d 100644 (file)
@@ -554,15 +554,22 @@ Section \refersec{chap:locationdescriptions}.
 Each general operation represents a postfix operation on
 a simple stack machine. Each element of the stack is the
 size of an address on the target machine. The value on the
 Each general operation represents a postfix operation on
 a simple stack machine. Each element of the stack is the
 size of an address on the target machine. The value on the
-top of the stack after ``executing'' the DWARF expression
-is taken to be the result (the address of the object, the
+top of the stack after ``executing'' the 
+\addtoindex{DWARF expression}
+is 
+\addtoindex{DWARF expression|see{location description}}
+taken to be the result (the address of the object, the
 value of the array bound, the length of a dynamic string,
 the desired value itself, and so on).
 
 \subsubsection{Literal Encodings}
 \label{chap:literalencodings}
 value of the array bound, the length of a dynamic string,
 the desired value itself, and so on).
 
 \subsubsection{Literal Encodings}
 \label{chap:literalencodings}
-The following operations all push a value onto the DWARF
-stack. If the value of a constant in one of these operations
+The 
+\addtoindexx{DWARF expression!literal encodings}
+following operations all push a value onto the DWARF
+stack. 
+\addtoindexx{DWARF expression!stack operations}
+If the value of a constant in one of these operations
 is larger than can be stored in a single stack element, the
 value is truncated to the element size and the low\dash order bits
 are pushed on the stack.
 is larger than can be stored in a single stack element, the
 value is truncated to the element size and the low\dash order bits
 are pushed on the stack.
@@ -599,6 +606,7 @@ a signed LEB128 integer constant.
 \subsubsection{Register Based Addressing}
 \label{chap:registerbasedaddressing}
 The following operations push a value onto the stack that is
 \subsubsection{Register Based Addressing}
 \label{chap:registerbasedaddressing}
 The following operations push a value onto the stack that is
+\addtoindexx{DWARF expression!register based addressing}
 the result of adding the contents of a register to a given
 signed offset.
 
 the result of adding the contents of a register to a given
 signed offset.
 
@@ -629,7 +637,9 @@ a signed LEB128 offset.
 
 \subsubsection{Stack Operations}
 \label{chap:stackoperations}
 
 \subsubsection{Stack Operations}
 \label{chap:stackoperations}
-The following operations manipulate the DWARF stack. Operations
+The following 
+\addtoindexx{DWARF expression!stack operations}
+operations manipulate the DWARF stack. Operations
 that index the stack assume that the top of the stack (most
 recently added entry) has index 0.
 
 that index the stack assume that the top of the stack (most
 recently added entry) has index 0.
 
@@ -776,7 +786,11 @@ space efficient to reference that.
 \end{enumerate}
 
 \subsubsection{Arithmetic and Logical Operations}
 \end{enumerate}
 
 \subsubsection{Arithmetic and Logical Operations}
-The following provide arithmetic and logical operations. Except
+The 
+\addtoindexx{DWARF expression!arithmetic operations}
+following 
+\addtoindexx{DWARF expression!logical operations}
+provide arithmetic and logical operations. Except
 as otherwise specified, the arithmetic operations perfom
 addressing arithmetic, that is, unsigned arithmetic that is
 performed modulo one plus the largest representable address
 as otherwise specified, the arithmetic operations perfom
 addressing arithmetic, that is, unsigned arithmetic that is
 performed modulo one plus the largest representable address
@@ -861,7 +875,9 @@ pushes the result.
 
 \subsubsection{Control Flow Operations}
 \label{chap:controlflowoperations}
 
 \subsubsection{Control Flow Operations}
 \label{chap:controlflowoperations}
-The following operations provide simple control of the flow of a DWARF expression.
+The 
+\addtoindexx{DWARF expression!control flow operations}
+following operations provide simple control of the flow of a DWARF expression.
 \begin{enumerate}[1]
 \item  \livetarg{chap:DWOPle}{DW\-\_OP\-\_le}, \livetarg{chap:DWOPge}{DW\-\_OP\-\_ge}, \livetarg{chap:DWOPeq}{DW\-\_OP\-\_eq}, \livetarg{chap:DWOPlt}{DW\-\_OP\-\_lt}, \livetarg{chap:DWOPgt}{DW\-\_OP\-\_gt}, \livetarg{chap:DWOPne}{DW\-\_OP\-\_ne} \\
 The six relational operators each:
 \begin{enumerate}[1]
 \item  \livetarg{chap:DWOPle}{DW\-\_OP\-\_le}, \livetarg{chap:DWOPge}{DW\-\_OP\-\_ge}, \livetarg{chap:DWOPeq}{DW\-\_OP\-\_eq}, \livetarg{chap:DWOPlt}{DW\-\_OP\-\_lt}, \livetarg{chap:DWOPgt}{DW\-\_OP\-\_gt}, \livetarg{chap:DWOPne}{DW\-\_OP\-\_ne} \\
 The six relational operators each:
@@ -946,7 +962,9 @@ by prior agreement between the calling and called expressions.
 
 
 \subsubsection{Special Operations}
 
 
 \subsubsection{Special Operations}
-There is one special operation currently defined:
+There 
+\addtoindexx{DWARF expression!special operations}
+is one special operation currently defined:
 \begin{enumerate}[1]
 \item \livetarg{chap:DWOPnop}{DW\-\_OP\-\_nop} \\
 The \livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} operation is a place holder. It has no effect
 \begin{enumerate}[1]
 \item \livetarg{chap:DWOPnop}{DW\-\_OP\-\_nop} \\
 The \livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} operation is a place holder. It has no effect
@@ -954,7 +972,9 @@ on the location stack or any of its values.
 
 \end{enumerate}
 \subsection{Example Stack Operations}
 
 \end{enumerate}
 \subsection{Example Stack Operations}
-\textit {The stack operations defined in 
+\textit {The 
+\addtoindexx{DWARF expression!examples}
+stack operations defined in 
 Section \refersec{chap:stackoperations}.
 are fairly conventional, but the following
 examples illustrate their behavior graphically.
 Section \refersec{chap:stackoperations}.
 are fairly conventional, but the following
 examples illustrate their behavior graphically.
@@ -1745,10 +1765,15 @@ may have a
 \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value is a location description
 (see Section \refersec{chap:locationdescriptions}).
 
 \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value is a location description
 (see Section \refersec{chap:locationdescriptions}).
 
-A DWARF procedure is represented by any
-kind of debugging information entry that has a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
-attribute. If a suitable entry is not otherwise available,
+A 
+\addtoindex{DWARF procedure}
+is represented by any
+kind of debugging information entry that has a 
+\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
+attribute. 
+If a suitable entry is not otherwise available,
 a DWARF procedure can be represented using a debugging
 a DWARF procedure can be represented using a debugging
+\addtoindexx{DWARF procedure entry}
 information entry with the 
 tag \livetarg{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}
 together with a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute.  
 information entry with the 
 tag \livetarg{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}
 together with a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute.  
@@ -1795,7 +1820,8 @@ the entry has a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute whose
 relocated address for the entity.  While the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
 attribute might also seem appropriate for this purpose,
 historically the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute was used before the
 relocated address for the entity.  While the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
 attribute might also seem appropriate for this purpose,
 historically the \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute was used before the
-\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} was introduced (in DWARF Version 3). There is
+\livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} was introduced 
+(in \addtoindex{DWARF Version 3}). There is
 insufficient reason to change this.
 
 \subsection{Continuous Address Range}
 insufficient reason to change this.
 
 \subsection{Continuous Address Range}
index 402df16..7c0d64b 100644 (file)
@@ -35,9 +35,11 @@ addtoindex{Ada},
 and \addtoindex{Fortran}; it also covers the basic needs
 of various other languages.
 
 and \addtoindex{Fortran}; it also covers the basic needs
 of various other languages.
 
-This document describes DWARF Version 4, the fourth generation
+This document describes \addtoindex{DWARF Version 4},
+the fourth generation
 of debugging information based on the DWARF format. DWARF
 of debugging information based on the DWARF format. DWARF
-Version 4 extends DWARF Version 3 in a compatible manner.
+Version 4 extends \addtoindex{DWARF Version 3}
+in a compatible manner.
 
 The intended audience for this document is the developers
 of both producers and consumers of debugging information,
 
 The intended audience for this document is the developers
 of both producers and consumers of debugging information,
@@ -75,7 +77,8 @@ Section \refersec{datarep:datarepresentation}.
 
 This organization closely follows that used in the DWARF
 Version 3 document. Except where needed to incorporate
 
 This organization closely follows that used in the DWARF
 Version 3 document. Except where needed to incorporate
-new material or to correct errors, the DWARF Version 3
+new material or to correct errors, the 
+\addtoindex{DWARF Version 3}
 text is generally reused in this document with little or
 no modification.
 
 text is generally reused in this document with little or
 no modification.
 
@@ -106,7 +109,7 @@ All
 names and values not reserved for vendor additions, however,
 are reserved for future versions of this document.
 
 names and values not reserved for vendor additions, however,
 are reserved for future versions of this document.
 
-DWARF Version 5 is intended to be permissive rather than
+\addtoindex{DWARF Version 5} is intended to be permissive rather than
 prescriptive. 
 Where this specification provides a means for
 describing the source language, implementors are expected
 prescriptive. 
 Where this specification provides a means for
 describing the source language, implementors are expected
@@ -157,10 +160,12 @@ constant expressions, Unicode character types and template aliases.
 \item Add additional support for template parameters in instantiations.
 \item Add support for strongly typed enumerations in languages (such as C++) that have two
 kinds of enumeration declarations.
 \item Add additional support for template parameters in instantiations.
 \item Add support for strongly typed enumerations in languages (such as C++) that have two
 kinds of enumeration declarations.
-DWARF Version 4 is compatible with DWARF Version 3 except as follows:
+\addtoindex{DWARF Version 4} is compatible with 
+\addtoindex{DWARF Version 3} except as follows:
 \item DWARF attributes that use any of the new forms of attribute value representation (for
 section offsets, flag compression, type signature references, and so on) cannot be read by
 \item DWARF attributes that use any of the new forms of attribute value representation (for
 section offsets, flag compression, type signature references, and so on) cannot be read by
-DWARF Version 3 consumers because the consumer will not know how to skip over the
+\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 table sections include a additional fields that affect the location
 and interpretation of other data in the section.
 unexpected form of data.
 \item DWARF frame and line table sections include a additional fields that affect the location
 and interpretation of other data in the section.
@@ -211,7 +216,9 @@ duplicate DWARF information during linking.
 
 \end{itemize}
 
 
 \end{itemize}
 
-DWARF Version 3 is compatible with DWARF Version 2 except as follows:
+\addtoindex{DWARF Version 3}
+is compatible with 
+\addtoindex{DWARF Version 2} except as follows:
 
 \begin{itemize}
 \item
 
 \begin{itemize}
 \item
@@ -224,8 +231,9 @@ is defined to increase the possible size of DWARF descriptions
 \item
 References that use the attribute form \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}
 are specified to be four bytes in the DWARF 32-bit format and
 \item
 References that use the attribute form \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}
 are specified to be four bytes in the DWARF 32-bit format and
-eight bytes in the DWARF 64-bit format, while DWARF Version
-2 specifies that such references have the same size as an
+eight bytes in the DWARF 64-bit format, while 
+\addtoindex{DWARF Version 2} 
+specifies that such references have the same size as an
 address on the target system (see Sections 7.4 and 7.5.4).
 
 \item
 address on the target system (see Sections 7.4 and 7.5.4).
 
 \item
@@ -237,9 +245,11 @@ LEB representation (see Section 6.4.1).
 
 
 \section[Changes Version1 to 2]{Changes from Version 1 to Version 2}
 
 
 \section[Changes Version1 to 2]{Changes from Version 1 to Version 2}
-DWARF Version 2 describes the second generation of debugging
-information based on the DWARF format. While DWARF Version
-2 provides new debugging information not available in
+\addtoindex{DWARF Version 2} 
+describes the second generation of debugging
+information based on the DWARF format. While 
+\addtoindex{DWARF Version 2}
+provides new debugging information not available in
 Version 1, the primary focus of the changes for Version
 2 is the representation of the information, rather than
 the information content itself. The basic structure of
 Version 1, the primary focus of the changes for Version
 2 is the representation of the information, rather than
 the information content itself. The basic structure of
@@ -264,7 +274,11 @@ file section, \addtoindex{.debug\_info}.
 
 \textit{
 A summary of the major changes
 
 \textit{
 A summary of the major changes
-made in DWARF Version 2 compared to the DWARF Version 1 may
-be found in the DWARF Version 2 document
+made in 
+\addtoindex{DWARF Version 2}
+compared to the DWARF Version 1 may
+be found in the 
+\addtoindex{DWARF Version 2}
+document
 }
 
 }
 
index 636e5bb..db3fa3f 100644 (file)
@@ -240,7 +240,8 @@ object code. The matrix would have columns for:}
 \textit{Such a matrix, however, would be impractically large. We
 shrink it with two techniques. First, we delete from
 the matrix each row whose file, line, source column and
 \textit{Such a matrix, however, would be impractically large. We
 shrink it with two techniques. First, we delete from
 the matrix each row whose file, line, source column and
-discriminator information is identical with that of its
+\addtoindex{discriminator} information 
+is identical with that of its
 predecessors. Any deleted row would never be the beginning of
 a source statement. Second, we design a byte\dash coded language
 for a state machine and store a stream of bytes in the object
 predecessors. Any deleted row would never be the beginning of
 a source statement. Second, we design a byte\dash coded language
 for a state machine and store a stream of bytes in the object
@@ -310,7 +311,7 @@ registers:
 The program\dash counter value corresponding to a machine instruction
 generated by the compiler. \\
 
 The program\dash counter value corresponding to a machine instruction
 generated by the compiler. \\
 
-op\_index &
+\addtoindex{op\_index} &
 An unsigned integer representing the index of an operation within a VLIW
 instruction. The index of the first operation is 0. For non\dash VLIW
 architectures, this register will always be 0.
 An unsigned integer representing the index of an operation within a VLIW
 instruction. The index of the first operation is 0. For non\dash VLIW
 architectures, this register will always be 0.
@@ -320,47 +321,47 @@ pointer that can reference any individual operation with the instruction
 stream. \\
 
 
 stream. \\
 
 
-file &
+\addtoindex{file} &
 An unsigned integer indicating the identity of the source file
 corresponding to a machine instruction. \\
 
 An unsigned integer indicating the identity of the source file
 corresponding to a machine instruction. \\
 
-line &
+\addtoindex{line} &
 An unsigned integer indicating a source line number. Lines are numbered
 beginning at 1. The compiler may emit the value 0 in cases where an
 instruction cannot be attributed to any source line. \\
 
 An unsigned integer indicating a source line number. Lines are numbered
 beginning at 1. The compiler may emit the value 0 in cases where an
 instruction cannot be attributed to any source line. \\
 
-column &
+\addtoindex{column} &
 An unsigned integer indicating a column number within a source line.
 Columns are numbered beginning at 1. The value 0 is reserved to indicate
 that a statement begins at the ``left edge'' of the line. \\
 
 An unsigned integer indicating a column number within a source line.
 Columns are numbered beginning at 1. The value 0 is reserved to indicate
 that a statement begins at the ``left edge'' of the line. \\
 
-is\_stmt &
+\addtoindex{is\_stmt} &
 A boolean indicating that the current instruction is a recommended
 breakpoint location. A recommended breakpoint location 
 is intended to ``represent'' a line, a 
 statement and/or a semantically distinct subpart of a
 statement. \\
 
 A boolean indicating that the current instruction is a recommended
 breakpoint location. A recommended breakpoint location 
 is intended to ``represent'' a line, a 
 statement and/or a semantically distinct subpart of a
 statement. \\
 
-basic\_block  &
+\addtoindex{basic\_block}  &
 A boolean indicating that the current instruction is the beginning of a
 \addtoindex{basic block}. \\
 
 A boolean indicating that the current instruction is the beginning of a
 \addtoindex{basic block}. \\
 
-end\_sequence &
+\addtoindex{end\_sequence} &
 A boolean indicating that the current address is that of the first byte after
 the end of a sequence of target machine instructions. end\_sequence
 terminates a sequence of lines; therefore other information in the same
 row is not meaningful. \\
 
 A boolean indicating that the current address is that of the first byte after
 the end of a sequence of target machine instructions. end\_sequence
 terminates a sequence of lines; therefore other information in the same
 row is not meaningful. \\
 
-prologue\_end &
+\addtoindex{prologue\_end} &
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an entry breakpoint of a
 function. \\
 
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an entry breakpoint of a
 function. \\
 
-epilogue\_begin &
+\addtoindex{epilogue\_begin} &
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an exit breakpoint of a function. \\
 
 A boolean indicating that the current address is one (of possibly many)
 where execution should be suspended for an exit breakpoint of a function. \\
 
-isa &
+\addtoindex{isa} &
 An unsigned integer whose value encodes the applicable
 instruction set architecture for the current instruction.
 The encoding of instruction sets should be shared by all
 An unsigned integer whose value encodes the applicable
 instruction set architecture for the current instruction.
 The encoding of instruction sets should be shared by all
@@ -368,7 +369,7 @@ users of a given architecture. It is recommended that this
 encoding be defined by the ABI authoring committee for each
 architecture. \\
 
 encoding be defined by the ABI authoring committee for each
 architecture. \\
 
-discriminator &
+\addtoindex{discriminator} &
 An unsigned integer identifying the block to which the
 current instruction belongs. Discriminator values are assigned
 arbitrarily by the DWARF producer and serve to distinguish
 An unsigned integer identifying the block to which the
 current instruction belongs. Discriminator values are assigned
 arbitrarily by the DWARF producer and serve to distinguish
@@ -511,8 +512,13 @@ The number assigned to the first special opcode.
 
 \textit{Opcode base is typically one greater than the highest-numbered
 standard opcode defined for the specified version of the line
 
 \textit{Opcode base is typically one greater than the highest-numbered
 standard opcode defined for the specified version of the line
-number information (12 in DWARF Version 3 and Version 4, 9 in
-Version 2).  If opcode\_base is less than the typical value,
+number information (12 in 
+\addtoindex{DWARF Version 3} and 
+\addtoindexx{DWARF Version 4}
+Version 4, 9 in
+\addtoindexx{DWARF Version 2}
+Version 2).  
+If opcode\_base is less than the typical value,
 then standard opcode numbers greater than or equal to the
 opcode base are not used in the line number table of this unit
 (and the codes are treated as special opcodes). If opcode\_base
 then standard opcode numbers greater than or equal to the
 opcode base are not used in the line number table of this unit
 (and the codes are treated as special opcodes). If opcode\_base
@@ -629,7 +635,7 @@ of the state machine registers.
 \item  Set the basic\_block register to ``false.'' \addtoindexx{basic block}
 \item  Set the prologue\_end register to ``false.''
 \item  Set the epilogue\_begin register to ``false.''
 \item  Set the basic\_block register to ``false.'' \addtoindexx{basic block}
 \item  Set the prologue\_end register to ``false.''
 \item  Set the epilogue\_begin register to ``false.''
-\item  Set the discriminator register to 0.
+\item  Set the \addtoindex{discriminator} register to 0.
 
 \end{enumerate}
 
 
 \end{enumerate}
 
@@ -717,7 +723,8 @@ new op\_index =
 
 \textit{When the maximum\_operations\_per\_instruction field is 1,
 op\_index is always 0 and these calculations simplify to those
 
 \textit{When the maximum\_operations\_per\_instruction field is 1,
 op\_index is always 0 and these calculations simplify to those
-given for addresses in DWARF Version 3.}
+given for addresses in 
+\addtoindex{DWARF Version 3}.}
 
 The amount to increment the line register is the line\_base plus
 the result of the adjusted opcode modulo the line\_range. That
 
 The amount to increment the line register is the line\_base plus
 the result of the adjusted opcode modulo the line\_range. That
@@ -784,14 +791,16 @@ actions performed by these opcodes are as follows:
 \item \textbf{DW\-\_LNS\-\_copy} \\
 The \livetarg{chap:DWLNScopy}{DW\-\_LNS\-\_copy} opcode takes no operands. It appends a row
 to the matrix using the current values of the state machine
 \item \textbf{DW\-\_LNS\-\_copy} \\
 The \livetarg{chap:DWLNScopy}{DW\-\_LNS\-\_copy} opcode takes no operands. It appends a row
 to the matrix using the current values of the state machine
-registers. Then it sets the discriminator register to 0,
-and sets the basic\_block, prologue\_end and epilogue\_begin
+registers. Then it sets the \addtoindex{discriminator} register to 0,
+and sets the \addtoindex{basic\_block}, 
+\addtoindex{prologue\_end} and 
+\addtoindex{epilogue\_begin}
 registers to ``false.''
 
 \item \textbf{DW\-\_LNS\-\_advance\-\_pc} \\
 The \livetarg{chap:DWLNSadvancepc}{DW\-\_LNS\-\_advance\-\_pc} opcode takes a single unsigned LEB128
 operand as the operation advance and modifies the address
 registers to ``false.''
 
 \item \textbf{DW\-\_LNS\-\_advance\-\_pc} \\
 The \livetarg{chap:DWLNSadvancepc}{DW\-\_LNS\-\_advance\-\_pc} opcode takes a single unsigned LEB128
 operand as the operation advance and modifies the address
-and op\_index registers as specified in 
+and \addtoindex{op\_index} registers as specified in 
 Section \refersec{chap:specialopcodes}.
 
 \item \textbf{DW\-\_LNS\-\_advance\-\_line} \\
 Section \refersec{chap:specialopcodes}.
 
 \item \textbf{DW\-\_LNS\-\_advance\-\_line} \\
@@ -983,7 +992,7 @@ in the file register of the state machine.
 The \livetarg{chap:DWLNEsetdiscriminator}{DW\-\_LNE\-\_set\-\_discriminator}
 opcode takes a single
 parameter, an unsigned LEB128 integer. It sets the
 The \livetarg{chap:DWLNEsetdiscriminator}{DW\-\_LNE\-\_set\-\_discriminator}
 opcode takes a single
 parameter, an unsigned LEB128 integer. It sets the
-discriminator register to the new value.
+\addtoindex{discriminator} register to the new value.
 
 
 
 
 
 
index abba05b..b493c89 100644 (file)
@@ -70,8 +70,13 @@ attributes:
 
 \begin{enumerate}[1]
 \item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
 
 \begin{enumerate}[1]
 \item Either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
-attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose values encode the
-contiguous or non\dash contiguous address ranges, respectively,
+attributes or a 
+\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+whose values encode 
+\addtoindexx{discontiguous address ranges|see{non-contiguous address ranges}}
+the
+contiguous or 
+non\dash contiguous address ranges, respectively,
 of the machine instructions generated for the compilation
 unit (see Section {chap:codeaddressesandranges}).  
 A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute may also
 of the machine instructions generated for the compilation
 unit (see Section {chap:codeaddressesandranges}).  
 A \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} attribute may also
index f5aa204..e57ce75 100644 (file)
@@ -58,9 +58,9 @@ and \addtoindex{.debug\_types} section version number.
 Notes:
 
 \begin{itemize}
 Notes:
 
 \begin{itemize}
-\item  ``V2'' means DWARF Version 2, published July 1993.
-\item  ``V3'' means DWARF Version 3, published December 2005.
-\item  ``V4'' means DWARF Version 4, published June 2010.
+\item  ``V2'' means \addtoindex{DWARF Version 2}, published July 1993.
+\item  ``V3'' means \addtoindex{DWARF Version 3}, published December 2005.
+\item  ``V4'' means \addtoindex{DWARF Version 4}, published June 2010.
 \item  ``-'' means that a version number is not applicable
 (the section's header does not include a version).
 
 \item  ``-'' means that a version number is not applicable
 (the section's header does not include a version).
 
index 6358333..09cd93f 100644 (file)
@@ -94,7 +94,8 @@ is
 \addtoindexx{bit offset attribute}
 new 
 \addtoindexx{data bit offset attribute}
 \addtoindexx{bit offset attribute}
 new 
 \addtoindexx{data bit offset attribute}
-in DWARF Version 4 and
+in 
+\addtoindex{DWARF Version 4} and
 is also used for bit field members 
 (see Section \refersec{chap:datamemberentries}). 
 It
 is also used for bit field members 
 (see Section \refersec{chap:datamemberentries}). 
 It
@@ -109,11 +110,14 @@ big\dash endian architectures but which is wasteful for use on
 little\dash endian architectures.}
 
 \textit{The attribute \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} is 
 little\dash endian architectures.}
 
 \textit{The attribute \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} is 
-deprecated in DWARF Version
-4 for use in base types, but implementations may continue to
+deprecated in 
+\addtoindex{DWARF Version 4}
+for use in base types, but implementations may continue to
 support its use for compatibility.}
 
 support its use for compatibility.}
 
-\textit{The DWARF Version 3 definition of these attributes is as follows.}
+\textit{The 
+\addtoindex{DWARF Version 3}
+definition of these attributes is as follows.}
 
 \begin{myindentpara}{1cm}
 \textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
 
 \begin{myindentpara}{1cm}
 \textit{A base type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
@@ -137,7 +141,12 @@ high order bit of a value of the given type from the high
 order bit of the storage unit used to contain that value.}
 \end{myindentpara}
 
 order bit of the storage unit used to contain that value.}
 \end{myindentpara}
 
-\textit{In comparing DWARF Versions 3 and 4, note that DWARF V4
+\textit{In comparing 
+DWARF Versions 3 
+\addtoindexx{DWARF Version 3}
+and 
+\addtoindexx{DWARF Version 4} and 
+4, note that DWARF V4
 defines the following combinations of attributes:}
 
 \begin{itemize}
 defines the following combinations of attributes:}
 
 \begin{itemize}
@@ -147,7 +156,9 @@ defines the following combinations of attributes:}
 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} 
 and optionally \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}}
 \end{itemize}
 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} 
 and optionally \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}}
 \end{itemize}
-DWARF V3 defines the following combinations:
+DWARF V3 
+\addtoindexx{DWARF Version 3}
+defines the following combinations:
 % FIXME: the figure below interferes with the following
 % bullet list, which looks horrible as a result.
 \begin{itemize}
 % FIXME: the figure below interferes with the following
 % bullet list, which looks horrible as a result.
 \begin{itemize}
@@ -1126,7 +1137,9 @@ and arrays, see
 Appendix \refersec{app:pascalexample}.}
 
 \textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} 
 Appendix \refersec{app:pascalexample}.}
 
 \textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} 
-is new in DWARF Version 4 and is also used for base types 
+is new in 
+\addtoindex{DWARF Version 4}
+and is also used for base types 
 (see Section 
 \refersec{chap:basetypeentries}). 
 It replaces the
 (see Section 
 \refersec{chap:basetypeentries}). 
 It replaces the
@@ -1148,7 +1161,9 @@ attribute combination is deprecated for data members in DWARF
 Version 4, but implementations may continue to support this
 use for compatibility.}
 
 Version 4, but implementations may continue to support this
 use for compatibility.}
 
-\textit{The DWARF Version 3 definitions of these attributes are
+\textit{The 
+\addtoindex{DWARF Version 3} 
+definitions of these attributes are
 as follows.}
 
 \begin{myindentpara}{1cm}
 as follows.}
 
 \begin{myindentpara}{1cm}
@@ -1198,9 +1213,15 @@ the bit field is the value of the bit offset attribute.}
 \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, 
 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and 
 \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute
 \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, 
 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and 
 \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} attribute
-combination may be found in the DWARF Version 3 Standard.}
+combination may be found in the 
+\addtoindex{DWARF Version 3} Standard.}
 
 
-\textit{In comparing DWARF Versions 3 and 4, note that DWARF V4
+\textit{In comparing 
+DWARF Versions 3 
+\addtoindexx{DWARF Version 3}
+and 
+\addtoindexx{DWARF Version 4}
+4, note that DWARF V4
 defines the following combinations of attributes:}
 
 \begin{itemize}
 defines the following combinations of attributes:}
 
 \begin{itemize}
@@ -1399,11 +1420,15 @@ owned by the corresponding structure type entry.
 
 If the variant part has a discriminant, the discriminant is
 \hypertarget{chap:DWATdiscrdiscriminantofvariantpart}
 
 If the variant part has a discriminant, the discriminant is
 \hypertarget{chap:DWATdiscrdiscriminantofvariantpart}
-represented by a separate debugging information entry which
+represented by a 
+\addtoindexx{discriminant (entry)}
+separate debugging information entry which
 is a child of the variant part entry. This entry has the form
 of a structure data member entry. The variant part entry will
 is a child of the variant part entry. This entry has the form
 of a structure data member entry. The variant part entry will
+\addtoindexx{discriminant attribute}
 have a 
 have a 
-\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr} attribute whose value is a reference to
+\livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr} attribute 
+whose value is a reference to
 the member entry for the discriminant.
 
 If the variant part does not have a discriminant (tag field),
 the member entry for the discriminant.
 
 If the variant part does not have a discriminant (tag field),
@@ -1427,7 +1452,9 @@ an unsigned type.
 
 Alternatively, 
 \hypertarget{chap:DWATdiscrlistlistofdiscriminantvalues}
 
 Alternatively, 
 \hypertarget{chap:DWATdiscrlistlistofdiscriminantvalues}
-the variant entry may contain a 
+the variant entry may contain 
+\addtoindexx{discriminant list attribute}
+a 
 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
 attribute, whose value represents a list of discriminant
 values. This list is represented by any of the 
 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
 attribute, whose value represents a list of discriminant
 values. This list is represented by any of the 
@@ -1436,7 +1463,9 @@ may contain a mixture of case labels and label ranges. Each
 item on the list is prefixed with a discriminant value
 descriptor that determines whether the list item represents
 a single label or a label range. A single case label is
 item on the list is prefixed with a discriminant value
 descriptor that determines whether the list item represents
 a single label or a label range. A single case label is
-represented as an LEB128 number as defined above for the
+represented as an LEB128 number as defined above for 
+\addtoindexx{discriminant value attribute}
+the
 \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} 
 attribute. A label range is represented by
 two LEB128 numbers, the low value of the range followed by the
 \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value} 
 attribute. A label range is represented by
 two LEB128 numbers, the low value of the range followed by the