\section{Accessibility Codes}
\label{datarep:accessibilitycodes}
-The encodings of the constants used in the \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
-attribute are given in
+The encodings of the constants used in the
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+attribute
+\addtoindexx{accessibility attribute!encoding}
+are given in
Table \refersec{tab:accessibilityencodings}.
\begin{centering}
\endlastfoot
\livelink{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&0x0001&0 \\
-\livelink{chap:DWLANGC}{DW\-\_LANG\-\_C}&0x0002&0 \\
-\livelink{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag &0x0003&1 \\
+\livelink{chap:DWLANGC}{DW\-\_LANG\-\_C}&0x0002&0 \\
+\livelink{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag &0x0003&1 \addtoindexx{Ada} \\
\livelink{chap:DWLANGCplusplus}{DW\-\_LANG\-\_C\-\_plus\-\_plus} &0x0004&0 \\
\livelink{chap:DWLANGCobol74}{DW\-\_LANG\-\_Cobol74} \dag &0x0005&1 \\
\livelink{chap:DWLANGCobol85}{DW\-\_LANG\-\_Cobol85} \dag &0x0006&1 \\
\livelink{chap:DWLANGModula2}{DW\-\_LANG\-\_Modula2}&0x000a&1 \\
\livelink{chap:DWLANGJava}{DW\-\_LANG\-\_Java}&0x000b&0 \\
\livelink{chap:DWLANGC99}{DW\-\_LANG\-\_C99}&0x000c&0 \\
-\livelink{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag &0x000d&1 \\
+\livelink{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag &0x000d&1 \addtoindexx{Ada} \\
\livelink{chap:DWLANGFortran95}{DW\-\_LANG\-\_Fortran95} &0x000e&1 \\
\livelink{chap:DWLANGPLI}{DW\-\_LANG\-\_PLI} \dag &0x000f&1 \\
\livelink{chap:DWLANGObjC}{DW\-\_LANG\-\_ObjC}&0x0010&0 \\
that can be the object).
If an object has a descriptor, then the DWARF type for that
-object will have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. If an object
+object will have a
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. If an object
does not have a descriptor, then usually the DWARF type for the
-object will not have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}. (See the following
-Ada example for a case where the type for an object without
+object will not have a
+\livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}.
+(See the following
+\addtoindex{Ada} example for a case where the type for an object without
a descriptor does have a \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} attribute. In
that case the object doubles as its own descriptor.)
\label{app:adaexample}
Figure \refersec{fig:adaexamplesourcefragment}
-illustrates two kinds of Ada parameterized array, one embedded in a record.
+illustrates two kinds of \addtoindex{Ada}
+parameterized array, one embedded in a record.
\begin{figure}[here]
\end{figure}
VEC1 illustrates an (unnamed) array type where the upper bound
-of the first and only dimension is determined at runtime. Ada
+of the first and only dimension is determined at runtime.
+\addtoindex{Ada}
semantics require that the value of an array bound is fixed at
the time the array type is elaborated (where elaboration refers
to the runtime executable aspects of type processing). For
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("M")
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
12\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
- ! No name, default (Ada) order, default stride
+ ! No name, default (\addtoindex{Ada}) order, default stride
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
13\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to subtype TEENY at 21\$)
\livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}(constant 0)
28\$: \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type}
- ! No name, default (Ada) order, default stride
+ ! No name, default (\addtoindex{Ada}) order, default stride
! Default data location
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to INTEGER)
29\$: \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}
% Heren livelink we cannot use \dash or \dash{}.
&\livelink{chap:DWATabstractoriginoutoflineinstance}{Out-of-line instances of inline subprograms} \\
\livetarg{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
-&\livelink{chap:DWATaccessibilitycandadadeclarations}{C++ and Ada declarations} \\
+&\livelink{chap:DWATaccessibilitycandadadeclarations}{C++ and Ada declarations} \addtoindexx{Ada} \\
&\livelink{chap:DWATaccessibilitycppbaseclasses}{C++ base classes} \\
&\livelink{chap:DWATaccessibilitycppinheritedmembers}{C++ inherited members} \\
\livetarg{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
\livetarg{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}
&\livelink{chap:DWATframebasesubroutineframebaseaddress}{Subroutine frame base address} \\
\livetarg{chap:DWATfriend}{DW\-\_AT\-\_friend}
-&\livelink{chap:DWATfriendfriendrelationship}{Friend relationship} \\
+&\livelinki{chap:DWATfriendfriendrelationship}{Friend relationship}{friend relationship} \\
\livetarg{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}
-&\livelink{chap:DWAThighpccontinguousrangeofcodeaddresses}{Contiguous range of code addresses} \\
+&\livelinki{chap:DWAThighpccontinguousrangeofcodeaddresses}{Contiguous range of code addresses}{contiguous range of code addresses} \\
\livetarg{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}
-&\livelink{chap:DWATidentifiercaseidentifiercaserule}{Identifier case rule} \\
+&\livelink{chap:DWATidentifiercaseidentifiercaserule}{Identifier case rule}{identifier case rule} \\
\livetarg{chap:DWATimport}{DW\-\_AT\-\_import}
-&\livelink{chap:DWATimportimporteddeclaration}{Imported declaration} \\
-&\livelink{chap:DWATimportimportedunit}{Imported unit} \\
-&\livelink{chap:DWATimportnamespacealias}{Namespace alias} \\
-&\livelink{chap:DWATimportnamespaceusingdeclaration}{Namespace using declaration} \\
-&\livelink{chap:DWATimportnamespaceusingdirective}{Namespace using directive} \\
+&\livelink{chap:DWATimportimporteddeclaration}{Imported declaration}{imported declaration} \\
+&\livelinki{chap:DWATimportimportedunit}{Imported unit}{imported unit} \\
+&\livelinki{chap:DWATimportnamespacealias}{Namespace alias}{namespace alias} \\
+&\livelinki{chap:DWATimportnamespaceusingdeclaration}{Namespace using declaration}{namespace using declaration} \\
+&\livelinki{chap:DWATimportnamespaceusingdirective}{Namespace using directive}{namespace using directive} \\
\livetarg{chap:DWATinline}{DW\-\_AT\-\_inline}
&\livelinki{chap:DWATinlineabstracttinstance}{Abstract instance}{abstract instance} \\
-&\livelink{chap:DWATinlineinlinedsubroutine}{Inlined subroutine} \\
+&\livelinki{chap:DWATinlineinlinedsubroutine}{Inlined subroutine}{inlined subroutine} \\
\livetarg{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
&\livelink{chap:DWATisoptionaloptionalparameter}{Optional parameter} \\
\livetarg{chap:DWATlanguage}{DW\-\_AT\-\_language}
\livetarg{chap:DWATordering}{DW\-\_AT\-\_ordering}
&\livelink{chap:DWATorderingarrayrowcolumnordering}{Array row/column ordering} \\
\livetarg{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
-&\livelink{chap:DWATpicturestringpicturestringfornumericstringtype}{Picture string for numeric string type} \\
+&\livelinki{chap:DWATpicturestringpicturestringfornumericstringtype}{Picture string for numeric string type}{picture string for numeric string type} \\
\livetarg{chap:DWATpriority}{DW\-\_AT\-\_priority}
-&\livelink{chap:DWATprioritymodulepriority}{Module priority}\\
+&\livelinki{chap:DWATprioritymodulepriority}{Module priority}{module priority}\\
\livetarg{chap:DWATproducer}{DW\-\_AT\-\_producer}
-&\livelink{chap:DWATproducercompileridentification}{Compiler identification}\\
+&\livelinki{chap:DWATproducercompileridentification}{Compiler identification}{compiler identification}\\
\livetarg{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
-&\livelink{chap:DWATprototypedsubroutineprototype}{Subroutine prototype}\\
+&\livelinki{chap:DWATprototypedsubroutineprototype}{Subroutine prototype}{subroutine prototype}\\
\livetarg{chap:DWATpure}{DW\-\_AT\-\_pure}
-&\livelink{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine} \\
+&\livelinki{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine}{pure property of a subroutine} \\
\livetarg{chap:DWATranges}{DW\-\_AT\-\_ranges}
&\livelink{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses} \\
\livetarg{chap:DWATrecursive}{DW\-\_AT\-\_recursive}
\livetarg{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
&\livelink{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location} \\
\livetarg{chap:DWATsegment}{DW\-\_AT\-\_segment}
-&\livelink{chap:DWATsegmentaddressinginformation}{Addressing information} \\
+&\livelinki{chap:DWATsegmentaddressinginformation}{Addressing information}{addressing information} \\
\livetarg{chap:DWATsibling}{DW\-\_AT\-\_sibling}
-&\livelink{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship} \\
+&\livelinki{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship}{debugging information entry relationship} \\
\livetarg{chap:DWATsmall}{DW\-\_AT\-\_small}
-&\livelink{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type} \\
+&\livelinki{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type}{scale factor for fixed-point type} \\
\livetarg{chap:DWATsignature}{DW\-\_AT\-\_signature}
-&\livelink{chap:DWATsignaturetypesignature}{Type signature}\\
+&\livelinki{chap:DWATsignaturetypesignature}{Type signature}{type signature}\\
\livetarg{chap:DWATspecification}{DW\-\_AT\-\_specification}
&\livelink{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{Incomplete, non-defining, or separate declaration corresponding to a declaration } \\
\livetarg{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
-&\livelink{chap:DWATstartscopeobjectdeclaration}{Object declaration}\\
-&\livelink{chap:DWATstartscopetypedeclaration}{Type declaration}\\
+&\livelinki{chap:DWATstartscopeobjectdeclaration}{Object declaration}{object declaration}\\
+&\livelinki{chap:DWATstartscopetypedeclaration}{Type declaration}{type declaration}\\
\livetarg{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
-&\livelink{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame} \\
+&\livelinki{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame}{location of uplevel frame} \\
\livetarg{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}
&\livelink{chap:DWATstmtlistlinenumberinformationforunit}{Line number information for unit}\\
\livetarg{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
\section{Accessibility of Declarations}
\label{chap:accessibilityofdeclarations}
-\textit{Some languages, notably C++ and Ada, have the concept of
+\textit{Some languages, notably C++ and
+\addtoindex{Ada}, have the concept of
the accessibility of an object or of some other program
entity. The accessibility specifies which classes of other
program objects are permitted access to the object in question.}
The accessibility of a declaration is
\hypertarget{chap:DWATaccessibilitycandadadeclarations}
represented by a
-\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} attribute, whose
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+attribute, whose
+\addtoindexx{accessibility attribute}
value is a constant drawn from the set of codes listed in Figure
\ref{fig:accessibilitycodes}.
``named'' in ways which are not valid identifiers in the
programming language. For example, several languages may
capture or freeze the value of a variable at a particular
-point in the program. Ada 95 has package elaboration routines,
+point in the program.
+\addtoindex{Ada} 95 has package elaboration routines,
type descriptions of the form typename’Class, and
``access typename'' parameters. }
Fortran common \nolink{blocks}, are accommodated by creating attributes
that are used only for those languages.
This document is
-believed to cover most debugging information needs of Ada,
+believed to cover most debugging information needs of
+addtoindex{Ada},
C, C++, COBOL, and Fortran; it also covers the basic needs
of various other languages.
\label{chap:acceleratedaccess}
\textit{A debugger frequently needs to find the debugging information
+\addtoindexx{accelerated access}
for a program entity defined outside of the compilation unit
where the debugged program is currently stopped. Sometimes the
debugger will know only the name of the entity; sometimes only
\subsection{Lookup by Name}
For lookup by name, two tables are maintained in separate
+\addtoindex{accelerated access!by name}
object file sections named
\addtoindex{.debug\_pubnames} for objects and
functions, and
\subsection{Lookup by Address}
For lookup by address, a table is maintained in a separate
+\addtoindex{accelerated access!by address}
object file section called
\addtoindex{.debug\_aranges}. The table consists
of sets of variable length entries, each set describing the
\textit{Debuggers often need to be able to view and modify the state of any subroutine activation that is
+\addtoindexx{activation!call frame}
on the call stack. An activation consists of:}
\begin{itemize}
\label{fig:languagenames}
\begin{tabular}{ll}
Language name & Meaning\\ \hline
-\livetarg{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag&ISO Ada:1983 \\
-\livetarg{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag&ISO Ada:1995 \\
+\livetarg{chap:DWLANGAda83}{DW\-\_LANG\-\_Ada83} \dag&ISO Ada:1983 \addtoindexx{Ada} \\
+\livetarg{chap:DWLANGAda95}{DW\-\_LANG\-\_Ada95} \dag&ISO Ada:1995 \addtoindexx{Ada} \\
\livetarg{chap:DWLANGC}{DW\-\_LANG\-\_C}&Non-standardized C, such as K\&R \\
\livetarg{chap:DWLANGC89}{DW\-\_LANG\-\_C89}&ISO C:1989 \\
\livetarg{chap:DWLANGC99}{DW\-\_LANG\-\_C99} & ISO C:1999 \\
of the integer value in memory and the associated constant
entry for the type.
-\textit{The \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute is defined with the Ada small
+\textit{The \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} attribute
+is defined with the \addtoindex{Ada} small
attribute in mind.}
\begin{figure}[here]
%The following reference was valid, so the following is probably correct.
Section \refersec{chap:typedefentries},
respectively). As another
-example, in Ada such an unspecified type entry can be referred
+example, in \addtoindex{Ada} such an unspecified type entry can be referred
to by the type attribute of an access type where the denoted
type is incomplete (the name is declared as a type but the
definition is deferred to a separate compilation unit). Type
\centering
\begin{tabular}{lp{9cm}}
Name&Meaning\\ \hline
-\livetarg{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} & C or C++ const qualified type \\
-\livetarg{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}& Pascal or Ada packed type \\
+\livetarg{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type} & C or C++ const qualified type \addtoindexx{C} \addtoindexx{C++} \\
+\livetarg{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}& Pascal or Ada packed type \addtoindexx{Ada} \addtoindexx{Pascal} \\
\livetarg{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type} & Pointer to an object of the type being modified \\
\livetarg{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}& C++ (lvalue) reference to an object of the type
being modified \\
An inheritance entry
\hypertarget{chap:DWATaccessibilitycppinheritedmembers}
-may have a
+may
+\addtoindexx{accessibility attribute}
+have a
\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute. If no accessibility attribute
is present, private access is assumed for an entry of a class
\label{chap:accessdeclarations}
\textit{In C++, a derived class may contain access declarations that
+\addtoindex{access declaration entry}
change the accessibility of individual class members from the
overall accessibility specified by the inheritance declaration.
A single access declaration may refer to a set of overloaded
An access declaration entry
\hypertarget{chap:DWATaccessibilitycppbaseclasses}
-also has a
+also
+has a
\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute describing the declared accessibility of the named
entities.
The data member entry has a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute to denote
the type of that member.
-A data member entry may have a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+A data member entry may
+\addtoindexx{accessibility attribute}
+have a
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute. If no accessibility attribute is present, private
access is assumed for an entry of a class and public access
is assumed for an entry of a structure, union, or interface.
\textit{Attribute \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} is new in DWARF Version 4 and
is also used for base types
-(see Section \refersec{chap:basetypeentries}).
+(see Section
+\refersec{chap:basetypeentries}).
It replaces the
\livetarg{chap:DWATbitoffsetdatamemberbitlocation}
attributes \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset} and \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} when used to
in DWARF V3 and earlier. The earlier attributes are defined
in a manner suitable for bit field members on big-endian
architectures but which is either awkward or incomplete for
-use on little-endian architectures. (\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} also
+use on little-endian architectures.
+(\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} also
has other uses that are not affected by this change.)}
-\textit{The \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}, \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
+\textit{The \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size},
+\livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size} and
\livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
attribute combination is deprecated for data members in DWARF
Version 4, but implementations may continue to support this
as non\dash member global subroutine entries
(see Section \refersec{chap:subroutineandentrypointentries}).
-A member function entry may have a \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
+A
+\addtoindexx{accessibility attribute}
+member function entry may have a
+\livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
attribute. If no accessibility attribute is present, private
access is assumed for an entry of a class and public access
is assumed for an entry of a structure, union or interface.
If the lower bound value is missing, the value is assumed to
be a language\dash dependent default constant. The default lower
-bound is 0 for C, C++, D, Java, Objective C, Objective C++,
-Python, and UPC. The default lower bound is 1 for Ada, COBOL,
-Fortran, Modula\dash 2, Pascal and PL/I.
+bound is 0 for
+\addtoindex{C}, \addtoindex{C++},
+\addtoindex{D},
+\addtoindex{Java},
+\addtoindex{Objective C},
+\addtoindex{Objective C++},
+\addtoindex{Python}, and
+\addtoindex{UPC}.
+The default lower bound is 1 for
+\addtoindex{Ada}, \addtoindex{COBOL},
+\addtoindex{Fortran},
+\addtoindex{Modula}\dash 2,
+\addtoindex{Pascal} and
+\addtoindex{PL/I}.
\textit{No other default lower bound values are currently defined.}
A non\dash zero value is interpreted as allocated or associated,
and zero is interpreted as not allocated or not associated.
-\textit{For Fortran 90, if the \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated} attribute is present,
+\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
variable is never associated with a dynamic object or the
implementation does not track whether the associated object
resulted from execution of an ALLOCATE statement rather than
pointer assignment.}
-\textit{For examples using \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} for Ada and Fortran 90
+\textit{For examples using
+\livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated} for \addtoindex{Ada} and
+\addtoindex{Fortran} 90
arrays,
see Appendix \refersec{app:aggregateexamples}.}