Indexing letter 's'.
authorDavid Anderson <davea42@earthlink.net>
Mon, 3 Dec 2012 16:19:40 +0000 (08:19 -0800)
committerDavid Anderson <davea42@earthlink.net>
Mon, 3 Dec 2012 16:19:40 +0000 (08:19 -0800)
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/introduction.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 32931ad..2e2cf5c 100644 (file)
@@ -76,7 +76,9 @@ contain sections as in:
 \end{alltt}
 
 followed (or preceded, the order is not significant) 
-by a series of section groups:
+by a series of 
+\addtoindexx{section group}
+section groups:
 \begin{alltt}
 ==== Section group 1
     \addtoindex{.debug\_info}
@@ -89,10 +91,11 @@ by a series of section groups:
     \addtoindex{.debug\_line}
 \end{alltt}
 
-where each section group might or might not contain executable
+where each \addtoindex{section group} might or might not contain executable
 code (\textit{.text} sections) or data (\textit{.data} sections).
 
-A \textit{section group} is a named set of section contributions
+A \textit{\addtoindex{section group}} is a named set 
+of section contributions
 within an object file with the property that the entire set
 of section contributions must be retained or discarded as a
 whole; no partial elimination is allowed. Section groups can
@@ -100,30 +103,39 @@ generally be handled by a linker in two ways:
 
 \begin{enumerate}[1.]
 \item Given multiple identical (duplicate) section groups,
+\addtoindexx{section group}
 one of them is chosen to be kept and used, while the rest
 are discarded.
 
-\item Given a section group that is not referenced from any
-section outside of the section group, the section group
+\item Given a \addtoindex{section group} 
+that is not referenced from any
+section outside of the \addtoindex{section group}, 
+the section group
 is discarded.
 
 
 \end{enumerate}
 
 
-Which handling applies may be indicated by the section group
+Which handling applies may be indicated by the 
+\addtoindex{section group}
 itself and/or selection of certain linker options.
 
-For example, if a linker determines that section group 1
-from A.o and section group 3 from B.o are identical, it could
+For example, if a linker determines that 
+\addtoindex{section group} 1
+from A.o and 
+\addtoindex{section group} 3 from B.o are identical, it could
 discard one group and arrange that all references in A.o and
 B.o apply to the remaining one of the two identical section
 groups. This saves space.
 
 An important part of making it possible to “redirect”
-references to the surviving section group is the use of
+references to the surviving 
+\addtoindex{section group} is the use of
 consistently chosen linker global symbols for referring to
-locations within each section group. It follows that references
+locations within each 
+\addtoindex{section group}.
+It follows that references
 are simply to external names and the linker already knows
 how to match up references and definitions.
 
@@ -141,20 +153,22 @@ compilation unit to another
 \item A means of having multiple contributions to specific sections
 (for example, \addtoindex{.debug\_info}, and so on) in a single object file.
 
-\item  A means of identifying a section group (giving it a name).
+\item  A means of identifying a \addtoindex{section group} (giving it a name).
 
 \item A means of identifying which sections go together to make
-up a section group, so that the group can be treated as a unit
+up a \addtoindex{section group}, 
+so that the group can be treated as a unit
 (kept or discarded).
 
-\item  A means of indicating how each section group should be
+\item  A means of indicating how each \addtoindex{section group} should be
 processed by the linker.
 
 \end{enumerate}
 
 \textit{The notion of section and section contribution used here
 corresponds closely to the similarly named concepts in the
-ELF object file representation. The notion of section group is
+ELF object file representation. 
+The notion of \addtoindex{section group} is
 an abstraction of common extensions of the ELF representation
 widely known as ``COMDATs'' or ``COMDAT sections''. (Other
 object file representations provide COMDAT\dash style mechanisms as
@@ -185,7 +199,9 @@ Section \refersec{app:examples}.
 
 \textbf{Section Group Names}
 
-Section groups must have a section group name. For the subsequent 
+Section groups must have a \addtoindex{section group} name.
+\addtoindexx{section group!name}
+For the subsequent 
 \addtoindex{C++} example, a name like
 
 <producer-prefix>.<file-designator>.<gid-number>
@@ -229,9 +245,12 @@ generates a different
 \textless gid\dash number \textgreater
 as a kind
 of ``digital signature'' that allows a fast test for the
-equality of two section groups.}
+equality of two 
+\addtoindexx{section group}
+section groups.}
 
-So, for example, the section group corresponding to file wa.h
+So, for example, the \addtoindex{section group} 
+corresponding to file wa.h
 above is given the name \textit{my.compiler.company.cpp.wa.h.123456}.
 
 
@@ -241,7 +260,8 @@ above is given the name \textit{my.compiler.company.cpp.wa.h.123456}.
 Global labels for 
 \addtoindexx{debugging information entry!ownership relation}
 debugging information entries (need explained
-below) within a section group can be given names of the form
+below) within a \addtoindex{section group}
+can be given names of the form
 
 \begin{alltt}
     <prefix>.<file-designator>.<gid-number>.<die-number>
@@ -270,7 +290,9 @@ during compilation.
 
 \end{itemize}
 
-In general, every point in the section group 
+In general, every point in the 
+\addtoindexx{section group}
+section group 
 \addtoindex{.debug\_info} that
 could be referenced from outside by any compilation unit must
 normally have an external name generated for it in the linker
@@ -288,13 +310,15 @@ distinct
 \textless gid\dash number \textgreater
 is generated.
 
-Note that only section groups that are designated as
+Note that only 
+\addtoindexx{section group}
+section groups that are designated as
 duplicate\dash removal\dash applies actually require the
 \begin{alltt}
     <prefix>.<file-designator>.<gid-number>.<die-number>
 \end{alltt}
 external labels for debugging information entries as all other
-section group sections can use 'local' labels 
+\addtoindex{section group} sections can use 'local' labels 
 (section\dash relative
 relocations).
 
@@ -316,7 +340,7 @@ for a local label.)}
 \textbf{Use of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} versus 
 \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}}
 
-A section group compilation unit that uses 
+A \addtoindex{section group} compilation unit that uses 
 \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
 is like any other compilation unit, in that its contents
 are evaluated by consumers as though it were an ordinary
@@ -334,8 +358,11 @@ This also applies to \addtoindex{Fortran} INCLUDE lines when declarations
 are included into a procedure or module context.
 
 Consequently a compiler must use \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} (instead
-of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}) in a section group whenever the section
-group contents are not necessarily globally visible. This
+of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}) 
+in a \addtoindex{section group} 
+whenever the section group 
+contents are not necessarily globally visible. 
+This
 directs consumers to ignore that compilation unit when scanning
 top level declarations and definitions.
 
@@ -372,7 +399,7 @@ Use
 unit's debugging information entries to those of another
 compilation unit.
 
-When referencing into a removable section group 
+When referencing into a removable \addtoindex{section group}
 \addtoindex{.debug\_info}
 from another \addtoindex{.debug\_info} (from anywhere), the
 \begin{alltt}
@@ -381,7 +408,9 @@ from another \addtoindex{.debug\_info} (from anywhere), the
 name should be used for an external symbol and a relocation
 generated based on that name.
 
-When referencing into a non-section group 
+When referencing into a 
+\addtoindexx{section group}
+non-section group 
 \addtoindex{.debug\_info},
 from another \addtoindex{.debug\_info} (from anywhere) 
 \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} is
@@ -402,7 +431,10 @@ In these examples, the focus is on the arrangement of DWARF
 information into sections (specifically the 
 \addtoindex{.debug\_info}
 section) and the naming conventions used to achieve references
-into section groups. In practice, all of the examples that
+into 
+\addtoindexx{section group}
+section groups. 
+In practice, all of the examples that
 follow involve DWARF sections other than just 
 \addtoindex{.debug\_info}
 (for example, \addtoindex{.debug\_line}, 
@@ -447,7 +479,7 @@ f(A &a)
 
 
 section \refersec{app:duplicateeliminationexample1dwarfsectiongroup}
-shows the section group corresponding to the included file 
+shows the \addtoindex{section group} corresponding to the included file 
 wa.h.
 
 
@@ -481,8 +513,9 @@ DW.cpp.wa.h.123456.4: ! linker global symbol
 
 Figure \refersec{app:duplicateeliminationexample1primarycompilationunit}
 shows the ``normal'' DWARF sections, which are not part of
-any section group, and how they make use of the information
-in the section group shown above.
+any \addtoindex{section group}, 
+and how they make use of the information
+in the \addtoindex{section group} shown above.
 
 \paragraph{Duplicate elimination example 1: primary compilation unit} 
 \label{app:duplicateeliminationexample1primarycompilationunit}
@@ -503,7 +536,7 @@ in the section group shown above.
         ...
 \end{alltt}
 
-This example uses \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} for the section group,
+This example uses \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} for the \addtoindex{section group},
 implying that the contents of the compilation unit are
 globally visible (in accordance with 
 \addtoindex{C++} language rules).
@@ -542,7 +575,7 @@ END
 
 
 Section \refersec{app:duplicateeliminationexample2dwarfsectiongroup}
-shows the section group 
+shows the \addtoindex{section group}
 corresponding to the included file 
 \addtoindexx{Fortran example}
 CommonStuff.fh.
@@ -636,7 +669,7 @@ END
 \end{lstlisting}
 
 That main program results in an object file that
-contained a duplicate of the section group named
+contained a duplicate of the \addtoindex{section group} named
 my.f90.company.f90.CommonStuff.fh.654321 
 corresponding to the
 included file as well as the remainder of the main subprogram
@@ -670,7 +703,7 @@ Section \refersec{app:duplicateeliminationexample2companiondwarf}.
 \end{alltt}
 
 
-This example uses \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} for the section group
+This example uses \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} for the \addtoindex{section group}
 because the included declarations are not independently
 visible as global entities.
 
@@ -685,12 +718,12 @@ a \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}
 in the primary unit 
 (see Figure \refersec{app:duplicateeliminationexample1primarycompilationunit})
 with an \livelink{chap:DWATimport}{DW\-\_AT\-\_import} attribute that refers to the proper unit
-in the section group.
+in the \addtoindex{section group}.
 
 \textit{The \addtoindex{C} rules for consistency of global (file scope) symbols
 across compilations are less strict than for C++; inclusion
 of the import unit attribute assures that the declarations of
-the proper section group are considered before declarations
+the proper \addtoindex{section group} are considered before declarations
 from other compilations.}
 
 
@@ -731,8 +764,9 @@ many
 linkers today support the concept of a COMDAT group or
 linkonce section. The general idea is that a ``key'' can be
 attached to a section or a group of sections, and the linker
-will include only one copy of a section group (or individual
-section) for any given key. For 
+will include only one copy of a \addtoindex{section group}
+(or individual section) for any given key. 
+For 
 \addtoindex{.debug\_types} sections, the
 key is the type signature formed from the algorithm given in
 Section \refersec{datarep:typesignaturecomputation}.
@@ -1224,11 +1258,13 @@ there is substantial header file information
 duplication.
 
 A reasonable approach is to put each header file in its own
-section group, using the naming rules mentioned above. The
+\addtoindex{section group}, using the naming rules mentioned above. The
 section groups are marked to ensure duplicate removal.
 
 All data instances and code instances (even if they came
-from the header files above) are put into non-section group
+from the header files above) are put 
+\addtoindexx{section group}
+into non-section group
 sections such as the base object file 
 \addtoindex{.debug\_info} section.
 
@@ -1245,7 +1281,10 @@ this function, should be reduced to just a single copy.
 For each such code group (function template in this example)
 the compiler assigns a name for the group which will match
 all other instantiations of this function but match nothing
-else. The section groups are marked to ensure duplicate
+else. 
+The 
+\addtoindexx{section group}
+section groups are marked to ensure duplicate
 removal, so that the second and subsequent definitions seen
 by the static linker are simply discarded.
 
@@ -1271,7 +1310,9 @@ as a
 Section groups can help make it easy for a linker to completely
 remove unused functions.
 
-Such section groups are not marked for duplicate removal,
+Such 
+\addtoindexx{section group}
+section groups are not marked for duplicate removal,
 since the functions are not duplicates of anything.
 
 Each function is given a compilation unit and a section
@@ -1286,7 +1327,9 @@ file\dash level compilation unit using \livelink{chap:DWTAGimportedunit}{DW\-\_T
 
 Section groups can use \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} and internal labels
 (section\dash relative relocations) to refer to the main object
-file sections, as the section groups here are either deleted
+file sections, as the 
+\addtoindexx{section group}
+section groups here are either deleted
 as unused or kept. There is no possibility (aside from error)
 of a group from some other compilation being used in place
 of one of these groups.
@@ -1299,7 +1342,10 @@ Abstract instances
 \addtoindexx{abstract instance}
 \addtoindexx{concrete out-of-line instance}
 and concrete-out-of-line instances may be
-put in distinct compilation units using section groups. This
+put in distinct compilation units using 
+\addtoindexx{section group}
+section groups. 
+This
 makes possible some useful duplicate DWARF elimination.
 
 \textit{No special provision for eliminating class duplication
index b065ee2..15158bb 100644 (file)
@@ -71,7 +71,10 @@ In a variable entry representing a non-defining declaration of a variable, the l
 specified modifies the location specified by the defining declaration and only applies for the
 scope of the variable entry; if no location is specified, then the location specified in the
 defining declaration applies.
-The location of a variable may be further specified with a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, if
+The location of a variable may be further specified with 
+\addtoindexx{segment attribute!and data segment}
+a 
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, if
 appropriate.
 
 \item A \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute describing the type of the variable,
@@ -152,7 +155,9 @@ with a constant value and no location can arise is for a
 formal parameter of an inlined subprogram that corresponds
 to a constant actual parameter of a call that is inlined.
 
-\item A \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute if the scope of an
+\item A \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute if the scope of 
+\addtoindexx{start scope attribute}
+an
 \hypertarget{chap:DWATstartscopeobjectdeclaration}
 object is smaller than (that is, is a subset of the addresses
 of) the scope most closely enclosing the object. There are
index 7be53cd..8ecab2a 100644 (file)
@@ -94,7 +94,9 @@ not appear in DWARF debugging information.
 \addtoindexx{reserved values!initial length}
 
 An \addtoindex{initial length field} is one of the length fields that occur
-at the beginning of those DWARF sections that have a header
+at the beginning 
+of those DWARF sections that 
+have a header
 (\addtoindex{.debug\_aranges}, 
 \addtoindex{.debug\_info}, 
 \addtoindex{.debug\_types}, 
@@ -175,14 +177,23 @@ represented as an unsigned 64\dash bit integer.
 detect that a DWARF section contribution is using the 64\dash bit
 format and to adapt its processing accordingly.}
 
-\item Section offset and section length fields that occur
+\item Section offset and section length 
+\addtoindexx{section length!use in headers}
+fields that occur
+\addtoindexx{section offset!use in headers}
 in the headers of DWARF sections (other 
 \addtoindex{initial length field}
 than 
 \addtoindex{initial length}
 fields) are listed following. In the 32\dash bit DWARF format these
 are 32\dash bit unsigned integer values; in the 64\dash bit DWARF format,
-they are 64\dash bit unsigned integer values.
+they 
+\addtoindexx{section length!in .debug\_aranges header}
+are 
+\addtoindexx{section length!in .debug\_pubnames header}
+64\dash bit 
+\addtoindexx{section length!in .debug\_pubtypes header}
+unsigned integer values.
 
 \begin{center}
 \begin{tabular}{lll}
@@ -329,7 +340,9 @@ DWARF information for the compilation unit\addtoindexx{version number!compilatio
 The value in this field is 4.
 
 \item \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
+A 
+\addtoindexx{section offset!in .debug\_info header}
+4\dash byte or 8\dash byte unsigned offset into the 
 \addtoindex{.debug\_abbrev}
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
@@ -380,7 +393,9 @@ DWARF information for the compilation unit\addtoindexx{version number!type unit}
 The value in this field is 4.
 
 \item \addtoindex{debug\_abbrev\_offset} (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset into the 
+A 
+\addtoindexx{section offset!in .debug\_types header}
+4\dash byte or 8\dash byte unsigned offset into the 
 \addtoindex{.debug\_abbrev}
 section. This offset associates the compilation unit with a
 particular set of debugging information entry abbreviations. In
@@ -389,7 +404,9 @@ in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item address\_size (ubyte) \\
-A 1\dash byte unsigned integer representing the size in bytes of
+A 1\dash byte unsigned integer representing the size 
+\addtoindexx{size of an address}
+in bytes of
 \addtoindexx{address\_size}
 an address on the target architecture. If the system uses
 \addtoindexx{address space!segmented}
@@ -406,7 +423,9 @@ the primary type contained in this type unit uses this value.}
 
 
 \item type\_offset (section offset) \\
-A 4\dash byte or 8\dash byte unsigned offset relative to the beginning
+A 4\dash byte or 8\dash byte unsigned offset 
+\addtoindexx{section offset!in .debug\_types header}
+relative to the beginning
 of the type unit header. This offset refers to the debugging
 information entry that describes the type. Because the type
 may be nested inside a namespace or other structures, and may
@@ -659,9 +678,12 @@ case, the attribute is implicitly indicated as present, and
 no value is encoded in the debugging information entry itself.
 
 \item \livelink{chap:lineptr}{lineptr} \\
-This is an offset into the 
+This is an offset into 
+\addtoindexx{section offset!in class lineptr value}
+the 
 \addtoindex{.debug\_line} section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}).
+It consists of an offset from the
 beginning of the 
 \addtoindex{.debug\_line}
 section to the first byte of
@@ -678,7 +700,9 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 This is an offset into the 
 \addtoindex{.debug\_loc}
 section
-(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
+It consists of an offset from the
+\addtoindexx{section offset!in class loclistptr value}
 beginning of the 
 \addtoindex{.debug\_loc}
 section to the first byte of
@@ -693,7 +717,9 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 
 
 \item \livelink{chap:macptr}{macptr} \\
-This is an offset into the 
+This is an 
+\addtoindexx{section offset!in class macptr value}
+offset into the 
 \addtoindex{.debug\_macinfo} section
 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
 beginning of the \addtoindex{.debug\_macinfo} 
@@ -707,7 +733,9 @@ in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 \item \livelink{chap:rangelistptr}{rangelistptr} \\
-This is an offset into the \addtoindex{.debug\_ranges} section
+This is an 
+\addtoindexx{section offset!in class rangelistptr value}
+offset into the \addtoindex{.debug\_ranges} section
 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
 It consists of an
 offset from the beginning of the 
@@ -734,8 +762,11 @@ There are three types of reference.
 The 
 \addtoindexx{reference class}
 first type of reference can identify any debugging
-information entry within the containing unit. This type of
-reference is an offset from the first byte of the compilation
+information entry within the containing unit. 
+This type of
+reference is an 
+\addtoindexx{section offset!in class reference value}
+offset from the first byte of the compilation
 header for the compilation unit containing the reference. There
 are five forms for this type of reference. There are fixed
 length forms for one, two, four and eight byte offsets
@@ -802,10 +833,14 @@ header.
 
 \item string \\
 A string is a sequence of contiguous non\dash null bytes followed by
-one null byte. A string may be represented immediately in the
+one null byte. 
+\addtoindexx{string class}
+A string may be represented immediately in the
 debugging information entry itself 
 (\livetarg{chap:DWFORMstring}{DW\-\_FORM\-\_string}), or may
-be represented as an offset into a string table contained in
+be represented as an 
+\addtoindexx{section offset!in class string value}
+offset into a string table contained in
 the \addtoindex{.debug\_str} section of the object file 
 (\livetarg{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}). In
 the 32\dash bit DWARF format, the representation of a 
@@ -1898,8 +1933,11 @@ DWARF information\addtoindexx{version number!compilation unit} for the compilati
 The value in this field is 4.
 
 % Some say unsigned offset this just says offset: FIXME
-\item debug\_info\_offset (section offset) \\
-A 4\dash byte or 8\dash byte offset into the 
+\item \addtoindex{debug\_info\_offset} (section offset) \\
+A 
+\addtoindexx{section offset!in name lookup table set of entries}
+4\dash byte or 8\dash byte 
+offset into the 
 \addtoindex{.debug\_info}
 section of the compilation unit header.
 In
@@ -1907,8 +1945,11 @@ the 32\dash bit DWARF format, this is a 4\dash byte unsigned offset;
 in the 64\dash bit DWARF format, this is an 8\dash byte unsigned offsets
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
-\item  debug\_info\_length (section length) \\
-A 4\dash byte or 8\dash byte length containing the size in bytes of the
+\item  \addtoindex{debug\_info\_length} (section length) \\
+\addtoindexx{section length!in .debug\_pubnames header}
+A 
+\addtoindexx{section length!in .debug\_pubtypes header}
+4\dash byte or 8\dash byte length containing the size in bytes of the
 contents of the \addtoindex{.debug\_info}
 section generated to represent
 this compilation unit. In the 32\dash bit DWARF format, this is
@@ -1957,7 +1998,9 @@ A 2\dash byte version identifier
 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
 
 \item debug\_info\_offset (section offset) \\
-A 4\dash byte or 8\dash byte offset into the 
+A 
+\addtoindexx{section offset!in .debug\_aranges header}
+4\dash byte or 8\dash byte offset into the 
 \addtoindex{.debug\_info} section of
 the compilation unit header. In the 32\dash bit DWARF format,
 this is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
@@ -1967,12 +2010,16 @@ this is an 8\dash byte unsigned offset
 \item address\_size (ubyte) \\
 A 1\dash byte unsigned integer containing the size in bytes of an
 \addtoindexx{address\_size}
-address (or the offset portion of an address for segmented
+address 
+\addtoindexx{size of an address}
+(or the offset portion of an address for segmented
 \addtoindexx{address space!segmented}
 addressing) on the target system.
 
 \item segment\_size (ubyte) \\
-A 1\dash byte unsigned integer containing the size in bytes of a
+A 
+\addtoindexx{segment\_size}
+1\dash byte unsigned integer containing the size in bytes of a
 segment selector on the target system.
 
 \end{enumerate}
@@ -1980,17 +2027,17 @@ segment selector on the target system.
 This header is followed by a series of tuples. Each tuple
 consists of a segment, an address and a length. 
 The segment
-size is given by the segment\_size field of the header; the
+size is given by the \addtoindex{segment\_size} field of the header; the
 address and length size are each given by the address\_size
 field of the header. 
 The first tuple following the header in
 each set begins at an offset that is a multiple of the size
 of a single tuple (that is, the size of a segment selector
-plus twice the size of an address). 
+plus twice the \addtoindex{size of an address}). 
 The header is padded, if
 necessary, to that boundary. Each set of tuples is terminated
 by a 0 for the segment, a 0 for the address and 0 for the
-length. If the segment\_size field in the header is zero,
+length. If the \addtoindex{segment\_size} field in the header is zero,
 the segment selectors are omitted from all tuples, including
 the terminating tuple.
 
@@ -2229,21 +2276,27 @@ word\dash aligned. Consequently: •
 32\dash bit addresses, an assembler or compiler must provide a way
 to produce 2\dash byte and 4\dash byte quantities without alignment
 restrictions, and the linker must be able to relocate a
-4\dash byte address or section offset that occurs at an arbitrary
+4\dash byte address or 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an arbitrary
 alignment.
 
 \item For the 32\dash bit DWARF format and a target architecture with
 64\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to relocate
-an 8\dash byte address or 4\dash byte section offset that occurs at an
+an 8\dash byte address or 4\dash byte 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an
 arbitrary alignment.
 
 \item For the 64\dash bit DWARF format and a target architecture with
 32\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to relocate
-a 4\dash byte address or 8\dash byte section offset that occurs at an
+a 4\dash byte address or 8\dash byte 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at an
 arbitrary alignment.
 
 \textit{It is expected that this will be required only for very large
@@ -2255,7 +2308,9 @@ executable object.}
 64\dash bit addresses, an assembler or compiler must provide a
 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
 alignment restrictions, and the linker must be able to
-relocate an 8\dash byte address or section offset that occurs at
+relocate an 8\dash byte address or 
+\addtoindexx{section offset!alignment of}
+section offset that occurs at
 an arbitrary alignment.
 \end{itemize}
 
@@ -2280,10 +2335,10 @@ Table 41 \refersec{tab:integerrepresentationnames}.
   \hline
 \endlastfoot
 
-sbyte&  signed, 1\dash byte integer \\
-ubyte&unsigned, 1\dash byte integer \\
-uhalf&unsigned, 2\dash byte integer \\
-uword&unsigned, 4\dash byte integer \\
+\addtoindex{sbyte}&  signed, 1\dash byte integer \\
+\addtoindex{ubyte}&unsigned, 1\dash byte integer \\
+\addtoindex{uhalf}&unsigned, 2\dash byte integer \\
+\addtoindex{uword}&unsigned, 4\dash byte integer \\
 
 \end{longtable}
 \end{centering}
index 3e77f8c..5b66b62 100644 (file)
@@ -494,8 +494,11 @@ In cases where a producer of debugging information feels that
 \hypertarget{chap:DWATsiblingdebugginginformationentryrelationship}
 it will be important for consumers of that information to
 quickly scan chains of sibling entries, while ignoring the
-children of individual siblings, that producer may attach a
-\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} attribute to any debugging information entry. 
+children of individual siblings, that producer may attach 
+\addtoindexx{sibling attribute}
+a
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} attribute 
+to any debugging information entry. 
 The
 value of this attribute is a reference to the sibling entry
 of the entry to which the attribute is attached.
@@ -521,7 +524,9 @@ the DWARF information.
 For example, if a particular target architecture supports
 both 32\dash bit and 64\dash bit addresses, the compiler will generate
 an object file which specifies that it contains executable
-code generated for one or the other of these address sizes. In
+code generated for one or the other of these 
+\addtoindexx{size of an address}
+address sizes. In
 that case, the DWARF debugging information contained in this
 object file will use the same address size.
 }
@@ -553,7 +558,8 @@ Section \refersec{chap:locationdescriptions}.
 \label{chap:generaloperations}
 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
+\addtoindex{size of an address} on the target machine. 
+The value on the
 top of the stack after ``executing'' the 
 \addtoindex{DWARF expression}
 is 
@@ -581,7 +587,7 @@ from 0 through 31, inclusive.
 
 \item \livetarg{chap:DWOPaddr}{DW\-\_OP\-\_addr} \\
 The \livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr} operation has a single operand that encodes
-a machine address and whose size is the size of an address
+a machine address and whose size is the \addtoindex{size of an address}
 on the target machine.
 
 \item \livetarg{chap:DWOPconst1u}{DW\-\_OP\-\_const1u}, \livetarg{chap:DWOPconst2u}{DW\-\_OP\-\_const2u}, \livetarg{chap:DWOPconst4u}{DW\-\_OP\-\_const4u}, \livetarg{chap:DWOPconst8u}{DW\-\_OP\-\_const8u} \\
@@ -682,7 +688,7 @@ treats it as an address. The value
 retrieved from that address is pushed. 
 The size of the data retrieved from the 
 \addtoindexi{dereferenced}{address!dereference operator}
-address is the size of an address on the target machine.
+address is the \addtoindex{size of an address} on the target machine.
 
 \item \livetarg{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} \\
 The \livelink{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} operation behaves like the \livelink{chap:DWOPderef}{DW\-\_OP\-\_deref}
@@ -692,7 +698,7 @@ the \livelink{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} operation, however,
 of the data retrieved from the dereferenced address is
 specified by the single operand. This operand is a 1\dash byte
 unsigned integral constant whose value may not be larger
-than the size of an address on the target machine. The data
+than the \addtoindex{size of an address} on the target machine. The data
 retrieved is zero extended to the size of an address on the
 target machine before being pushed onto the expression stack.
 
@@ -708,7 +714,7 @@ address calculation and pushed as the new stack top. The size
 of the data retrieved from the 
 \addtoindexi{dereferenced}{address!dereference operator}
 address is the
-size of an address on the target machine.
+\addtoindex{size of an address} on the target machine.
 
 \item \livetarg{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size}\\
 The \livelink{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size} operation behaves like the
@@ -725,8 +731,8 @@ the size in bytes of the data retrieved from the
 \addtoindexi{dereferenced}{address!dereference operator}
 address is specified by the single operand. This operand is a
 1\dash byte unsigned integral constant whose value may not be larger
-than the size of an address on the target machine. The data
-retrieved is zero extended to the size of an address on the
+than the \addtoindex{size of an address} on the target machine. The data
+retrieved is zero extended to the \addtoindex{size of an address} on the
 target machine before being pushed onto the expression stack.
 
 \item \livetarg{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}\\
@@ -794,8 +800,10 @@ 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
-(for example, 0x100000000 when the size of an address is 32
-bits). Such operations do not cause an exception on overflow.
+(for example, 0x100000000 when the 
+\addtoindex{size of an address} is 32
+bits). 
+Such operations do not cause an exception on overflow.
 
 \begin{enumerate}[1]
 \item \livetarg{chap:DWOPabs}{DW\-\_OP\-\_abs}  \\
@@ -1044,7 +1052,9 @@ of two forms:
 \item \textit{Single location descriptions}, 
 which 
 \addtoindexx{location description!single}
-are a language independent representation of
+are 
+\addtoindexx{single location description}
+a language independent representation of
 addressing rules of arbitrary complexity built from 
 DWARF expressions (See Section \refersec{chap:dwarfexpressions}) 
 and/or other
@@ -1101,7 +1111,9 @@ A single location description is either:
 \begin{enumerate}[1]
 \item A simple location description, representing an object
 \addtoindexx{location description!simple}
-which exists in one contiguous piece at the given location, or 
+which 
+\addtoindexx{simple location description}
+exists in one contiguous piece at the given location, or 
 \item A composite location description consisting of one or more
 \addtoindexx{location description!composite}
 simple location descriptions, each of which is followed by
@@ -1240,7 +1252,8 @@ of the resultant value is contained.
 
 \begin{enumerate}[1]
 \item \livetarg{chap:DWOPpiece}{DW\-\_OP\-\_piece} \\
-The \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} operation takes a single operand, which is an
+The \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} operation takes a 
+single operand, which is an
 unsigned LEB128 number.  The number describes the size in bytes
 of the piece of the object referenced by the preceding simple
 location description. If the piece is located in a register,
@@ -1392,7 +1405,7 @@ location list entry consists of:
 
 \begin{enumerate}[1]
 \item A beginning address offset. 
-This address offset has the size of an address and is
+This address offset has the \addtoindex{size of an address} and is
 relative to the applicable base address of the compilation
 unit referencing this location list. It marks the beginning
 of the address 
@@ -1400,7 +1413,7 @@ of the address
 over which the location is valid.
 
 \item An ending address offset.  This address offset again
-has the size of an address and is relative to the applicable
+has the \addtoindex{size of an address} and is relative to the applicable
 base address of the compilation unit referencing this location
 list. It marks the first address past the end of the address
 range over which the location is valid. The ending address
@@ -1412,7 +1425,7 @@ and ending addresses are equal has no effect
 because the size of the range covered by such
 an entry is zero.}
 
-\item A single location description 
+\item A \addtoindex{single location description} 
 describing the location of the object over the range specified by
 the beginning and end addresses.
 \end{enumerate}
@@ -1602,7 +1615,9 @@ which is a \livelink{chap:flag}{flag}.
 \textit{In some systems, addresses are specified as offsets within a
 given 
 \addtoindexx{address space!segmented}
-segment rather than as locations within a single flat
+segment 
+\addtoindexx{segmented adddressing|see{address space}}
+rather than as locations within a single flat
 \addtoindexx{address space!flat}.
 address space.}
 
@@ -1610,8 +1625,9 @@ Any debugging information entry that contains a description
 \hypertarget{chap:DWATsegmentaddressinginformation}
 of the location of an object or subroutine may have
 a 
-\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
-attribute, whose value is a location
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, 
+\addtoindexx{segment attribute}
+whose value is a location
 description. The description evaluates to the segment selector
 of the item being described. If the entry containing the
 \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute has a 
@@ -1624,15 +1640,23 @@ or
 a location
 description that evaluates to an address, then those address
 values represent the offset portion of the address within
-the segment specified by \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}.
+the segment specified 
+\addtoindexx{segment attribute}
+by \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}.
 
-If an entry has no \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, it inherits
+If an entry has no 
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute, it inherits
+\addtoindexx{segment attribute}
 the segment value from its parent entry.  If none of the
 entries in the chain of parents for this entry back to
-its containing compilation unit entry have \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
-attributes, then the entry is assumed to exist within a flat
-address space. Similarly, if the entry has a \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
-attribute containing an empty location description, that
+its containing compilation unit entry have 
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attributes, 
+then the entry is assumed to exist within a flat
+address space. 
+Similarly, if the entry has a 
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_segment} attribute 
+\addtoindexx{segment attribute}
+containing an empty location description, that
 entry is assumed to exist within a 
 \addtoindexi{flat}{address space!flat}.
 address space.
@@ -1739,7 +1763,10 @@ example,
 \livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} and 
 \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
 \addtoindexx{declaration attribute}
-clearly cannot apply to a referring
+clearly cannot apply to a 
+\addtoindexx{declaration attribute}
+referring
+\addtoindexx{sibling attribute}
 entry.}
 
 
@@ -1906,6 +1933,7 @@ for a non-contiguous range of addresses.
 In addition, a non-contiguous range of 
 addresses may also be specified for the
 \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute.
+\addtoindexx{start scope attribute}
 If an entity has no associated machine code, 
 none of these attributes are specified.
 
@@ -1958,7 +1986,9 @@ a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
 whose value is of class \livelink{chap:rangelistptr}{rangelistptr}
 and indicates the beginning of a \addtoindex{range list}.
 Similarly,
-a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute may have a value of class
+a \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope} attribute 
+\addtoindexx{start scope attribute}
+may have a value of class
 \livelink{chap:rangelistptr}{rangelistptr} for the same reason.  
 
 Range lists are contained
@@ -1981,7 +2011,8 @@ end of list entry.
 A \addtoindex{range list} entry consists of:
 
 \begin{enumerate}[1]
-\item A beginning address offset. This address offset has the size of an address and is relative to
+\item A beginning address offset. This address offset has the 
+\addtoindex{size of an address} and is relative to
 the applicable base address of the compilation unit referencing this 
 \addtoindex{range list}. 
 It marks the
@@ -1989,7 +2020,8 @@ beginning of an
 \addtoindexi{address}{address range!in range list} 
 range.
 
-\item An ending address offset. This address offset again has the size of an address and is relative
+\item An ending address offset. This address offset again has the 
+\addtoindex{size of an address} and is relative
 to the applicable base address of the compilation unit referencing 
 this \addtoindex{range list}.
 It marks the
index 8758576..9a2fba2 100644 (file)
@@ -146,7 +146,10 @@ compute the location where a value is found (such as an address in memory or a r
 name) from DWARF expressions, which compute a final value (such as an array bound).
 \item Add support for bundled instructions on machine architectures where instructions do not
 occupy a whole number of bytes.
-\item Add a new attribute form for section offsets, \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}, to replace the use
+\item Add a new attribute form for 
+section offsets, \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}, 
+\addtoindexx{section offset}
+to replace the use
 of \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} for section offsets.
 \item Add an attribute, \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}, to identify the main subprogram of a
 program.
index 9337eaa..c0172b7 100644 (file)
@@ -9,12 +9,19 @@ is not contained within a \addtoindex{.debug\_info} or
 In the descriptions that follow, these terms are used to
 specify the representation of DWARF sections:
 
-Initial length, section offset and section length, which are
+Initial length, section offset and 
+\addtoindex{section length}, which are
 defined in 
 Sections \refersec{datarep:locationdescriptions} and 
 \refersec{datarep:32bitand64bitdwarfformats}.
 
-Sbyte, ubyte, uhalf, and uword, which are defined in 
+Sbyte, 
+\addtoindex{ubyte}, 
+\addtoindex{uhalf}, and 
+\addtoindex{uword}, 
+which 
+\addtoindexx{sbyte}
+are defined in 
 Section \refersec{datarep:integerrepresentationnames}.
 
 \section{Accelerated Access}
@@ -90,19 +97,28 @@ not including the length field itself
 (see Section \refersec{datarep:locationdescriptions}).
 
 \item  version (uhalf) \\
-A version number\addtoindexx{version number!name lookup table}\addtoindexx{version number!type lookup table} 
+A version number
+\addtoindexx{version number!name lookup table}
+\addtoindexx{version number!type lookup table} 
 (see Section \refersec{datarep:namelookuptables}). 
 This number is specific
 to the name lookup table and is independent of the DWARF
 version number.
 
 \item debug\_info\_offset (section offset) \\
-The offset from the beginning of the 
+The 
+\addtoindexx{section offset!in .debug\_pubtypes header}
+offset 
+\addtoindexx{section offset!in .debug\_pubtypes header}
+from the beginning of the 
 \addtoindex{.debug\_info} section of
 the compilation unit header referenced by the set.
 
 \item debug\_info\_length (section length) \\
-The size in bytes of the contents of the 
+\addtoindexx{section length!in .debug\_pubnames header}
+The 
+\addtoindexx{section length!in .debug\_pubtypes header}
+size in bytes of the contents of the 
 \addtoindex{.debug\_info} section
 generated to represent that compilation unit.
 \end{enumerate}
@@ -156,12 +172,16 @@ independent of the DWARF version number.
 
 \item debug\_info\_offset (section offset) \\
 The offset from the
+\addtoindexx{section offset!in .debug\_pubnames header}
 beginning of the \addtoindex{.debug\_info} or 
 \addtoindex{.debug\_types} section of the
 compilation unit header referenced by the set.
 
 \item address\_size (ubyte) \\
-The size of an address in bytes on
+The \addtoindex{size of an address}
+in 
+\addtoindexx{ubyte}
+bytes on
 \addtoindexx{address\_size}
 the target architecture. For 
 \addtoindexx{address space!segmented}
@@ -169,7 +189,10 @@ segmented addressing, this is
 the size of the offset portion of the address.
 
 \item segment\_size (ubyte) \\
-The size of a segment selector in
+The size of a segment selector 
+\addtoindexx{ubyte}
+in
+\addtoindexx{segment\_size}
 bytes on the target architecture. If the target system uses
 a flat address space, this value is 0.
 
@@ -182,7 +205,9 @@ segment selector, the beginning address within that segment
 of a range of text or data covered by some entry owned by
 the corresponding compilation unit, followed by the non\dash zero
 length of that range. A particular set is terminated by an
-entry consisting of three zeroes. When the segment\_size value
+entry consisting of three zeroes. 
+When the 
+\addtoindex{segment\_size} value
 is zero in the header, the segment selector is omitted so that
 each descriptor is just a pair, including the terminating
 entry. By scanning the table, a debugger can quickly decide
@@ -523,18 +548,22 @@ constitute such a recommendation and
 be either ``true'' or ``false''. This approach might be
 used as part of support for debugging optimized code.}
 
-\item line\_base (sbyte) \\
+\item line\_base (\addtoindex{sbyte}) \\
 \addtoindexx{line\_base}
 This parameter affects the meaning of the special opcodes. See below.
 
 \item line\_range (ubyte) \\
 \addtoindexx{line\_range}
-This parameter affects the meaning of the special opcodes. See below.
+This 
+\addtoindexx{ubyte}
+parameter affects the meaning of the special opcodes. See below.
 
 \item opcode\_base (ubyte) \\
 The 
 \addtoindex{opcode\_base}
-number assigned to the first special opcode.
+number
+\addtoindexx{ubyte}
+ assigned to the first special opcode.
 
 \textit{Opcode base is typically one greater than the highest-numbered
 \addtoindex{opcode\_base}
@@ -1498,11 +1527,16 @@ UTF\dash 8 encoding.}
 The size of a target address
 \addtoindexx{address\_size}
 in this CIE and any FDEs that
+\addtoindexx{ubyte}
 use it, in bytes. If a compilation unit exists for this frame,
 its address size must match the address size here.
 
 \item  segment\_size (ubyte) \\
-The size of a segment selector in this CIE and any FDEs that
+The 
+\addtoindexx{segment\_size}
+size 
+\addtoindexx{ubyte}
+of a segment selector in this CIE and any FDEs that
 use it, in bytes.
 
 \item  \addtoindex{code\_alignment\_factor} (unsigned LEB128) \\
@@ -1555,24 +1589,37 @@ plus the value of length must be an integral multiple of the
 address size.
 
 \item   CIE\_pointer (4 or 8 bytes, see Section \refersec{datarep:32bitand64bitdwarfformats}) \\
-A constant offset into the \addtoindex{.debug\_frame}
+A constant 
+\addtoindexx{section offset!in FDE header}
+offset into the \addtoindex{.debug\_frame}
 section that denotes
 the CIE that is associated with this FDE.
 
 \item  initial\_location (segment selector and target address) \\
-The address of the first location associated with this table
-entry. If the segment\_size field of this FDE's CIE is non-zero,
+The 
+\addtoindexx{initial\_location}
+address of the first location associated with this table
+entry. 
+If the \addtoindex{segment\_size} field of this FDE's CIE is non-zero,
 the initial location is preceded by a segment selector of
 the given length.
 
 \item  address\_range (target address) \\
-The number of bytes of program instructions described by this entry.
+The 
+\addtoindexx{address\_range}
+number 
+\addtoindexx{target address}
+of bytes of program instructions described by this entry.
 
 \item instructions (array of ubyte) \\
-A sequence of table defining instructions that are described below.
+A 
+\addtoindexx{ubyte}
+sequence of table defining instructions that are described below.
 
 \item 6. padding (array of ubyte) \\
-Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions to make the size of this
+Enough \livelink{chap:DWCFAnop}{DW\-\_CFA\-\_nop} instructions 
+to make the size of this
+\addtoindexx{ubyte}
 entry match the length value above.
 \end{enumerate}
 
@@ -1619,12 +1666,15 @@ and \livelink{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression}.}
 \begin{enumerate}[1.]
 
 \item \textbf{DW\-\_CFA\-\_set\-\_loc} \\
-The \livetarg{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc} instruction takes a single operand that
+The \livetarg{chap:DWCFAsetloc}{DW\-\_CFA\-\_set\-\_loc} instruction 
+takes a single operand that
 represents a target address. The required action is to create a
 new table row using the specified address as the location. All
 other values in the new row are initially identical to the
 current row. The new location value is always greater than
-the current one. If the segment\_size field of this FDE's CIE
+the current one. 
+If the \addtoindex{segment\_size} field of this FDE's 
+\addtoindex{CIE}
 is non- zero, the initial location is preceded by a segment
 selector of the given length.
 
index 5407d19..7c39e76 100644 (file)
@@ -159,9 +159,14 @@ Language name & Meaning\\ \hline
 \end{tabular}
 \end{figure}
 
-\item A \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} attribute whose value is a section
+\item A \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} attribute whose value is 
+\addtoindexx{statement list attribute}
+a 
+\addtoindexx{section offset!in statement list attribute}
+section
 \hypertarget{chap:DWATstmtlistlinenumberinformationforunit}
-offset to the line number information for this compilation
+offset 
+to the line number information for this compilation
 unit.  This information is placed in a separate object file
 section from the debugging information entries themselves. The
 value of the statement list attribute is the offset in the
@@ -171,7 +176,9 @@ information for this compilation unit
 
 \item A \livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} attribute 
 \addtoindex{macro information attribute}
-whose value is a section
+whose value is a 
+\addtoindexx{section offset!in macro information attribute}
+section
 \hypertarget{chap:DWATmacroinfomacroinformation}
 offset to the macro information for this compilation unit.
 This information is placed in a separate object file section
@@ -501,10 +508,14 @@ If a type, variable, or function declared in a namespace is
 defined outside of the body of the namespace declaration,
 that type, variable, or function definition entry has a
 \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
 whose value is a reference to the
 debugging information entry representing the declaration of
 the type, variable or function. Type, variable, or function
-entries with a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need
+entries with a 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
+do not need
 to duplicate information provided by the declaration entry
 referenced by the specification attribute.
 
@@ -734,7 +745,9 @@ debugging information entries
 \addtoindexx{function entry|see{subroutine entry}}
 for 
 \addtoindexx{subroutine entry}
-subroutines and entry
+subroutines 
+\addtoindexx{subprogram entry}
+and entry
 % FIXME: is entry point entry the right index 'entry'?
 \addtoindexx{entry point entry}
 points:
@@ -754,6 +767,7 @@ It may also have a \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name}
 described in Section \refersec{chap:linkagenames}.
 
 If the name of the subroutine described by an entry with the
+\addtoindex{subprogram entry}
 tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}
 is visible outside of its containing
 \hypertarget{chap:DWATexternalexternalsubroutine}
@@ -1133,7 +1147,9 @@ values of different types. DWARF does not represent the generic
 template definition, but does represent each instantiation.}
 
 A template instantiation is represented by a debugging
-information entry with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}. With four
+information entry with the 
+\addtoindexx{subprogram entry!use for template instantiation}
+tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}. With four
 exceptions, such an entry will contain the same attributes and
 will have the same types of child entries as would an entry
 for a subroutine defined explicitly using the instantiation
@@ -1180,7 +1196,9 @@ A declaration or a definition of an inlinable subroutine
 is represented by a debugging information entry with the
 tag 
 \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}.
-The entry for a subroutine that is
+The entry for a 
+\addtoindexx{subprogram entry!use in inlined subprogram}
+subroutine that is
 \hypertarget{chap:DWATinlineinlinedsubroutine}
 explicitly declared to be available for inline expansion or
 that was expanded inline implicitly by the compiler has 
@@ -1243,8 +1261,11 @@ instance tree.
 
 Each abstract instance root is either part of a larger
 \addtoindexx{abstract instance!root}
-tree (which gives a context for the root) or uses
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} to refer to the declaration in context.
+tree (which gives a context for the root) or 
+\addtoindexx{specification attribute}
+uses
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} 
+to refer to the declaration in context.
 
 \textit{For example, in \addtoindex{C++} the context might be a namespace
 declaration or a class declaration.}
@@ -1275,6 +1296,7 @@ should
 be 
 \addtoindexx{low PC attribute!and abstract instance}
 omitted; 
+\addtoindex{segment attribute!and abstract instance}
 however, 
 \addtoindexx{return address attribute!and abstract instance}
 this 
index 65df537..1abc452 100644 (file)
@@ -346,6 +346,7 @@ For
 a data type with a non\dash decimal and non\dash binary scale factor,
 the fixed binary type entry has a 
 \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute which
+\addtoindexx{small attribute}
 references a 
 \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant} entry. The scale factor value
 is interpreted in accordance with the value defined by the
@@ -563,7 +564,8 @@ The typedef entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
 whose value is a null\dash terminated string containing
 the name of the typedef as it appears in the source program.
 
-The typedef entry may also contain a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose
+The typedef entry may also contain a 
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute whose
 value is a reference to the type named by the typedef. If
 the debugging information entry for a typedef represents
 a declaration of the type that is not also a definition,
@@ -635,6 +637,7 @@ the type of each element of the array.
 
 If the amount of storage allocated to hold each element of an
 object of the given array type is different from the amount
+\addtoindexx{stride attribute|see{bit stride attribute or byte stride attribute}}
 of storage that is normally allocated to hold an individual
 \hypertarget{chap:DWATbitstridearrayelementstrideofarraytype}
 object of the 
@@ -665,7 +668,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 
+entry with either the 
+\addtoindexx{subrange type entry!as array dimension}
+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
@@ -697,8 +702,11 @@ Appendix \refersec{app:fortran90example}.
 \addtoindex{C++}, and 
 \addtoindex{Pascal}, among others, allow the
 programmer to define types that are collections of related
-components. In \addtoindex{C} and \addtoindex{C++}, these collections are called
-“structures.” In \addtoindex{Pascal}, they are called “records.”
+\addtoindexx{structure type entry}
+components. 
+In \addtoindex{C} and \addtoindex{C++}, these collections are called
+“structures.” 
+In \addtoindex{Pascal}, they are called “records.”
 The components may be of different types. The components are
 called “members” in \addtoindex{C} and 
 \addtoindex{C++}, and “fields” in \addtoindex{Pascal}.}
@@ -733,8 +741,13 @@ be understood to apply to \addtoindex{C++} structures as well.}
 
 
 Structure, union, and class types are represented by debugging
-information entries with 
-the tags \livetarg{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type},
+\addtoindexx{structure type entry}
+information entries 
+\addtoindexx{union type entry}
+with 
+\addtoindexx{class type entry}
+the tags 
+\livetarg{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type},
 \livetarg{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}, 
 and \livetarg{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type},
 respectively. If a name has been given to the structure,
@@ -781,12 +794,16 @@ attribute.
 If a structure, union or class entry represents the definition
 of a structure, class or union member corresponding to a prior
 incomplete structure, class or union, the entry may have a
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute whose value is a reference to
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
+whose value is a reference to
 the debugging information entry representing that incomplete
 declaration.
 
 Structure, union and class entries containing the
-\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute do not need to duplicate
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
+do not need to duplicate
 information provided by the declaration entry referenced by the
 specification attribute.  In particular, such entries do not
 need to contain an attribute for the name of the structure,
@@ -809,8 +826,10 @@ within the type declaration.}
 If the definition for a given member of the structure, union
 or class does not appear within the body of the declaration,
 that member also has a debugging information entry describing
-its definition. That latter entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
-attribute referencing the debugging information entry
+its definition. That latter entry has a 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
+referencing the debugging information entry
 owned by the body of the structure, union or class entry and
 representing a non\dash defining declaration of the data, function
 or type member. The referenced entry will not have information
@@ -838,6 +857,7 @@ facilitate DWARF space compression
 
 \textit{The \addtoindex{Java} language defines ``interface'' types. 
 An interface
+\addtoindex{interface type entry}
 in \addtoindex{Java} is similar to a \addtoindex{C++} or 
 \addtoindex{Java} class with only abstract
 methods and constant data members.}
@@ -1363,7 +1383,9 @@ as well as specify the size of the data member) }
 
 A member function is represented by a 
 \addtoindexx{member function entry}
-debugging information entry with the 
+debugging information entry 
+with the 
+\addtoindexx{subprogram entry!as member function}
 tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}.
 The member function entry
 may contain the same attributes and follows the same rules
@@ -1407,7 +1429,9 @@ description is evaluated.
 If 
 \hypertarget{chap:DWATobjectpointerobjectthisselfpointerofmemberfunction}
 the member function entry describes a non\dash static member
-function, then that entry has 
+function, then that entry 
+\addtoindexx{self pointer attribute|see{object pointer attribute}}
+has 
 \addtoindexx{object pointer attribute}
 a \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer} 
 attribute
@@ -1436,14 +1460,18 @@ const\dash volatile qualification.
 If a subroutine entry represents the defining declaration
 of a member function and that definition appears outside of
 the body of the enclosing class declaration, the subroutine
-entry has a \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} 
-attribute, whose value is
+entry has a 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute, 
+\addtoindexx{specification attribute}
+whose value is
 a reference to the debugging information entry representing
 the declaration of this function member. The referenced entry
 will be a child of some class (or structure) type entry.
 
-Subroutine entries containing the \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
-attribute do not need to duplicate information provided
+Subroutine entries containing the
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+\addtoindexx{specification attribute}
+do not need to duplicate information provided
 by the declaration entry referenced by the specification
 attribute. In particular, such entries do not need to contain
 attributes for the name or return type of the function member
@@ -1478,7 +1506,8 @@ such entry may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 whose value is
 a null\dash terminated string containing the name of the formal
 type parameter as it appears in the source program. The
-template type parameter entry also has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
+template type parameter entry also has a 
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
 describing the actual type by which the formal is replaced
 for this instantiation.
 
@@ -1775,6 +1804,7 @@ user\dash defined type.
 
 A subroutine type is represented by a debugging information
 entry with the 
+\addtoindexx{subroutine type entry}
 tag \livetarg{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}. 
 If a name has
 been given to the subroutine type in the source program,
@@ -1835,6 +1865,7 @@ tag \livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_param
 
 
 A ``string'' is a sequence of characters that have specific
+\addtoindexx{string type entry}
 semantics and operations that separate them from arrays of
 characters. 
 \addtoindex{Fortran} is one of the languages that has a string
@@ -1856,7 +1887,9 @@ The
 \hypertarget{chap:DWATstringlengthstringlengthofstringtype}
 string type entry may have a 
 \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length} attribute
-whose value is a 
+whose 
+\addtoindexx{string length attribute}
+value is a 
 \addtoindex{location description} yielding the location
 where the length of the string is stored in the program. The
 string type entry may also have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute
@@ -1865,7 +1898,8 @@ or \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} attribute, whose value
 is the size of the data to be retrieved from the location
 referenced by the string length attribute. If no (byte or bit)
 size attribute is present, the size of the data to be retrieved
-is the same as the size of an address on the target machine.
+is the same as the 
+\addtoindex{size of an address} on the target machine.
 
 If no string length attribute is present, the string type
 entry may have a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or 
@@ -1884,6 +1918,7 @@ a group of values of ordinal type.}
 
 A set is represented by a debugging information entry with
 the tag \livetarg{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}. 
+\addtoindexx{set type entry}
 If a name has been given to the
 set type, then the set type entry has 
 a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
@@ -1910,11 +1945,13 @@ the amount of storage needed to hold a value of the set type.
 \textit{Several languages support the concept of a ``subrange''
 type object. These objects can represent a subset of the
 values that an object of the basis type for the subrange can
-represent. Subrange type entries may also be used to represent
+represent. 
+Subrange type entries may also be used to represent
 the bounds of array dimensions.}
 
 A subrange type is represented by a debugging information
 entry with the 
+\addtoindexx{subrange type entry}
 tag \livetarg{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}. 
 If a name has been
 given to the subrange type, then the subrange type entry
@@ -1932,7 +1969,8 @@ If the amount of storage allocated to hold each element of an
 object of the given subrange type is different from the amount
 of storage that is normally allocated to hold an individual
 object of the indicated element type, then the subrange
-type entry has a \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or 
+type entry has a 
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} attribute or 
 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
 attribute, whose value 
 (see Section \refersec{chap:staticanddynamicvaluesofattributes})