compression.tex
[dwarf-doc.git] / dwarf5 / latexdoc / generaldescription.tex
index 11a972d..154bd7d 100644 (file)
@@ -2,7 +2,11 @@
 \label{chap:generaldescription}
 \section{The Debugging Entry (DIE)}
 \label{chap:thedebuggingentrydie}
-DWARF uses a series of debugging information entries (DIEs) to 
+DWARF 
+\addtoindexx{debugging information entry}
+uses 
+\addtoindexx{DIE|see{debugging information entry}}
+a series of debugging information entries (DIEs) to 
 define a low-level
 representation of a source program. 
 Each debugging information entry consists of an identifying
@@ -27,7 +31,8 @@ debugging information entries, are described in
 this section and not necessarily mentioned in all
 contexts where they may be appropriate. 
 Examples include \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}, the declaration
-coordinates, and \livelink{chap:DWATdescription}{DW\-\_AT\-\_description}, among others.
+coordinates, and 
+\livelink{chap:DWATdescription}{DW\-\_AT\-\_description}, among others.
 
 The debugging information entries are contained 
 in the \addtoindex{.debug\_info} and 
@@ -434,6 +439,7 @@ string table.
 \label{chap:relationshipofdebugginginformationentries}
 \textit{%
 A variety of needs can be met by permitting a single
+\addtoindexx{debugging information entry!ownership relation}
 debugging information entry to “own” an arbitrary number
 of other debugging entries and by permitting the same debugging
 information entry to be one of many owned by another debugging
@@ -447,7 +453,9 @@ with shared objects.
 }
 
 
-The ownership relation of debugging
+The ownership relation 
+\addtoindexx{debugging information entry!ownership relation}
+of debugging
 information entries is achieved naturally because the debugging
 information is represented as a tree. 
 The nodes of the tree
@@ -546,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
-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}
-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.
@@ -591,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
+\addtoindexx{DWARF expression!register based addressing}
 the result of adding the contents of a register to a given
 signed offset.
 
@@ -621,7 +637,9 @@ a signed LEB128 offset.
 
 \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.
 
@@ -768,7 +786,11 @@ space efficient to reference that.
 \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
@@ -853,7 +875,9 @@ pushes the result.
 
 \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:
@@ -938,7 +962,9 @@ by prior agreement between the calling and called expressions.
 
 
 \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
@@ -946,7 +972,9 @@ on the location stack or any of its values.
 
 \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.
@@ -1614,8 +1642,11 @@ value of the variable x passed to the function g is the value of the
 global variable x rather than of the local version.}
 
 \subsection{Non-Defining Declarations}
-A debugging information entry that represents a non-defining or otherwise incomplete
-declaration of a program entity has a 
+A debugging information entry that 
+represents a non-defining or otherwise incomplete
+declaration of a program entity has 
+\addtoindexx{declaration attribute}
+a 
 \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
 attribute, which is a 
 \livelink{chap:flag}{flag}.
@@ -1637,9 +1668,12 @@ It is not the case that all attributes of the debugging information entry refere
 \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
 apply to the referring debugging information entry.
 
-\textit{For example,
+\textit{For 
+\addtoindexx{declaration attribute}
+example,
 \livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} and 
 \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
+\addtoindexx{declaration attribute}
 clearly cannot apply to a referring
 entry.}
 
@@ -1647,7 +1681,9 @@ entry.}
 
 \section{Declaration Coordinates}
 \label{chap:declarationcoordinates}
-\textit{It is sometimes useful in a debugger to be able to associate
+\textit{It is 
+\addtoindexx{declaration coordinates}
+sometimes useful in a debugger to be able to associate
 a declaration with its occurrence in the program source.
 }
 
@@ -1658,11 +1694,23 @@ entry
 representing 
 \hypertarget{chap:DWATdeclcolumncolumnpositionofsourcedeclaration}
 the
-declaration of an object, module, subprogram or type may have
-\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} and \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
+declaration of an object, module, subprogram or
+\addtoindex{declaration column attribute}
+type 
+\addtoindex{declaration file attribute}
+may 
+\addtoindex{declaration line attribute}
+have
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, 
+\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} and 
+\livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
 attributes each of whose value is an unsigned integer constant.
 
-The value of the \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file} attribute corresponds to
+The value of 
+\addtoindex{declaration file attribute}
+the 
+\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}
+attribute corresponds to
 a file number from the line number information table for the
 compilation unit containing the debugging information entry and
 represents the source file in which the declaration appeared
@@ -1670,12 +1718,16 @@ represents the source file in which the declaration appeared
 The value 0 indicates that no source file
 has been specified.
 
-The value of the \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} attribute represents
+The value of 
+\addtoindex{declaration line attribute}
+the \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} attribute represents
 the source line number at which the first character of
 the identifier of the declared object appears. The value 0
 indicates that no source line has been specified.
 
-The value of the \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attribute represents
+The value of 
+\addtoindex{declaration column attribute}
+the \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attribute represents
 the source column number at which the first character of
 the identifier of the declared object appears. The value 0
 indicates that no column has been specified.
@@ -1713,10 +1765,15 @@ may have a
 \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
+\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.  
@@ -1763,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
-\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}
@@ -1947,7 +2005,9 @@ entry that
 \hypertarget{chap:DWATdescriptionartificialnameordescription}
 has, or may have, a 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, may
-also have a 
+also have 
+\addtoindexx{description attribute}
+a 
 \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute whose value is a
 null-terminated string providing a description of the entity.