Attributes table AT_f* i* l* now has links
[dwarf-doc.git] / dwarf5 / latexdoc / generaldescription.tex
index 4ec0434..7761c7e 100644 (file)
@@ -204,137 +204,136 @@ actually declared in the source} \\
 \livetarg{chap:DWATcount}{DW\-\_AT\-\_count}
 &\livelink{chap:DWATcountelementsofsubrangetype}{Elements of subrange type} \\
 \livetarg{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
-&Base type bit location \\
-&Data member bit location \\
+&\livelink{chap:DWATdatabitoffsetbasetypebitlocation}{Base type bit location} \\
+&\livelink{chap:DWATdatabitoffsetdatamemberbitlocation}{Data member bit location} \\
 \livetarg{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location} 
-&Indirection to actual data \\
+&\livelink{chap:DWATdatalocationindirectiontoactualdata}{Indirection to actual data} \\
 \livetarg{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
-&Data member location \\
-&Inherited member location \\
+&\livelink{chap:DWATdatamemberlocationdatamemberlocation}{Data member location} \\
+&\livelink{chap:DWATdatamemberlocationinheritedmemberlocation}{Inherited member location} \\
 \livetarg{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
-&Decimal scale factor \\
+&\livelink{chap:DWATdecimalscaledecimalscalefactor}{Decimal scale factor} \\
 \livetarg{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
-&Decimal sign representation \\
+&\livelink{chap:DWATdecimalsigndecimalsignrepresentation}{Decimal sign representation} \\
 \livetarg{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
-&Column position of source declaration \\
+&\livelink{chap:DWATdeclcolumncolumnpositionofsourcedeclaration}{Column position of source declaration} \\
 \livetarg{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}
-&File containing source declaration \\
+&\livelink{chap:DWATdeclfilefilecontainingsourcedeclaration}{File containing source declaration} \\
 \livetarg{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}
-&Line number of source declaration \\
+&\livelink{chap:DWATdecllinelinenumberofsourcedeclaration}{Line number of source declaration} \\
 \livetarg{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}
-&Incomplete, non\dash defining, or separate entity declaration \\
+&\livelink{chap:DWATdeclarationincompletenondefiningorseparateentitydeclaration}{Incomplete, non-defining, or separate entity declaration} \\
 \livetarg{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
-&Default value of parameter \\
+&\livelink{chap:DWATdefaultvaluedefaultvalueofparameter}{Default value of parameter} \\
 \livetarg{chap:DWATdescription}{DW\-\_AT\-\_description} 
-& Artificial name or description \\
+&\livelink{chap:DWATdescriptionartificialnameordescription}{Artificial name or description} \\
 \livetarg{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
-&Digit count for packed decimal or numeric string type\\
+&\livelink{chap:DWATdigitcountdigitcountforpackeddecimalornumericstringtype}{Digit count for packed decimal or numeric string type} \\
 \livetarg{chap:DWATdiscr}{DW\-\_AT\-\_discr}
-&Discriminant of variant part\\
+&\livelink{chap:DWATdiscrdiscriminantofvariantpart}{Discriminant of variant part} \\
 \livetarg{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
-&List of discriminant values\\
+&\livelink{chap:DWATdiscrlistlistofdiscriminantvalues}{List of discriminant values} \\
 \livetarg{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
-&Discriminant value\\
+&\livelink{chap:DWATdiscrvaluediscriminantvalue}{Discriminant value} \\
 \livetarg{chap:DWATelemental}{DW\-\_AT\-\_elemental}
-&Elemental property of a subroutine\\
+&\livelink{chap:DWATelementalelementalpropertyofasubroutine}{Elemental property of a subroutine} \\
 \livetarg{chap:DWATencoding}{DW\-\_AT\-\_encoding}
-&Encoding of base type\\
+&\livelink{chap:DWATencodingencodingofbasetype}{Encoding of base type} \\
 \livetarg{chap:DWATendianity}{DW\-\_AT\-\_endianity}
-&Endianity of data\\
+&\livelink{chap:DWATendianityendianityofdata}{Endianity of data} \\
 \livetarg{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}
-&Entry address of module initialization\\
-&Entry address of subprogram\\
-&Entry address of inlined subprogram\\
+&\livelink{chap:DWATentrypcentryaddressofmoduleinitialization}{Entry address of module initialization}\\
+&\livelink{chap:DWATentrypcentryaddressofsubprogram}{Entry address of subprogram} \\
+&\livelink{chap:DWATentrypcentryaddressofinlinedsubprogram}{Entry address of inlined subprogram}\\
 \livetarg{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
-&Type safe enumeration definition\\
+&\livelink{chap:DWATenumclasstypesafeenumerationdefinition}{Type safe enumeration definition}\\
 \livetarg{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
-&Explicit property of member function\\
+&\livelink{chap:DWATexplicitexplicitpropertyofmemberfunction}{Explicit property of member function}\\
 \livetarg{chap:DWATextension}{DW\-\_AT\-\_extension}
-&Previous namespace extension or original namespace\\
+&\livelink{chap:DWATextensionpreviousnamespaceextensionororiginalnamespace}{Previous namespace extension or original namespace}\\
 \livetarg{chap:DWATexternal}{DW\-\_AT\-\_external}
-&External subroutine\\
-&External variable\\
+&\livelink{chap:DWATexternalexternalsubroutine}{External subroutine} \\
+&\livelink{chap:DWATexternalexternalvariable}{External variable} \\
 \livetarg{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}
-&Subroutine frame base address\\
+&\livelink{chap:DWATframebasesubroutineframebaseaddress}{Subroutine frame base address} \\
 \livetarg{chap:DWATfriend}{DW\-\_AT\-\_friend}
-&Friend relationship\\
+&\livelink{chap:DWATfriendfriendrelationship}{Friend relationship} \\
 \livetarg{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}
-&Contiguous range of code addresses\\
+&\livelink{chap:DWAThighpccontinguousrangeofcodeaddresses}{Contiguous range of code addresses} \\
 \livetarg{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}
-&Identifier case rule \\
+&\livelink{chap:DWATidentifiercaseidentifiercaserule}{Identifier case rule} \\
 \livetarg{chap:DWATimport}{DW\-\_AT\-\_import}
-&Imported declaration \\
-&Imported unit \\
-&Namespace alias \\
-&Namespace using declaration \\
-&Namespace using directive \\
+&\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} \\
 \livetarg{chap:DWATinline}{DW\-\_AT\-\_inline}
-&Abstract instance\\
-&Inlined subroutine\\
+&\livelink{chap:DWATinlineabstracttinstance}{Abstract instance} \\
+&\livelink{chap:DWATinlineinlinedsubroutine}{Inlined subroutine} \\
 \livetarg{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
-&Optional parameter\\
+&\livelink{chap:DWATisoptionaloptionalparameter}{Optional parameter} \\
 \livetarg{chap:DWATlanguage}{DW\-\_AT\-\_language}
-&Programming language\\
+&\livelink{chap:DWATlanguageprogramminglanguage}{Programming language} \\
 \livetarg{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name}
-&Object file linkage name of an entity\\
+&\livelink{chap:DWATlinkagenameobjectfilelinkagenameofanentity}{Object file linkage name of an entity}\\
 \livetarg{chap:DWATlocation}{DW\-\_AT\-\_location}
-&Data object location\\
+&\livelink{chap:DWATlocationdataobjectlocation}{Data object location}\\
 \livetarg{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}
-&Code address or range of addresses\\
+&\livelink{chap:DWATlowpccodeaddressorrangeofaddresses}{Code address or range of addresses}\\
 \livetarg{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
-&Lower bound of subrange\\
+&\livelink{chap:DWATlowerboundlowerboundofsubrange}{Lower bound of subrange} \\
 \livetarg{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}
-&Macro information (\#define, \#undef)\\
+&\livelink{chap:DWATmacroinfomacroinformation}{Macro information} (\#define, \#undef)\\
 \livetarg{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}
-&Main or starting subprogram\\
-&Unit containing main or starting subprogram\\
+&\livelink{chap:DWATmainsubprogrammainorstartingsubprogram}{Main or starting subprogram} \\
+&\livelink{chap:DWATmainsubprogramunitcontainingmainorstartingsubprogram}{Unit containing main or starting subprogram}\\
 \livetarg{chap:DWATmutable}{DW\-\_AT\-\_mutable}
-&Mutable property of member data\\
+&\livelink{chap:DWATmutablemutablepropertyofmemberdata}{Mutable property of member data} \\
 \livetarg{chap:DWATname}{DW\-\_AT\-\_name}
-&Name of declaration\\
-&Path name of compilation source\\
+&\livelink{chap:DWATnamenameofdeclaration}{Name of declaration}\\
+&\livelink{chap:DWATnamepathnameofcompilationsource}{Path name of compilation source} \\
 \livetarg{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}
-&Namelist item\\
+&\livelink{chap:DWATnamelistitemnamelistitem}{Namelist item}\\
 \livetarg{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}
-&Object (this, self) pointer of member function\\
+&\livelink{chap:DWATobjectpointerobjectthisselfpointerofmemberfunction}{Object (this, self) pointer of member function}\\
 \livetarg{chap:DWATordering}{DW\-\_AT\-\_ordering}
-&Array row/column ordering\\
+&\livelink{chap:DWATorderingarrayrowcolumnordering}{Array row/column ordering} \\
 \livetarg{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
-&Picture string for numeric string type\\
+&\livelink{chap:DWATpicturestringpicturestringfornumericstringtype}{Picture string for numeric string type} \\
 \livetarg{chap:DWATpriority}{DW\-\_AT\-\_priority}
-&Module priority\\
+&\livelink{chap:DWATprioritymodulepriority}{Module priority}\\
 \livetarg{chap:DWATproducer}{DW\-\_AT\-\_producer}
-&Compiler identification\\
+&\livelink{chap:DWATproducercompileridentification}{Compiler identification}\\
 \livetarg{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
-&Subroutine prototype\\
+&\livelink{chap:DWATprototypedsubroutineprototype}{Subroutine prototype}\\
 \livetarg{chap:DWATpure}{DW\-\_AT\-\_pure}
-&Pure property of a subroutine\\
+&\livelink{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine} \\
 \livetarg{chap:DWATranges}{DW\-\_AT\-\_ranges}
-&Non\dash contiguous range of code addresses\\
+&\livelink{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses} \\
 \livetarg{chap:DWATrecursive}{DW\-\_AT\-\_recursive}
-&Recursive property of a subroutine\\
+&\livelink{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine} \\
 \livetarg{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}
-&Subroutine return address save location\\
+&\livelink{chap:DWATreturnaddrsubroutinereturnaddresssavelocation}{Subroutine return address save location} \\
 \livetarg{chap:DWATsegment}{DW\-\_AT\-\_segment}
-&Addressing information\\
+&\livelink{chap:DWATsegmentaddressinginformation}{Addressing information} \\
 \livetarg{chap:DWATsibling}{DW\-\_AT\-\_sibling}
-&Debugging information entry relationship\\
+&\livelink{chap:DWATsiblingdebugginginformationentryrelationship}{Debugging information entry relationship} \\
 \livetarg{chap:DWATsmall}{DW\-\_AT\-\_small}
-&Scale factor for fixed\dash point type\\
+&\livelink{chap:DWATsmallscalefactorforfixedpointtype}{Scale factor for fixed-point type} \\
 \livetarg{chap:DWATsignature}{DW\-\_AT\-\_signature}
-&Type signature\\
+&\livelink{chap:DWATsignaturetypesignature}{Type signature}\\
 \livetarg{chap:DWATspecification}{DW\-\_AT\-\_specification}
-&Incomplete, non\dash defining, or separate declaration
-corresponding to a declaration\\
+&\livelink{chap:DWATspecificationincompletenondefiningorseparatedeclaration}{Incomplete, non-defining, or separate declaration corresponding to a declaration } \\
 \livetarg{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}
-&Object declaration\\
-&Type declaration\\
+&\livelink{chap:DWATstartscopeobjectdeclaration}{Object declaration}\\
+&\livelink{chap:DWATstartscopetypedeclaration}{Type declaration}\\
 \livetarg{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}
-&Location of uplevel frame\\
+&\livelink{chap:DWATstaticlinklocationofuplevelframe}{Location of uplevel frame} \\
 \livetarg{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}
-&Line number information for unit\\
+&\livelink{chap:DWATstmtlistlinenumberinformationforunit}{Line number information for unit}\\
 \livetarg{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
-&String length of string type\\
+&\livelink{chap:DWATstringlengthstringlengthofstringtype}{String length of string type} \\
 \livetarg{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
 &UPC array bound THREADS scale factor\\
 \livetarg{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}
@@ -477,6 +476,7 @@ children are represented as siblings of the first child.
 A chain of sibling entries is terminated by a null entry.
 
 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
@@ -1475,8 +1475,11 @@ given segment rather than as locations within a single flat
 address space.}
 
 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
+a 
+\livelink{chap:DWATsegment}{DW\-\_AT\-\_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 \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}, \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc},
@@ -1533,6 +1536,7 @@ typically represents the defining declaration of that
 entity. In certain contexts, however, a debugger might need
 information about a declaration of an entity that is not
 also a definition, or is otherwise incomplete, to evaluate
+\hypertarget{chap:DWATdeclarationincompletenondefiningorseparateentitydeclaration}
 an expression correctly.
 
 \textit{As an example, consider the following fragment of C code:}
@@ -1553,6 +1557,37 @@ void myfunc()
 value of the variable x passed to the function g is the value of the
 global variable x rather than of the local version.}
 
+\subsection{Non-Defining Declarations}
+A debugging information entry that represents a non-defining or otherwise incomplete
+declaration of a program entity has a 
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
+attribute, which is a 
+\livelink{chap:flag}{flag}.
+
+\subsection{Declarations Completing Non-Defining Declarations}
+A debugging information entry that represents a 
+\hypertarget{chap:DWATspecificationincompletenondefiningorseparatedeclaration}
+declaration that completes another (earlier) 
+non\dash defining declaration may have a 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}
+attribute whose value is a reference to
+the debugging information entry representing the non-defining declaration. A debugging
+information entry with a 
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} 
+attribute does not need to duplicate information
+provided by the debugging information entry referenced by that specification attribute.
+
+It is not the case that all attributes of the debugging information entry referenced by a
+\livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} attribute 
+apply to the referring debugging information entry.
+
+\textit{For example,
+\livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling} and 
+\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
+clearly cannot apply to a referring
+entry.}
+
+
 
 \section{Declaration Coordinates}
 \label{chap:declarationcoordinates}
@@ -1560,7 +1595,13 @@ global variable x rather than of the local version.}
 a declaration with its occurrence in the program source.
 }
 
-Any debugging information entry representing the
+Any debugging information 
+\hypertarget{chap:DWATdeclfilefilecontainingsourcedeclaration}
+entry 
+\hypertarget{chap:DWATdecllinelinenumberofsourcedeclaration}
+representing 
+\hypertarget{chap:DWATdeclcolumncolumnpositionofsourcedeclaration}
+the
 declaration of an object, module, subprogram or type may have
 \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line} and \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}
 attributes each of whose value is an unsigned integer constant.
@@ -1584,8 +1625,11 @@ indicates that no column has been specified.
 
 \section{Identifier Names}
 \label{chap:identifiernames}
-Any debugging information entry representing a program entity
-that has been given a name may have a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
+Any 
+\hypertarget{chap:DWATnamenameofdeclaration}
+debugging information entry representing a program entity
+that has been given a name may have a 
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 whose value is a string representing the name as it appears in
 the source program. A debugging information entry containing
 no name attribute, or containing a name attribute whose value
@@ -1605,7 +1649,10 @@ multiple whitespace characters may be compressed.}
 
 \section{Data Locations and DWARF Procedures}
 Any debugging information entry describing a data object (which
-includes variables and parameters) or common \livelink{chap:commonblockentry}{block} may have a
+\hypertarget{chap:DWATlocationdataobjectlocation}
+includes variables and parameters) or 
+common \livelink{chap:commonblockentry}{block}
+may have a
 \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value is a location description
 (see Section 2.6).  
 
@@ -1629,9 +1676,13 @@ DWARF expression operator
 Any debugging information entry describing an entity that has
 a machine code address or range of machine code addresses,
 which includes compilation units, module initialization,
+\hypertarget{chap:DWATrangesnoncontiguousrangeofcodeaddresses}
 subroutines, ordinary \livelink{chap:lexicalblock}{block}, 
 try/catch \nolink{blocks} (see Section\refersec{chap:tryandcatchblockentries}), 
-labels and
+labels 
+\hypertarget{chap:DWATlowpccodeaddressorrangeofaddresses}
+and
+\hypertarget{chap:DWAThighpccontinguousrangeofcodeaddresses}
 the like, may have
 
 \begin{itemize}
@@ -1828,8 +1879,12 @@ type descriptions of the form typename’Class, and
 ``access typename'' parameters.  }
 
 Generally, any debugging information
-entry that has, or may have, a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, may
-also have a \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute whose value is a
+entry that 
+\hypertarget{chap:DWATdescriptionartificialnameordescription}
+has, or may have, a 
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, may
+also have a 
+\livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute whose value is a
 null-terminated string providing a description of the entity.
 
 
@@ -1869,12 +1924,15 @@ associated distinct linkage name it may sometimes be useful
 for a producer to include this name in the DWARF description
 of the program to facilitate consumer access to and use of
 object file information about an entity and/or information
+\hypertarget{chap:DWATlinkagenameobjectfilelinkagenameofanentity}
 that is encoded in the linkage name itself.  
 }
 
 % Some trouble maybe with hbox full, so we try optional word breaks.
 A debugging
-information entry may have a \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute
+information entry may have a 
+\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name}
+attribute
 whose value is a null-terminated string describing the object
 file linkage name associated with the corresponding entity.