This indexes letters f, g, and h.
[dwarf-doc.git] / dwarf5 / latexdoc / typeentries.tex
index 992e10b..a4b5e52 100644 (file)
@@ -16,7 +16,9 @@ Section \refersec{chap:dataobjectentries}.
 \label{chap:basetypeentries}
 
 \textit{A base type is a data type that is not defined in terms of
-other data types. Each programming language has a set of base
+other data types. 
+\addtoindexx{fundamental type|see{base type entry}}
+Each programming language has a set of base
 types that are considered to be built into that language.}
 
 A base type is represented by a debugging information entry
@@ -29,7 +31,9 @@ a null\dash terminated string containing the name of the base type
 as recognized by the programming language of the compilation
 unit containing the base type entry.
 
-A base type entry has a \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute describing
+A base type entry has 
+\addtoindexx{encoding attribute}
+a \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute describing
 how the base type is encoded and is to be interpreted. The
 value of this attribute is an integer constant. The set of
 values and their meanings for the \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} attribute
@@ -94,7 +98,8 @@ is
 \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
@@ -109,11 +114,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 
-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.}
 
-\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}
@@ -137,7 +145,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}
 
-\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}
@@ -147,7 +160,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}
-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}
@@ -368,7 +383,6 @@ indicating positive or negative. \\
 \addtoindexx{void type|see{unspecified type entry}}
 Some languages have constructs in which a type 
 may be left unspecified or the absence of a type
-
 may be explicitly indicated.
 
 An unspecified (implicit, unknown, ambiguous or nonexistent)
@@ -475,14 +489,12 @@ rvalue reference to an object of the type being modified
 \label{fig:typemodifiertags}
 \end{figure}
 
-% The following prevents splitting the examples up.
-% FIXME perhaps there is a better way. We could box the verbatim, 
-% see memman.pdf on verbatims.
+%The following clearpage prevents splitting the example across pages.
 \clearpage
-\textit{As examples of how tye modifiers are ordered, take the following C
+\textit{As examples of how type modifiers are ordered, take the following C
 declarations:}
 
-\begin{verbatim}
+\begin{alltt}
 const unsigned char * volatile p;
     which represents a volatile pointer to a constant
     character. This is encoded in DWARF as:
@@ -502,7 +514,7 @@ volatile unsigned char * const restrict p;
                         \livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type} -->
                             \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}(unsigned char)
 
-\end{verbatim}
+\end{alltt}
 
 \section{Typedef Entries}
 \label{chap:typedefentries}
@@ -608,7 +620,9 @@ the number of array elements by the size of each element.}
 
 
 Each array dimension is described by a debugging information
-entry with either the tag \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} or the tag
+entry with either the tag \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} or the 
+\addtoindexx{enumeration type entry!as array dimension}
+tag
 \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}. These entries are
 children of the
 array type entry and are ordered to reflect the appearance of
@@ -700,6 +714,7 @@ to hold an instance of the structure, union or class type,
 including any padding.  An incomplete structure, union or
 class type is represented by a structure, union or class
 entry that does not have a byte size attribute and that has
+\addtoindexx{declaration attribute}
 a \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute.
 
 If the complete declaration of a type has been placed in
@@ -791,8 +806,12 @@ declarations in the source program.
 \subsection{Derived or Extended Structs, Classes and Interfaces}
 \label{chap:derivedorextendedstructsclasesandinterfaces}
 
-\textit{In \addtoindex{C++}, a class (or struct) may be ``derived from'' or be a
+\textit{In \addtoindex{C++}, a class (or struct) 
+may 
+\addtoindexx{derived type (C++)|see{inheritance entry}}
+be ``derived from'' or be a
 ``subclass of'' another class. In Java, an interface may ``extend''
+\addtoindexx{extended type (Java)|see{inheritance entry}}
 one or more other interfaces, and a class may ``extend'' another
 class and/or ``implement'' one or more interfaces. All of these
 relationships may be described using the following. Note that
@@ -888,14 +907,18 @@ entities.
 \subsection{Friends}
 \label{chap:friends}
 
-Each ``friend'' declared by a structure, union or class
+Each ``friend'' 
+\addtoindexx{friend entry}
+declared by a structure, union or class
 \hypertarget{chap:DWATfriendfriendrelationship}
 type may be represented by a debugging information entry
 that is a child of the structure, union or class type entry;
 the friend entry has the 
 tag \livetarg{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}.
 
-A friend entry has a \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute, whose value is
+A friend entry has 
+\addtoindexx{friend attribute}
+a \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute, whose value is
 a reference to the debugging information entry describing
 the declaration of the friend.
 
@@ -1122,7 +1145,9 @@ and arrays, see
 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
@@ -1144,7 +1169,9 @@ attribute combination is deprecated for data members in DWARF
 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}
@@ -1194,9 +1221,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
-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}
@@ -1259,7 +1292,9 @@ then that entry has a
 If 
 \hypertarget{chap:DWATexplicitexplicitpropertyofmemberfunction}
 the member function entry describes an explicit member
-function, then that entry has a 
+function, then that entry has 
+\addtoindexx{explicit attribute}
+a 
 \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit} attribute.
 
 An 
@@ -1395,11 +1430,15 @@ owned by the corresponding structure type entry.
 
 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
+\addtoindexx{discriminant attribute}
 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),
@@ -1423,7 +1462,9 @@ an unsigned type.
 
 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 
@@ -1432,7 +1473,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
-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
@@ -1481,7 +1524,10 @@ giving the condition name as it appears in the source program.
 The condition entry's parent entry describes the conditional
 variable; normally this will be a \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable},
 \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member} or 
-\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} entry. If the parent
+\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} entry.
+If 
+\addtoindexx{formal parameter entry}
+the parent
 entry has an array type, the condition can test any individual
 element, but not the array as a whole. The condition entry
 implicitly specifies a “comparison type” that is the
@@ -1524,11 +1570,13 @@ in the source program. This entry also has a \livelink{chap:DWATbytesize}{DW\-\_
 attribute whose integer constant value is the number of bytes
 required to hold an instance of the enumeration.
 
-The enumeration type entry may have a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
+The \addtoindex{enumeration type entry}
+may have a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
 which refers to the underlying data type used to implement
 the enumeration.
 
-If an enumeration type has type safe semantics such that
+If an enumeration type has type safe 
+semantics such that
 
 \begin{enumerate}[1.]
 \item Enumerators are contained in the scope of the enumeration type, and/or
@@ -1536,7 +1584,9 @@ If an enumeration type has type safe semantics such that
 \item Enumerators are not implicitly converted to another type
 \end{enumerate}
 
-then the enumeration type entry may have a \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
+then the \addtoindex{enumeration type entry} may 
+\addtoindexx{enum class|see{type-safe enumeration}}
+have a \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
 attribute, which is a \livelink{chap:flag}{flag}. 
 In a language that offers only
 one kind of enumeration declaration, this attribute is not
@@ -1546,20 +1596,23 @@ required.
 the underlying type will be the appropriate
 integral type determined by the compiler from the properties of
 \hypertarget{chap:DWATenumclasstypesafeenumerationdefinition}
-the enumeration literal values. A \addtoindex{C++} type declaration written
+the enumeration literal values. 
+A \addtoindex{C++} type declaration written
 using enum class declares a strongly typed enumeration and
 is represented using \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type} 
 in combination with \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}.}
 
 Each enumeration literal is represented by a debugging
+\addtoindexx{enumeration literal|see{enumeration entry}}
 information entry with the 
 tag \livetarg{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}. 
 Each
-such entry is a child of the enumeration type entry, and the
+such entry is a child of the 
+\addtoindex{enumeration type entry}, and the
 enumerator entries appear in the same order as the declarations
 of the enumeration literals in the source program.
 
-Each enumerator entry has a 
+Each \addtoindex{enumerator entry} has a 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose
 value is a null\dash terminated string containing the name of the
 \hypertarget{chap:DWATconstvalueenumerationliteralvalue}
@@ -1571,6 +1624,7 @@ represented on the target system.
 
 
 If the enumeration type occurs as the description of a
+\addtoindexx{enumeration type endry!as array dimension}
 dimension of an array type, and the stride for that dimension
 \hypertarget{chap:DWATbytestrideenumerationstridedimensionofarraytype}
 is different than what would otherwise be determined, then
@@ -1665,7 +1719,8 @@ tag \livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_param
 
 A ``string'' is a sequence of characters that have specific
 semantics and operations that separate them from arrays of
-characters. Fortran is one of the languages that has a string
+characters. 
+\addtoindex{Fortran} is one of the languages that has a string
 type. Note that ``string'' in this context refers to a target
 machine concept, not the class string as used in this document
 (except for the name attribute).
@@ -1932,7 +1987,9 @@ given in the type of mbr\_ptr.}
 files.}
 
 A file type is represented by a debugging information entry
-with the 
+with 
+\addtoindexx{file type entry}
+the 
 \livetarg{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}. 
 If the file type has a name,
 the file type entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, whose value
@@ -1964,7 +2021,10 @@ about the data that represents the value for that object.}
 \hypertarget{chap:DWATdatalocationindirectiontoactualdata}
 The \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} 
 attribute may be used with any
-type that provides one or more levels of hidden indirection
+\addtoindexx{data location attribute}
+type that provides one or more levels of 
+\addtoindexx{hidden indirection|see{data location attribute}}
+hidden indirection
 and/or run\dash time parameters in its representation. Its value
 is a location description. The result of evaluating this
 description yields the location of the data for an object.
@@ -1977,13 +2037,14 @@ which loads the address of the
 object which can then serve as a descriptor in subsequent
 calculation. For an example using 
 \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} 
-for a Fortran 90 array, see 
+for a \addtoindex{Fortran 90 array}, see 
 Appendix \refersec{app:fortran90example}.}
 
 \subsection{Allocation and Association Status}
 \label{chap:allocationandassociationstatus}
 
-\textit{Some languages, such as Fortran 90, provide types whose values
+\textit{Some languages, such as \addtoindex{Fortran 90},
+provide types whose values
 may be dynamically allocated or associated with a variable
 under explicit program control.}
 
@@ -2012,8 +2073,9 @@ indicates that objects of the type can be associated. The
 integer value of the attribute (see below) indicates whether
 an object of the type is currently associated or not.
 
-While these attributes are defined specifically with Fortran
-90 ALLOCATABLE and POINTER types in mind, usage is not limited
+While these attributes are defined specifically with 
+\addtoindex{Fortran 90} ALLOCATABLE and POINTER types
+in mind, usage is not limited
 to just that language.
 
 The value of these attributes is determined as described in
@@ -2022,7 +2084,7 @@ Section \refersec{chap:staticanddynamicvaluesofattributes}.
 A non\dash zero value is interpreted as allocated or associated,
 and zero is interpreted as not allocated or not associated.
 
-\textit{For \addtoindex{Fortran} 90
+\textit{For \addtoindex{Fortran 90}
 if the \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} 
 attribute is present,
 the type has the POINTER property where either the parent
@@ -2039,7 +2101,7 @@ pointer assignment.}
 
 \textit{For examples using 
 \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} for \addtoindex{Ada} and 
-\addtoindex{Fortran} 90
+\addtoindex{Fortran 90}
 arrays, 
 see Appendix \refersec{app:aggregateexamples}.}