The new taglink.py app created links from all uses of TAGS
authorDavid Anderson <davea42@earthlink.net>
Wed, 30 May 2012 22:50:04 +0000 (15:50 -0700)
committerDavid Anderson <davea42@earthlink.net>
Wed, 30 May 2012 22:50:04 +0000 (15:50 -0700)
to the their definition.
The commit shows all these.
In addition I noted an erroneous FIXME (the text was
already complete) and deleted it.
A couple places used the ascii double-quote symbol, those
are now changed to the latex-standard `` and '' symbols.
Modified the python tests very slightly for better coverage
so modified the expected results too.

14 files changed:
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/dataobject.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex
dwarf5/tools/Makefile
dwarf5/tools/taglink.py [new file with mode: 0644]
dwarf5/tools/test1.base
dwarf5/tools/test1.in
dwarf5/tools/test2.base

index 713007f..be415d5 100644 (file)
@@ -38,7 +38,7 @@ DW\_AT\_decl\_file, and DW\_AT\_decl\_line.
 &DW\_AT\_name \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_array\_type
+\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_accessibility \\
@@ -80,7 +80,7 @@ DW\_TAG\_array\_type
 &DW\_AT\_small \\
 
  
-DW\_TAG\_catch\_block
+\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_high\_pc \\
@@ -89,7 +89,7 @@ DW\_TAG\_catch\_block
 &DW\_AT\_segment \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_class\_type
+\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
 
 &DECL \\
 &DW\_AT\_abstract\_origin \\
@@ -109,7 +109,7 @@ DW\_TAG\_class\_type
 &DW\_AT\_visibility \\
 
 
-DW\_TAG\_common\_block
+\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
 &DECL \\
 &DW\_AT\_declaration \\
 &DW\_AT\_description \\
@@ -120,7 +120,7 @@ DW\_TAG\_common\_block
 &DW\_AT\_sibling \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_common\_inclusion
+\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion}
 &DECL \\
 &DW\_AT\_common\_reference \\
 &DW\_AT\_declaration \\
@@ -128,7 +128,7 @@ DW\_TAG\_common\_inclusion
 &DW\_AT\_visibility \\
 
 
-DW\_TAG\_compile\_unit
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
 &DW\_AT\_base\_types \\
 &DW\_AT\_comp\_dir \\
 &DW\_AT\_identifier\_case \\
@@ -144,12 +144,12 @@ DW\_TAG\_compile\_unit
 &DW\_AT\_stmt\_list \\
 &DW\_AT\_use\_UTF8 \\
 
-DW\_TAG\_condition
+\livelink{chap:DWTAGcondition}{DW\_TAG\_condition}
 &DECL \\
 &DW\_AT\_name \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_const\_type
+\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
 &DW\_AT\_allocated \\
 &DW\_AT\_associated \\
 &DW\_AT\_data\_location \\
@@ -157,7 +157,7 @@ DW\_TAG\_const\_type
 &DW\_AT\_sibling \\
 &DW\_AT\_type \\
 
-DW\_TAG\_constant
+\livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_const\_value \\
@@ -172,10 +172,10 @@ DW\_TAG\_constant
 &DW\_AT\_type \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_dwarf\_procedure
+\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}
 &DW\_AT\_location \\
 
-DW\_TAG\_entry\_point
+\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point}
 &DECL \\
 &DW\_AT\_address\_class \\
 &DW\_AT\_description \\
@@ -190,7 +190,7 @@ DW\_TAG\_entry\_point
 &DW\_AT\_type \\
 
 
-DW\_TAG\_enumeration\_type
+\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
 DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_accessibility \\
@@ -212,14 +212,14 @@ DECL \\
 &DW\_AT\_type \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_enumerator
+\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
 &DECL \\
 &DW\_AT\_const\_value \\
 &DW\_AT\_description \\
 &DW\_AT\_name \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_file\_type
+\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_allocated \\
@@ -234,7 +234,7 @@ DW\_TAG\_file\_type
 &DW\_AT\_type \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_formal\_parameter
+\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_artificial \\
@@ -250,13 +250,13 @@ DW\_TAG\_formal\_parameter
 &DW\_AT\_type \\
 &DW\_AT\_variable\_parameter \\
 
-DW\_TAG\_friend
+\livelink{chap:DWTAGfriend}{DW\_TAG\_friend}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_friend \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_imported\_declaration
+\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_description \\
@@ -265,16 +265,16 @@ DW\_TAG\_imported\_declaration
 &DW\_AT\_sibling \\
 &DW\_AT\_start\_scope \\
 
-DW\_TAG\_imported\_module
+\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}
 &DECL \\
 &DW\_AT\_import \\
 &DW\_AT\_sibling \\
 &DW\_AT\_start\_scope \\
 
-DW\_TAG\_imported\_unit
+\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
 &DW\_AT\_import \\
 
-DW\_TAG\_inheritance
+\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_data\_member\_location \\
@@ -282,7 +282,7 @@ DW\_TAG\_inheritance
 &DW\_AT\_type \\
 &DW\_AT\_virtuality \\
 
-DW\_TAG\_inlined\_subroutine
+\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_call\_column \\
 &DW\_AT\_call\_file \\
@@ -298,7 +298,7 @@ DW\_TAG\_inlined\_subroutine
 &DW\_AT\_start\_scope \\
 &DW\_AT\_trampoline \\
 
-DW\_TAG\_interface\_type
+\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_description \\
@@ -306,7 +306,7 @@ DW\_TAG\_interface\_type
 &DW\_AT\_sibling \\
 &DW\_AT\_start\_scope \\
 
-DW\_TAG\_label
+\livelink{chap:DWTAGlabel}{DW\_TAG\_label}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_description \\
@@ -316,7 +316,7 @@ DW\_TAG\_label
 &DW\_AT\_start\_scope \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_lexical\_block
+\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_description \\
@@ -327,7 +327,7 @@ DW\_TAG\_lexical\_block
 &DW\_AT\_segment \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_member
+\livelink{chap:DWTAGmember}{DW\_TAG\_member}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_bit\_offset \\
@@ -344,7 +344,7 @@ DW\_TAG\_member
 &DW\_AT\_visibility \\
 
 
-DW\_TAG\_module
+\livelink{chap:DWTAGmodule}{DW\_TAG\_module}
 &DECL \\
 &DW\_AT\_accessibility \\
 &DW\_AT\_declaration \\
@@ -360,7 +360,7 @@ DW\_TAG\_module
 &DW\_AT\_specification \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_namelist
+\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist}
 &DECL \\
 &DW\_AT\_abstract\_origin \\
 &DW\_AT\_accessibility \\
@@ -369,12 +369,12 @@ DW\_TAG\_namelist
 &DW\_AT\_sibling \\
 &DW\_AT\_visibility \\
 
-DW\_TAG\_namelist\_item
+\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}
 &DECL \\
 &DW\_AT\_namelist\_item \\
 &DW\_AT\_sibling \\
 
-DW\_TAG\_namespace
+\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
 &DECL \\
 &DW\_AT\_description \\
 &DW\_AT\_extension \\
@@ -382,7 +382,7 @@ DW\_TAG\_namespace
 &DW\_AT\_sibling \\
 &DW\_AT\_start\_scope \\
 
-DW\_TAG\_packed\_type
+\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type}
 &DW\_AT\_allocated \\
 &DW\_AT\_associated \\
 &DW\_AT\_data\_location \\
@@ -390,7 +390,7 @@ DW\_TAG\_packed\_type
 &DW\_AT\_sibling \\
 &DW\_AT\_type \\
 
-DW\_TAG\_partial\_unit
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
 &DW\_AT\_base\_types  \\  
 &DW\_AT\_comp\_dir  \\
 &DW\_AT\_description  \\
@@ -408,7 +408,7 @@ DW\_TAG\_partial\_unit
 &DW\_AT\_use\_UTF8  \\
 
 
-DW\_TAG\_pointer\_type  \\
+\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}  \\
 &DW\_AT\_address\_class  \\
 &DW\_AT\_allocated  \\
 &DW\_AT\_associated  \\
@@ -417,7 +417,7 @@ DW\_TAG\_pointer\_type  \\
 &DW\_AT\_sibling  \\
 &DW\_AT\_type  \\
 
-DW\_TAG\_ptr\_to\_member\_type
+\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_address\_class  \\
@@ -434,7 +434,7 @@ DW\_TAG\_ptr\_to\_member\_type
 &DW\_AT\_visibility  \\
 
 
-DW\_TAG\_reference\_type
+\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
 &DW\_AT\_address\_class  \\
 &DW\_AT\_allocated  \\
 &DW\_AT\_associated  \\
@@ -443,7 +443,7 @@ DW\_TAG\_reference\_type
 &DW\_AT\_sibling  \\
 &DW\_AT\_type  \\
 
-DW\_TAG\_restrict\_type
+\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_type}
 &DW\_AT\_allocated  \\
 &DW\_AT\_associated  \\
 &DW\_AT\_data\_location  \\
@@ -451,7 +451,7 @@ DW\_TAG\_restrict\_type
 &DW\_AT\_sibling  \\
 &DW\_AT\_type  \\
 
-DW\_TAG\_rvalue\_reference\_type
+\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type}
 &DECL  \\
 &DW\_AT\_address\_class  \\
 &DW\_AT\_allocated  \\
@@ -462,7 +462,7 @@ DW\_TAG\_rvalue\_reference\_type
 &DW\_AT\_type  \\
 
 
-DW\_TAG\_set\_type
+\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -479,7 +479,7 @@ DW\_TAG\_set\_type
 &DW\_AT\_type  \\
 &DW\_AT\_visibility  \\
 
-DW\_TAG\_shared\_type
+\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}
 &DW\_AT\_allocated  \\
 &DW\_AT\_associated  \\
 &DW\_AT\_count  \\
@@ -489,7 +489,7 @@ DW\_TAG\_shared\_type
 &DW\_AT\_type  \\
 
 
-DW\_TAG\_string\_type
+\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -506,7 +506,7 @@ DW\_TAG\_string\_type
 &DW\_AT\_string\_length  \\
 &DW\_AT\_visibility  \\
 
-DW\_TAG\_structure\_type
+\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -524,7 +524,7 @@ DW\_TAG\_structure\_type
 &DW\_AT\_start\_scope  \\
 &DW\_AT\_visibility  \\
 
-DW\_TAG\_subprogram
+\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -561,7 +561,7 @@ DW\_TAG\_subprogram
 &DW\_AT\_virtuality  \\
 &DW\_AT\_vtable\_elem\_location  \\
 
-DW\_TAG\_subrange\_type
+\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -583,7 +583,7 @@ DW\_TAG\_subrange\_type
 &DW\_AT\_upper\_bound  \\
 &DW\_AT\_visibility  \\
 
-DW\_TAG\_subroutine\_type
+\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type}
 &DECL  \\
 &DW\_AT\_abstract\_origin  \\
 &DW\_AT\_accessibility  \\
@@ -600,7 +600,7 @@ DW\_TAG\_subroutine\_type
 &DW\_AT\_type  \\
 &DW\_AT\_visibility  \\
 
-DW\_TAG\_template\_alias
+\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_accessibility   \\
@@ -616,14 +616,14 @@ DW\_TAG\_template\_alias
 &DW\_AT\_type   \\
 &DW\_AT\_visibility   \\
 
-DW\_TAG\_template\_type\_parameter
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
 &DECL   \\
 &DW\_AT\_description   \\
 &DW\_AT\_name   \\
 &DW\_AT\_sibling   \\
 &DW\_AT\_type   \\
 
-DW\_TAG\_template\_value\_parameter 
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter} 
 &DECL   \\
 &DW\_AT\_const\_value   \\
 &DW\_AT\_description   \\
@@ -632,7 +632,7 @@ DW\_TAG\_template\_value\_parameter
 &DW\_AT\_type   \\
 
 
-DW\_TAG\_thrown\_type
+\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type}
 &DECL   \\
 &DW\_AT\_allocated   \\
 &DW\_AT\_associated   \\
@@ -640,7 +640,7 @@ DW\_TAG\_thrown\_type
 &DW\_AT\_sibling   \\
 &DW\_AT\_type   \\
 
-DW\_TAG\_try\_block
+\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_high\_pc   \\
@@ -649,7 +649,7 @@ DW\_TAG\_try\_block
 &DW\_AT\_segment   \\
 &DW\_AT\_sibling   \\
 
-DW\_TAG\_typedef
+\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_accessibility   \\
@@ -664,10 +664,10 @@ DW\_TAG\_typedef
 &DW\_AT\_type   \\
 &DW\_AT\_visibility   \\
 
-DW\_TAG\_type\_unit
+\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
 &DW\_AT\_language   \\
 
-DW\_TAG\_union\_type
+\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_accessibility   \\
@@ -686,19 +686,19 @@ DW\_TAG\_union\_type
 &DW\_AT\_visibility   \\
 
 
-DW\_TAG\_unspecified\_parameters
+\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_artificial   \\
 &DW\_AT\_sibling   \\
 
-DW\_TAG\_unspecified\_type
+\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
 &DECL   \\
 &DW\_AT\_description   \\
 &DW\_AT\_name    \\
 
 
-DW\_TAG\_variable
+\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
 &DECL    \\
 &DW\_AT\_abstract\_origin    \\
 &DW\_AT\_accessibility    \\
@@ -718,7 +718,7 @@ DW\_TAG\_variable
 &DW\_AT\_type    \\
 &DW\_AT\_visibility    \\
 
-DW\_TAG\_variant
+\livelink{chap:DWTAGvariant}{DW\_TAG\_variant}
 &DECL    \\
 &DW\_AT\_accessibility   \\
 &DW\_AT\_abstract\_origin   \\
@@ -727,7 +727,7 @@ DW\_TAG\_variant
 &DW\_AT\_discr\_value   \\
 &DW\_AT\_sibling   \\
 
-DW\_TAG\_variant\_part
+\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part}
 &DECL   \\
 &DW\_AT\_abstract\_origin   \\
 &DW\_AT\_accessibility   \\
@@ -736,7 +736,7 @@ DW\_TAG\_variant\_part
 &DW\_AT\_sibling   \\
 &DW\_AT\_type   \\
 
-DW\_TAG\_volatile\_type  
+\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type}  
 &DW\_AT\_allocated   \\
 &DW\_AT\_associated    \\
 &DW\_AT\_data\_location    \\
@@ -744,7 +744,7 @@ DW\_TAG\_volatile\_type
 &DW\_AT\_sibling    \\
 &DW\_AT\_type    \\
 
-DW\_TAG\_with\_stmt
+\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}
 &DW\_AT\_accessibility    \\
 &DW\_AT\_address\_class    \\
 &DW\_AT\_declaration    \\
index 90d8ce3..c4e9172 100644 (file)
@@ -301,18 +301,18 @@ normally not usable and
 DW\_FORM\_ref\_addr is not necessary
 for a local label.)}
 
-\textbf{Use of DW\_TAG\_compile\_unit versus 
-DW\_TAG\_partial\_unit}
+\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 
-DW\_TAG\_compile\_unit
+\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
 compilation unit.
 
 An \#include directive appearing outside any other
 declarations is a good candidate to be represented using
-DW\_TAG\_compile\_unit
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
 However, an \#include appearing inside
 a C++ namespace declaration or a function, for example, is
 not a good candidate because the entities included are not
@@ -321,36 +321,36 @@ necessarily file level entities.
 This also applies to Fortran INCLUDE lines when declarations
 are included into a procedure or module context.
 
-Consequently a compiler must use DW\_TAG\_partial\_unit (instead
-of DW\_TAG\_compile\_unit) in a section group whenever the section
+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
 directs consumers to ignore that compilation unit when scanning
 top level declarations and definitions.
 
-The DW\_TAG\_partial\_unit compilation unit will be referenced
+The \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} compilation unit will be referenced
 from elsewhere and the referencing locations give the
 appropriate context for interpreting the partial compilation
 unit.
 
-A DW\_TAG\_partial\_unit entry may have, as appropriate, any of
-the attributes assigned to a DW\_TAG\_compile\_unit.
+A \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} entry may have, as appropriate, any of
+the attributes assigned to a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}.
 
 
-\textbf{Use of DW\_TAG\_imported\_unit}
+\textbf{Use of \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}}
 
-A DW\_TAG\_imported\_unit debugging information entry has an
-DW\_AT\_import attribute referencing a DW\_TAG\_compile\_unit or
-DW\_TAG\_partial\_unit debugging information entry.
+A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry has an
+DW\_AT\_import attribute referencing a \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging information entry.
 
-A DW\_TAG\_imported\_unit debugging information entry refers
+A \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} debugging information entry refers
 to a 
-DW\_TAG\_compile\_unit or 
-DW\_TAG\_partial\_unit debugging
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or 
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
 information entry to specify that the 
-DW\_TAG\_compile\_unit or
-DW\_TAG\_partial\_unit contents logically appear at the point
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} contents logically appear at the point
 of the 
-DW\_TAG\_imported\_unit entry.
+\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} entry.
 
 
 \textbf{Use of DW\_FORM\_ref\_addr}
@@ -438,17 +438,17 @@ wa.h.
     my.compiler.company.cpp.wa.h.123456
 == section .debug\_info
 DW.cpp.wa.h.123456.1: ! linker global symbol
-    DW\_TAG\_compile\_unit
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
         DW\_AT\_language(DW\_LANG\_C\_plus\_plus)
         ...  ! other unit attributes
 DW.cpp.wa.h.123456.2: ! linker global symbol
-    DW\_TAG\_base\_type
+    \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("int")
 DW.cpp.wa.h.123456.3: ! linker global symbol
-    DW\_TAG\_structure\_type
+    \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_NAME("A")
 DW.cpp.wa.h.123456.4: ! linker global symbol
-        DW\_TAG\_member
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
         DW\_AT\_name("i")
         DW\_AT\_type(DW\_FORM\_refn to DW.cpp.wa.h.123456.2)
             ! (This is a local reference, so the more
@@ -467,23 +467,23 @@ in the section group shown above.
 == section .text
     [generated code for function f]
 == section .debug\_info
-    DW\_TAG\_compile\_unit
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
 .L1:                   ! local (non-linker) symbol
-        DW\_TAG\_reference\_type
+        \livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}
             DW\_AT\_type(reference to DW.cpp.wa.h.123456.3)
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("f")
             DW\_AT\_type(reference to DW.cpp.wa.h.123456.2)
-            DW\_TAG\_variable
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 DW\_AT\_name("a")
                 DW\_AT\_type(reference to .L1)
         ...
 \end{alltt}
 
-This example uses DW\_TAG\_compile\_unit for the section group,
+This example uses \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} for the section group,
 implying that the contents of the compilation unit are
 globally visible (in accordance with C++ language rules).
-DW\_TAG\_partial\_unit is not needed for the same reason.
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} is not needed for the same reason.
 
 \subsubsection{Fortran Example}
 
@@ -529,33 +529,33 @@ corresponding to the included file CommonStuff.fh.
 == section .debug\_info
 
 DW.myf90.CommonStuff.fh.654321.1:    ! linker global symbol
-    DW\_TAG\_partial\_unit
+    \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}
         ! ...compilation unit attributes, including...
         DW\_AT\_language(DW\_LANG\_Fortran90)
         DW\_AT\_identifier\_case(DW\_ID\_case\_insensitive)
 
 DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol
-3\$: DW\_TAG\_array\_type
+3\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         ! unnamed
         DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
             ! base type INTEGER
-        DW\_TAG\_subrange\_type
+        \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
             DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
                 ! base type INTEGER)
             DW\_AT\_lower\_bound(constant 1)
             DW\_AT\_upper\_bound(constant 100)
 
 DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
-    DW\_TAG\_common\_block
+    \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}
         DW\_AT\_name("Common1")
         DW\_AT\_location(Address of common block Common1)
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("C")
             DW\_AT\_type(reference to 3\$)
             DW\_AT\_location(address of C)
 
 DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol
-    DW\_TAG\_constant
+    \livelink{chap:DWTAGconstant}{DW\_TAG\_constant}
         DW\_AT\_name("SEVEN")
         DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
             ! base type INTEGER
@@ -574,18 +574,18 @@ shows the sections for the primary compilation unit.
     [code for function Foo]
 
 == section .debug\_info
-    DW\_TAG\_compile\_unit
-        DW\_TAG\_subprogram
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("Foo")
             DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
                 ! base type INTEGER
-            DW\_TAG\_imported\_unit
+            \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
                 DW\_AT\_import(reference to
                     DW.myf90.CommonStuff.fh.654321.1)
-            DW\_TAG\_common\_inclusion ! For Common1
+            \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! For Common1
                 DW\_AT\_common\_reference(reference to
                     DW.myf90.CommonStuff.fh.654321.3)
-            DW\_TAG\_variable ! For function result
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable} ! For function result
                 DW\_AT\_name("Foo")
                     DW\_AT\_type(reference to DW.f90.F90\$main.f.2)
                         ! base type INTEGER
@@ -619,29 +619,29 @@ Section \refersec{app:duplicateeliminationexample2companiondwarf}.
 
 \begin{alltt}
 == section .debug\_info
-    DW\_TAG\_compile\_unit
+    \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
         DW\_AT\_name(F90\$main)
-        DW\_TAG\_base\_type
+        \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
             DW\_AT\_name("INTEGER")
             DW\_AT\_encoding(DW\_ATE\_signed)
             DW\_AT\_byte\_size(...)
 
-        DW\_TAG\_base\_type
+        \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
             ...
         ...  ! other base types
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("F90\$main")
-            DW\_TAG\_imported\_unit
+            \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}
                 DW\_AT\_import(reference to
                     DW.myf90.CommonStuff.fh.654321.1)
-            DW\_TAG\_common\_inclusion ! for Common1
+            \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion} ! for Common1
                 DW\_AT\_common\_reference(reference to
                     DW.myf90.CommonStuff.fh.654321.3)
             ...
 \end{alltt}
 
 
-This example uses DW\_TAG\_partial\_unit for the section group
+This example uses \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} for the section group
 because the included declarations are not independently
 visible as global entities.
 
@@ -650,7 +650,7 @@ visible as global entities.
 
 The C++ example in this Section might appear to be equally
 valid as a C example. However, it is prudent to include
-a DW\_TAG\_imported\_unit in the primary unit (see Figure 84)
+a \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit} in the primary unit (see Figure 84)
 with an DW\_AT\_import attribute that refers to the proper unit
 in the section group.
 
@@ -744,30 +744,30 @@ in
 \label{app:typesignaturecomputation1dwarfrepresentation}
 
 \begin{alltt}
-  DW\_TAG\_type\_unit
+  \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
       DW\_AT\_language: DW\_LANG\_C\_plus\_plus (4)
-    DW\_TAG\_namespace
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
         DW\_AT\_name: "N"
 L1:
-      DW\_TAG\_structure\_type
+      \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
           DW\_AT\_name: "C"
           DW\_AT\_byte\_size: 8
           DW\_AT\_decl\_file: 1
           DW\_AT\_decl\_line: 5
-        DW\_TAG\_member
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name: "x"
             DW\_AT\_decl\_file: 1
             DW\_AT\_decl\_line: 6
             DW\_AT\_type: reference to L2
             DW\_AT\_data\_member\_location: 0
-        DW\_TAG\_member
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name: "y"
             DW\_AT\_decl\_file: 1
             DW\_AT\_decl\_line: 7
             DW\_AT\_type: reference to L2
             DW\_AT\_data\_member\_location: 4
 L2:
-     DW\_TAG\_base\_type
+     \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
          DW\_AT\_byte\_size: 4
          DW\_AT\_encoding: DW\_ATE\_signed
          DW\_AT\_name: "int"
@@ -784,16 +784,16 @@ Section \refersec{app:typesignaturecomputation1flattenedbytestream}.
 \label{app:typesignaturecomputation1flattenedbytestream}
 
 \begin{alltt}
-// Step 2: 'C' DW\_TAG\_namespace "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
 0x43 0x39 0x4e 0x00
-// Step 3: 'D' DW\_TAG\_structure\_type
+// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
 0x44 0x13
 // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "C"
 0x41 0x03 0x08 0x43 0x00
 // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 8
 0x41 0x0b 0x0d 0x08
 // Step 7: First child ("x")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "x"
     0x41 0x03 0x08 0x78 0x00
@@ -801,7 +801,7 @@ Section \refersec{app:typesignaturecomputation1flattenedbytestream}.
     0x41 0x38 0x0d 0x00
     // Step 6: 'T' DW\_AT\_type (type \#2)
     0x54 0x49
-        // Step 3: 'D' DW\_TAG\_base\_type
+        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         0x44 0x24
         // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "int"
         0x41 0x03 0x08 0x69 0x6e 0x74 0x00
@@ -809,12 +809,12 @@ Section \refersec{app:typesignaturecomputation1flattenedbytestream}.
         0x41 0x0b 0x0d 0x04
         // Step 4: 'A' DW\_AT\_encoding DW\_FORM\_sdata DW\_ATE\_signed
         0x41 0x3e 0x0d 0x05
-        // Step 7: End of DW\_TAG\_base\_type "int"
+        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
         0x00
-    // Step 7: End of DW\_TAG\_member "x"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
     0x00
 // Step 7: Second child ("y")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "y"
     0x41 0x03 0x08 0x78 0x00
@@ -822,9 +822,9 @@ Section \refersec{app:typesignaturecomputation1flattenedbytestream}.
     0x41 0x38 0x0d 0x04
     // Step 6: 'R' DW\_AT\_type (type \#2)
     0x52 0x49 0x02
-    // Step 7: End of DW\_TAG\_member "y"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
     0x00
-// Step 7: End of DW\_TAG\_structure\_type "C"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
 0x00
 \end{alltt}
 
@@ -841,80 +841,80 @@ Section \refersec{app:typesignaturecomputation2dwarfrepresentation}.
 \label{app:typesignaturecomputation2dwarfrepresentation}
 
 \begin{alltt}
-  DW\_TAG\_type\_unit
+  \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit}
       DW\_AT\_language: DW\_LANG\_C\_plus\_plus (4)
-    DW\_TAG\_namespace
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
           DW\_AT\_name: "N"
 L1:
-        DW\_TAG\_class\_type
+        \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
              DW\_AT\_name: "A"
              DW\_AT\_byte\_size: 20
              DW\_AT\_decl\_file: 1
              DW\_AT\_decl\_line: 10
-           DW\_TAG\_member
+           \livelink{chap:DWTAGmember}{DW\_TAG\_member}
                 DW\_AT\_name: "v\_"
                 DW\_AT\_decl\_file: 1
                 DW\_AT\_decl\_line: 15
                 DW\_AT\_type: reference to L2
                 DW\_AT\_data\_member\_location: 0
                 DW\_AT\_accessibility: DW\_ACCESS\_private
-          DW\_TAG\_member
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
                DW\_AT\_name: "next"
                DW\_AT\_decl\_file: 1
                DW\_AT\_decl\_line: 16
                DW\_AT\_type: reference to L3
                DW\_AT\_data\_member\_location: 4
                DW\_AT\_accessibility: DW\_ACCESS\_private
-          DW\_TAG\_member
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
                DW\_AT\_name: "bp"
                DW\_AT\_decl\_file: 1
                DW\_AT\_decl\_line: 17
                DW\_AT\_type: reference to L4
                DW\_AT\_data\_member\_location: 8
                DW\_AT\_accessibility: DW\_ACCESS\_private
-          DW\_TAG\_member
+          \livelink{chap:DWTAGmember}{DW\_TAG\_member}
                DW\_AT\_name: "c"
                DW\_AT\_decl\_file: 1
                DW\_AT\_decl\_line: 18
                DW\_AT\_type: 0xd28081e8 dcf5070a (signature for struct C)
                DW\_AT\_data\_member\_location: 12
                DW\_AT\_accessibility: DW\_ACCESS\_private
-       DW\_TAG\_subprogram
+       \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
            DW\_AT\_external: 1
            DW\_AT\_name: "A"
            DW\_AT\_decl\_file: 1
            DW\_AT\_decl\_line: 12
            DW\_AT\_declaration: 1
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
            DW\_AT\_type: reference to L3
            DW\_AT\_artificial: 1
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
            DW\_AT\_type: reference to L2
-       DW\_TAG\_subprogram
+       \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
            DW\_AT\_external: 1
            DW\_AT\_name: "v"
            DW\_AT\_decl\_file: 1
            DW\_AT\_decl\_line: 13
            DW\_AT\_type: reference to L2
            DW\_AT\_declaration: 1
-         DW\_TAG\_formal\_parameter
+         \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
            DW\_AT\_type: reference to L3
            DW\_AT\_artificial: 1
 L2:
-    DW\_TAG\_base\_type
+    \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
          DW\_AT\_byte\_size: 4
          DW\_AT\_encoding: DW\_ATE\_signed
          DW\_AT\_name: "int"
 L3:
-    DW\_TAG\_pointer\_type
+    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
          DW\_AT\_type: reference to L1
 L4:
-    DW\_TAG\_pointer\_type
+    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
          DW\_AT\_type: reference to L5
-    DW\_TAG\_namespace
+    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
          DW\_AT\_name: "N"
 L5:
-       DW\_TAG\_structure\_type
+       \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
            DW\_AT\_name: "B"
            DW\_AT\_declaration: 1
 \end{alltt}
@@ -944,16 +944,16 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
 \label{app:typesignatureexample2flattenedbytestream}
 
 \begin{alltt}
-// Step 2: 'C' DW\_TAG\_namespace "N"
+// Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
 0x43 0x39 0x4e 0x00
-// Step 3: 'D' DW\_TAG\_class\_type
+// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
 0x44 0x02
 // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "A"
 0x41 0x03 0x08 0x41 0x00
 // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 20
 0x41 0x0b 0x0d 0x14
 // Step 7: First child ("v\_")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "v\_"
     0x41 0x03 0x08 0x76 0x5f 0x00
@@ -963,7 +963,7 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
     0x41 0x38 0x0d 0x00
     // Step 6: 'T' DW\_AT\_type (type \#2)
     0x54 0x49
-        // Step 3: 'D' DW\_TAG\_base\_type
+        // Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         0x44 0x24
         // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "int"
         0x41 0x03 0x08 0x69 0x6e 0x74 0x00
@@ -971,12 +971,12 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
         0x41 0x0b 0x0d 0x04
         // Step 4: 'A' DW\_AT\_encoding DW\_FORM\_sdata DW\_ATE\_signed
         0x41 0x3e 0x0d 0x05
-        // Step 7: End of DW\_TAG\_base\_type "int"
+        // Step 7: End of \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type} "int"
         0x00
-    // Step 7: End of DW\_TAG\_member "v\_"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "v\_"
     0x00
 // Step 7: Second child ("next")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "next"
     0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
@@ -986,7 +986,7 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
     0x41 0x38 0x0d 0x04
     // Step 6: 'T' DW\_AT\_type (type \#3)
     0x54 0x49
-        // Step 3: 'D' DW\_TAG\_pointer\_type
+        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x44 0x0f
         // Step 5: 'N' DW\_AT\_type
         0x4e 0x49
@@ -994,12 +994,12 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
         0x43 0x39 0x4e 0x00 0x45
         // Step 5: "A"
         0x41 0x00
-        // Step 7: End of DW\_TAG\_pointer\_type
+        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x00
-    // Step 7: End of DW\_TAG\_member "next"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
     0x00
 // Step 7: Third child ("bp")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "bp"
     0x41 0x03 0x08 0x62 0x70 0x00
@@ -1009,7 +1009,7 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
     0x41 0x38 0x0d 0x08
     // Step 6: 'T' DW\_AT\_type (type \#4)
     0x54 0x49
-        // Step 3: 'D' DW\_TAG\_pointer\_type
+        // Step 3: 'D' \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
 0x44 0x0f
         // Step 5: 'N' DW\_AT\_type
         0x4e 0x49
@@ -1017,12 +1017,12 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
         0x43 0x39 0x4e 0x00 0x45
         // Step 5: "B"
         0x42 0x00
-        // Step 7: End of DW\_TAG\_pointer\_type
+        // Step 7: End of \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
         0x00
-    // Step 7: End of DW\_TAG\_member "next"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "next"
     0x00
 // Step 7: Fourth child ("c")
-    // Step 3: 'D' DW\_TAG\_member
+    // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
     0x44 0x0d
     // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "c"
     0x41 0x03 0x08 0x63 0x00
@@ -1032,16 +1032,16 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
     0x41 0x38 0x0d 0x0c
     // Step 6: 'T' DW\_AT\_type (type \#5)
     0x54 0x49
-        // Step 2: 'C' DW\_TAG\_namespace "N"
+        // Step 2: 'C' \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace} "N"
         0x43 0x39 0x4e 0x00
-        // Step 3: 'D' DW\_TAG\_structure\_type
+        // Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         0x44 0x13
         // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "C"
         0x41 0x03 0x08 0x43 0x00
         // Step 4: 'A' DW\_AT\_byte\_size DW\_FORM\_sdata 8
         0x41 0x0b 0x0d 0x08
         // Step 7: First child ("x")
-            // Step 3: 'D' DW\_TAG\_member
+            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             0x44 0x0d
             // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "x"
             0x41 0x03 0x08 0x78 0x00
@@ -1049,10 +1049,10 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
             0x41 0x38 0x0d 0x00
             // Step 6: 'R' DW\_AT\_type (type \#2)
             0x52 0x49 0x02
-            // Step 7: End of DW\_TAG\_member "x"
+            // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "x"
             0x00
         // Step 7: Second child ("y")
-            // Step 3: 'D' DW\_TAG\_member
+            // Step 3: 'D' \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             0x44 0x0d
             // Step 4: 'A' DW\_AT\_name DW\_FORM\_string "y"
             0x41 0x03 0x08 0x79 0x00
@@ -1060,19 +1060,19 @@ Section \refersec{app:typesignatureexample2flattenedbytestream}.
             0x41 0x38 0x0d 0x04
             // Step 6: 'R' DW\_AT\_type (type \#2)
             0x52 0x49 0x02
-            // Step 7: End of DW\_TAG\_member "y"
+            // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "y"
             0x00
-        // Step 7: End of DW\_TAG\_structure\_type "C"
+        // Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "C"
         0x00
-    // Step 7: End of DW\_TAG\_member "c"
+    // Step 7: End of \livelink{chap:DWTAGmember}{DW\_TAG\_member} "c"
     0x00
 // Step 7: Fifth child ("A")
-    // Step 3: 'S' DW\_TAG\_subprogram "A"
+    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "A"
     0x53 0x2e 0x41 0x00
 // Step 7: Sixth child ("v")
-    // Step 3: 'S' DW\_TAG\_subprogram "v"
+    // Step 3: 'S' \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} "v"
     0x53 0x2e 0x76 0x00
-// Step 7: End of DW\_TAG\_structure\_type "A"
+// Step 7: End of \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} "A"
 0x00
 \end{alltt}
 
@@ -1091,11 +1091,11 @@ Section \refersec{app:typesignatureexampleusage}.
 \label{app:typesignatureexampleusage}
 
 \begin{alltt}
-  DW\_TAG\_compile\_unit
+  \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
   ...
-  DW\_TAG\_subprogram
+  \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
     ...
-    DW\_TAG\_variable
+    \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
       DW\_AT\_name: "a"
       DW\_AT\_type: (signature) 0xd6d160f5 5589f6e9
       DW\_AT\_location: ...
@@ -1238,7 +1238,7 @@ text, data, and DWARF sections.
 There will also be a compilation unit that has the file\dash level
 declarations and definitions. Other per\dash function compilation
 unit DWARF information (.debug\_info) points to this common
-file\dash level compilation unit using DW\_TAG\_imported\_unit.
+file\dash level compilation unit using \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}.
 
 Section groups can use DW\_FORM\_ref\_addr and internal labels
 (section\dash relative relocations) to refer to the main object
index 397540d..28a44d8 100644 (file)
@@ -17,7 +17,7 @@ represented by debugging information entries with the tags
 \livetarg{chap:DWTAGconstant}{DW\_TAG\_constant},
 respectively.
 
-\textit{The tag DW\_TAG\_constant is used for languages that
+\textit{The tag \livelink{chap:DWTAGconstant}{DW\_TAG\_constant} is used for languages that
 have true named constants.}
 
 The debugging information entry for a program variable,
@@ -64,7 +64,7 @@ for a C++ static data member of a structure, class or union,
 the entry has a DW\_AT\_specification attribute, whose value is a
 reference to the debugging information entry representing the
 declaration of this data member. The referenced entry has the
-tag DW\_TAG\_member and will be a child of some class, structure
+tag \livelink{chap:DWTAGmember}{DW\_TAG\_member} and will be a child of some class, structure
 or union type entry.  If the variable entry represents a
 non-defining declaration, DW\_AT\_specification may be used
 to reference the defining declaration of the variable. If
@@ -212,9 +212,6 @@ Section \refersec{chap:linkagenames}.
 
 \end{enumerate}
 
-FIXME incomplete
-
-
 \section{Common Block Entries}
 \label{chap:commonblockentries}
 A Fortran common block may be described by a debugging
index c458c5b..b156429 100644 (file)
@@ -21,7 +21,8 @@ appropriate prefix (DW\_TAG, DW\_AT, DW\_END, DW\_ATE, DW\_OP,
 DW\_LANG, DW\_LNE, DW\_CC or DW\_CFA respectively) followed by
 \_lo\_user or \_hi\_user. 
 \textit{For example, for entry tags, the special
-labels are DW\_TAG\_lo\_user and DW\_TAG\_hi\_user.}
+labels are \livetarg{chap:DWTAGlouser}{DW\_TAG\_lo\_user} and 
+\livetarg{chap:DWTAGhiuser}{DW\_TAG\_hi\_user}.}
 Values in the
 range between prefix\_lo\_user and prefix\_hi\_user inclusive,
 are reserved for vendor specific extensions. Vendors may
@@ -248,14 +249,14 @@ the object file. Each such contribution consists of a
 compilation unit header 
 (see Section \refersec{datarep:compilationunitheader}) 
 followed by a
-single DW\_TAG\_compile\_unit or DW\_TAG\_partial\_unit debugging
+single \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit} or \livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit} debugging
 information entry, together with its children.
 
 For each type defined in a compilation unit, a contribution may
 be made to the .debug\_types section of the object file. Each
 such contribution consists of a type unit header 
 (see Section \refersec{datarep:typeunitheader}) 
-followed by a DW\_TAG\_type\_unit entry, together with
+followed by a \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} entry, together with
 its children.
 
 Each debugging information entry begins with a code that
@@ -732,68 +733,68 @@ Table \refersec{tab:attributeformencodings}.
 \endfoot
   \hline
 \endlastfoot
-DW\_TAG\_array\_type &0x01 \\
-DW\_TAG\_class\_type&0x02 \\
-DW\_TAG\_entry\_point&0x03 \\
-DW\_TAG\_enumeration\_type&0x04 \\
-DW\_TAG\_formal\_parameter&0x05 \\
-DW\_TAG\_imported\_declaration&0x08 \\
-DW\_TAG\_label&0x0a \\
-DW\_TAG\_lexical\_block&0x0b \\
-DW\_TAG\_member&0x0d \\
-DW\_TAG\_pointer\_type&0x0f \\
-DW\_TAG\_reference\_type&0x10 \\
-DW\_TAG\_compile\_unit&0x11 \\
-DW\_TAG\_string\_type&0x12 \\
-DW\_TAG\_structure\_type&0x13 \\
-DW\_TAG\_subroutine\_type&0x15 \\
-DW\_TAG\_typedef&0x16 \\
-DW\_TAG\_union\_type&0x17 \\
-DW\_TAG\_unspecified\_parameters&0x18  \\
-DW\_TAG\_variant&0x19  \\
-DW\_TAG\_common\_block&0x1a  \\
-DW\_TAG\_common\_inclusion&0x1b  \\
-DW\_TAG\_inheritance&0x1c  \\
-DW\_TAG\_inlined\_subroutine&0x1d  \\
-DW\_TAG\_module&0x1e  \\
-DW\_TAG\_ptr\_to\_member\_type&0x1f  \\
-DW\_TAG\_set\_type&0x20  \\
-DW\_TAG\_subrange\_type&0x21  \\
-DW\_TAG\_with\_stmt&0x22  \\
-DW\_TAG\_access\_declaration&0x23  \\
-DW\_TAG\_base\_type&0x24  \\
-DW\_TAG\_catch\_block&0x25  \\
-DW\_TAG\_const\_type&0x26  \\
-DW\_TAG\_constant&0x27  \\
-DW\_TAG\_enumerator&0x28  \\
-DW\_TAG\_file\_type&0x29  \\
-DW\_TAG\_friend&0x2a  \\
-DW\_TAG\_namelist&0x2b    \\
-DW\_TAG\_namelist\_item&0x2c    \\
-DW\_TAG\_packed\_type&0x2d    \\
-DW\_TAG\_subprogram&0x2e    \\
-DW\_TAG\_template\_type\_parameter&0x2f    \\
-DW\_TAG\_template\_value\_parameter&0x30    \\
-DW\_TAG\_thrown\_type&0x31    \\
-DW\_TAG\_try\_block&0x32    \\
-DW\_TAG\_variant\_part&0x33    \\
-DW\_TAG\_variable&0x34    \\
-DW\_TAG\_volatile\_type&0x35    \\
-DW\_TAG\_dwarf\_procedure&0x36     \\
-DW\_TAG\_restrict\_type&0x37      \\
-DW\_TAG\_interface\_type&0x38      \\
-DW\_TAG\_namespace&0x39      \\
-DW\_TAG\_imported\_module&0x3a      \\
-DW\_TAG\_unspecified\_type&0x3b      \\
-DW\_TAG\_partial\_unit&0x3c      \\
-DW\_TAG\_imported\_unit&0x3d      \\
-DW\_TAG\_condition&0x3f      \\
-DW\_TAG\_shared\_type&0x40      \\
-DW\_TAG\_type\_unit \ddag &0x41      \\
-DW\_TAG\_rvalue\_reference\_type \ddag &0x42      \\
-DW\_TAG\_template\_alias \ddag &0x43      \\
-DW\_TAG\_lo\_user&0x4080      \\
-DW\_TAG\_hi\_user&0xffff      \\
+\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type} &0x01 \\
+\livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}&0x02 \\
+\livelink{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point}&0x03 \\
+\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}&0x04 \\
+\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}&0x05 \\
+\livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}&0x08 \\
+\livelink{chap:DWTAGlabel}{DW\_TAG\_label}&0x0a \\
+\livelink{chap:DWTAGlexicalblock}{DW\_TAG\_lexical\_block}&0x0b \\
+\livelink{chap:DWTAGmember}{DW\_TAG\_member}&0x0d \\
+\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}&0x0f \\
+\livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type}&0x10 \\
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}&0x11 \\
+\livelink{chap:DWTAGstringtype}{DW\_TAG\_string\_type}&0x12 \\
+\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}&0x13 \\
+\livelink{chap:DWTAGsubroutinetype}{DW\_TAG\_subroutine\_type}&0x15 \\
+\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}&0x16 \\
+\livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}&0x17 \\
+\livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}&0x18  \\
+\livelink{chap:DWTAGvariant}{DW\_TAG\_variant}&0x19  \\
+\livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block}&0x1a  \\
+\livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion}&0x1b  \\
+\livelink{chap:DWTAGinheritance}{DW\_TAG\_inheritance}&0x1c  \\
+\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}&0x1d  \\
+\livelink{chap:DWTAGmodule}{DW\_TAG\_module}&0x1e  \\
+\livelink{chap:DWTAGptrtomembertype}{DW\_TAG\_ptr\_to\_member\_type}&0x1f  \\
+\livelink{chap:DWTAGsettype}{DW\_TAG\_set\_type}&0x20  \\
+\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}&0x21  \\
+\livelink{chap:DWTAGwithstmt}{DW\_TAG\_with\_stmt}&0x22  \\
+\livelink{chap:DWTAGaccessdeclaration}{DW\_TAG\_access\_declaration}&0x23  \\
+\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}&0x24  \\
+\livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block}&0x25  \\
+\livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}&0x26  \\
+\livelink{chap:DWTAGconstant}{DW\_TAG\_constant}&0x27  \\
+\livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}&0x28  \\
+\livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type}&0x29  \\
+\livelink{chap:DWTAGfriend}{DW\_TAG\_friend}&0x2a  \\
+\livelink{chap:DWTAGnamelist}{DW\_TAG\_namelist}&0x2b    \\
+\livelink{chap:DWTAGnamelistitem}{DW\_TAG\_namelist\_item}&0x2c    \\
+\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type}&0x2d    \\
+\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}&0x2e    \\
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}&0x2f    \\
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\_TAG\_template\_value\_parameter}&0x30    \\
+\livelink{chap:DWTAGthrowntype}{DW\_TAG\_thrown\_type}&0x31    \\
+\livelink{chap:DWTAGtryblock}{DW\_TAG\_try\_block}&0x32    \\
+\livelink{chap:DWTAGvariantpart}{DW\_TAG\_variant\_part}&0x33    \\
+\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}&0x34    \\
+\livelink{chap:DWTAGvolatiletype}{DW\_TAG\_volatile\_type}&0x35    \\
+\livelink{chap:DWTAGdwarfprocedure}{DW\_TAG\_dwarf\_procedure}&0x36     \\
+\livelink{chap:DWTAGrestricttype}{DW\_TAG\_restrict\_type}&0x37      \\
+\livelink{chap:DWTAGinterfacetype}{DW\_TAG\_interface\_type}&0x38      \\
+\livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}&0x39      \\
+\livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}&0x3a      \\
+\livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}&0x3b      \\
+\livelink{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}&0x3c      \\
+\livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit}&0x3d      \\
+\livelink{chap:DWTAGcondition}{DW\_TAG\_condition}&0x3f      \\
+\livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}&0x40      \\
+\livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} \ddag &0x41      \\
+\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type} \ddag &0x42      \\
+\livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias} \ddag &0x43      \\
+\livelink{chap:DWTAGlouser}{DW\_TAG\_lo\_user}&0x4080      \\
+\livelink{chap:DWTAGhiuser}{DW\_TAG\_hi\_user}&0xffff      \\
 \end{longtable}
 \ddag  TAG new in DWARF Version 4 
 \end{centering}
@@ -1422,7 +1423,7 @@ languages they represent are not well supported.
 Table \refersec{tab:languageencodings}
 also shows the default lower bound, if any, assumed for
 an omitted DW\_AT\_lower\_bound attribute in the context of a
-DW\_TAG\_subrange\_type debugging information entry for each
+\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type} debugging information entry for each
 defined language.
 
 \begin{centering}
@@ -2107,28 +2108,28 @@ DW\_FORM\_flag,
 DW\_FORM\_string,
 and DW\_FORM\_block.
 
-\item If the tag in Step 3 is one of DW\-\_TAG\-\_pointer\-\_type,
-DW\-\_TAG\-\_reference\-\_type
-DW\-\_TAG\-\_rvalue\-\_reference\-\_type,
-DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type
-or DW\-\_TAG\-\_friend, and the referenced
+\item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}
+or \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, and the referenced
 type (via the DW\-\_AT\-\_type or 
 DW\-\_AT\-\_friend attribute) has a
 DW\-\_AT\-\_name attribute, append to S the letter 'N', the DWARF
 attribute code (DW\-\_AT\-\_type or 
 DW\-\_AT\-\_friend), the context of
 the type (according to the method in Step 2), the letter 'E',
-and the name of the type. For DW\-\_TAG\-\_friend, if the referenced
-entry is a DW\-\_TAG\-\_subprogram, the context is omitted and the
+and the name of the type. For \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, if the referenced
+entry is a \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}, the context is omitted and the
 name to be used is the ABI-specific name of the subprogram
 (e.g., the mangled linker name).
 
 
-\item 6.If the tag in Step 3 is not one of DW\-\_TAG\-\_pointer\-\_type,
-DW\-\_TAG\-\_reference\-\_type
-DW\-\_TAG\-\_rvalue\-\_reference\-\_type,
-DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type, or 
-DW\-\_TAG\-\_friend, but has
+\item 6.If the tag in Step 3 is not one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
+\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}
+\livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
+\livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, or 
+\livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, but has
 a DW\-\_AT\-\_type attribute, or if the referenced type (via
 the DW\-\_AT\-\_type or 
 DW\-\_AT\-\_friend attribute) does not have a
index bc3f70b..0990a4d 100644 (file)
@@ -70,6 +70,7 @@ escapeinside={\%*}{*)}  % if you want to add a comment within your code
 % use like \livelink{chap:DWOPdup}{DW\_OP\_dup}
 \newcommand{\livelink}[2]{\hyperlink{#1}{#2}\index{#2} }
 % livetarg is the declaration this is the target of livelinks.
+% FIXME: we might want livetarg and livetargi  #2 to be \textbf{#2}
 \newcommand{\livetarg}[2]{\hypertarget{#1}{#2}\index{#2}}
 % When we want the index entry to look different from the name.
 \newcommand{\livetargi}[3]{\hypertarget{#1}{#2}\index{#3}}
index 083be0c..a39e99a 100644 (file)
@@ -105,7 +105,7 @@ Abbreviation Table: .debug\_abbrev
 \begin{framed}
 \scriptsize
 \begin{alltt}
-DW\_TAG\_compile\_unit
+\livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit}
 DW\_CHILDREN\_yes
 DW\_AT\_name       DW\_FORM\_string
 DW\_AT\_producer   DW\_FORM\_string
@@ -118,7 +118,7 @@ DW\_AT\_stmt\_list  DW\_FORM\_indirect
 \vspace{0.01cm}
 \hrule
 2
-DW\_TAG\_base\_type
+\livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
 DW\_CHILDREN\_no
 DW\_AT\_name       DW\_FORM\_string
 DW\_AT\_encoding   DW\_FORM\_data1
@@ -127,14 +127,14 @@ DW\_AT\_byte\_size  DW\_FORM\_data1
 \vspace{0.01cm}
 \hrule
 3
-DW\_TAG\_pointer\_type
+\livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
 DW\_CHILDREN\_no
 DW\_AT\_type       DW\_FORM\_ref4
 0
 \vspace{0.01cm}
 \hrule
 4
-DW\_TAG\_typedef
+\livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef}
 DW\_CHILDREN\_no
 DW\_AT\_name      DW\_FORM\_string
 DW\_AT\_type      DW\_FORM\_ref\_addr
@@ -285,7 +285,7 @@ Section \refersec{app:fortran90exampledwarfdescription}.
 \begin{alltt}
 ! Description for type of 'ap'
 
-1\$: \addtoindex{DW\_TAG\_array\_type}
+1\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         ! No name, default (Fortran) ordering, default stride
         DW\_AT\_type(reference to REAL)
         DW\_AT\_associated(expression= ! Test 'ptr\_assoc' flag
@@ -300,7 +300,7 @@ Section \refersec{app:fortran90exampledwarfdescription}.
             DW\_OP\_lit<n> ! where n == offset(base)
             DW\_OP\_plus
             DW\_OP\_deref) ! Type of index of array 'ap'
-2\$:     \addtoindex{DW\_TAG\_subrange\_type}
+2\$:     \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
         ! No name, default stride
         DW\_AT\_type(reference to INTEGER)
         DW\_AT\_lower\_bound(expression=
@@ -316,7 +316,7 @@ Section \refersec{app:fortran90exampledwarfdescription}.
                          !  offset(desc, dims) +
                          !  offset(dims\_str, upper\_bound)
             DW\_OP\_plus
-            \addtoindex{DW\_OP\_deref})
+            DW\_OP\_deref)
         !  Note: for the m'th dimension, the second operator becomes
         !  DW\_OP\_lit<x> where
         !  x == offset(desc, dims) +
@@ -325,19 +325,19 @@ Section \refersec{app:fortran90exampledwarfdescription}.
         !  That is, the expression does not get longer for each
         !  successive dimension (other than to express the larger
         !  offsets involved).
-3\$: DW\_TAG\_structure\_type
+3\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("array\_ptr")
         DW\_AT\_byte\_size(constant sizeof(REAL) + sizeof(desc<1>))
-4\$:     DW\_TAG\_member
+4\$:     \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("myvar")
             DW\_AT\_type(reference to REAL)
             DW\_AT\_data\_member\_location(constant 0)
-5\$:     DW\_TAG\_member
+5\$:     \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("ap");
             DW\_AT\_type(reference to 1\$)
             DW\_AT\_data\_member\_location(constant sizeof(REAL))
 
-6\$: DW\_TAG\_array\_type
+6\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         ! No name, default (Fortran) ordering, default stride
         DW\_AT\_type(reference to 3\$)
         DW\_AT\_allocated(expression=
@@ -355,7 +355,7 @@ Section \refersec{app:fortran90exampledwarfdescription}.
             DW\_OP\_plus
             DW\_OP\_deref)
 
-7\$: DW\_TAG\_subrange\_type
+7\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
         ! No name, default stride
         DW\_AT\_type(reference to INTEGER)
         DW\_AT\_lower\_bound(expression=
@@ -369,7 +369,7 @@ Section \refersec{app:fortran90exampledwarfdescription}.
             DW\_OP\_plus
             DW\_OP\_deref)
 
-8\$: DW\_TAG\_variable
+8\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("arrays")
         DW\_AT\_type(reference to 6\$)
         DW\_AT\_location(expression=
@@ -554,49 +554,49 @@ of this example and therefore not shown.
 \label{app:adaexampledwarfdescription}
 
 \begin{alltt}
-11\$: DW\_TAG\_variable
+11\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("M")
         DW\_AT\_type(reference to INTEGER)
-12\$: DW\_TAG\_array\_type
+12\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         ! No name, default (Ada) order, default stride
         DW\_AT\_type(reference to INTEGER)
-13\$:    DW\_TAG\_subrange\_type
+13\$:    \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
             DW\_AT\_type(reference to INTEGER)
             DW\_AT\_lower\_bound(constant 1)
             DW\_AT\_upper\_bound(reference to variable M at 11\$)
-14\$: DW\_TAG\_variable
+14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("VEC1")
         DW\_AT\_type(reference to array type at 12\$)
     . . .
-21\$: DW\_TAG\_subrange\_type
+21\$: \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
         DW\_AT\_name("TEENY")
         DW\_AT\_type(reference to INTEGER)
         DW\_AT\_lower\_bound(constant 1)
         DW\_AT\_upper\_bound(constant 100)
 
       . . .
-26\$: DW\_TAG\_structure\_type
+26\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("REC2")
-27\$:   DW\_TAG\_member
+27\$:   \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("N")
             DW\_AT\_type(reference to subtype TEENY at 21\$)
             DW\_AT\_data\_member\_location(constant 0)
-28\$:   DW\_TAG\_array\_type
+28\$:   \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
             ! No name, default (Ada) order, default stride
             ! Default data location
             DW\_AT\_TYPE(reference to INTEGER)
-29\$:       DW\_TAG\_subrange\_type
+29\$:       \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
                 DW\_AT\_type(reference to subrange TEENY at 21\$)
                 DW\_AT\_lower\_bound(constant 1)
                 DW\_AT\_upper\_bound(reference to member N at 27\$)
-30\$:   DW\_TAG\_member
+30\$:   \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("VEC2")
             DW\_AT\_type(reference to array “subtype” at 28\$)
             DW\_AT\_data\_member\_location(machine=
                 DW\_OP\_lit<n> ! where n == offset(REC2, VEC2)
                 DW\_OP\_plus)
       . . .
-41\$: DW\_TAG\_variable
+41\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("OBJ2B")
         DW\_AT\_type(reference to REC2 at 26\$)
         DW\_AT\_location(...as appropriate...)
@@ -632,7 +632,7 @@ The DWARF representation in
 Section \refersec{app:packedrecordexampledwarfdescription} 
 is
 appropriate. 
-DW\_TAG\_packed\_type entries could be added to
+\livelink{chap:DWTAGpackedtype}{DW\_TAG\_packed\_type} entries could be added to
 better represent the source, but these do not otherwise affect
 the example and are omitted for clarity. Note that this same
 representation applies to both typical big\dash \ and 
@@ -645,21 +645,21 @@ Section \refersec{chap:datamemberentries}.
 \label{app:packedrecordexampledwarfdescription}
 \begin{alltt}
 
-21\$: DW\_TAG\_structure\_type ! anonymous type for F2
-        DW\_TAG\_member
+21\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for F2
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("F3")
             DW\_AT\_type(reference to 11\$)
-22\$: DW\_TAG\_array\_type ! anonymous type for F4
+22\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type} ! anonymous type for F4
         DW\_AT\_type(reference to 20\$)
-        DW\_TAG\_subrange\_type
+        \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
             DW\_AT\_type(reference to 11\$)
             DW\_AT\_lower\_bound(0)
             DW\_AT\_upper\_bound(1)
         DW\_AT\_bit\_stride(2)
         DW\_AT\_bit\_size(4)
-23\$: DW\_TAG\_structure\_type ! anonymous type for V
+23\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} ! anonymous type for V
         DW\_AT\_bit\_size(39)
-        DW\_TAG\_member
+        \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("F1")
             DW\_AT\_type(reference to 10\$)
             DW\_AT\_data\_bit\_offset(0)! may be omitted
@@ -679,7 +679,7 @@ Section \refersec{chap:datamemberentries}.
             DW\_AT\_type(reference to 20\$) ! type T
             DW\_AT\_data\_bit\_offset(37)
             DW\_AT\_bit\_size(2) ! may be omitted
-     DW\_TAG\_variable
+     \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("V")
         DW\_AT\_type(reference to 23\$)
         DW\_AT\_location(...)
@@ -742,76 +742,76 @@ is appropriate.
 \label{app:namespaceexampledwarfdescription}
 \begin{alltt}
 
-1\$:  DW\_TAG\_base\_type
+1\$:  \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("int")
         ...
-2\$:  DW\_TAG\_base\_type
+2\$:  \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("float")
         ...
-6\$:  DW\_TAG\_namespace
+6\$:  \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
         ! no DW\_AT\_name attribute
 7\$:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("i")
             DW\_AT\_type(reference to 1\$)
             DW\_AT\_location ...
             ...
-10\$: DW\_TAG\_namespace
+10\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
         DW\_AT\_name("A")
-20\$:    DW\_TAG\_namespace
+20\$:    \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
             DW\_AT\_name("B")
-30\$:        DW\_TAG\_variable
+30\$:        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 DW\_AT\_name("j")
                 DW\_AT\_type(reference to 1\$)
                 DW\_AT\_location ...
                 ...
-34\$:        DW\_TAG\_subprogram
+34\$:        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
                 DW\_AT\_name("myfunc")
                 DW\_AT\_type(reference to 1\$)
                 ...
-36\$:        DW\_TAG\_subprogram
+36\$:        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
                 DW\_AT\_name("myfunc")
                 DW\_AT\_type(reference to 2\$)
                 ...
-38\$:        DW\_TAG\_subprogram
+38\$:        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
                 DW\_AT\_name("myfunc2")
                 DW\_AT\_low\_pc ...
                 DW\_AT\_high\_pc ...
-                \addtoindex{DW\_AT\_type}(reference to 1\$)
+                DW\_AT\_type(reference to 1\$)
                 ...
 
-40\$: DW\_TAG\_namespace
+40\$: \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
         DW\_AT\_name("Y")
-        DW\_TAG\_imported\_declaration    ! (1) using-declaration
+        \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}    ! (1) using-declaration
             DW\_AT\_import(reference to 30\$)
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("foo")
             DW\_AT\_type(reference to 1\$)
             DW\_AT\_location ...
             ...
-     DW\_TAG\_imported\_declaration       ! (2) using declaration
+     \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}       ! (2) using declaration
         DW\_AT\_import(reference to 30\$)
-        DW\_TAG\_imported\_declaration    ! (3) namespace alias
+        \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}    ! (3) namespace alias
             DW\_AT\_name("Foo")
             DW\_AT\_import(reference to 20\$)
-        DW\_TAG\_imported\_declaration    ! (4) using declaration
+        \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}    ! (4) using declaration
             DW\_AT\_import(reference to 34\$) ! - part 1
-        DW\_TAG\_imported\_declaration    ! (4) using declaration
+        \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration}    ! (4) using declaration
             DW\_AT\_import(reference to 36\$) !  - part 2
-        DW\_TAG\_imported\_module         ! (5) using directive
+        \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module}         ! (5) using directive
             DW\_AT\_import(reference to 20\$)
-        DW\_TAG\_namespace
+        \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
             DW\_AT\_extension(reference to 10\$)
-            DW\_TAG\_namespace
+            \livelink{chap:DWTAGnamespace}{DW\_TAG\_namespace}
                 DW\_AT\_extension(reference to 20\$)
-                DW\_TAG\_imported\_module ! (6) using directive
+                \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module} ! (6) using directive
                     DW\_AT\_import(reference to 40\$)
-                DW\_TAG\_variable
+                \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                     DW\_AT\_name("k")
                     DW\_AT\_type(reference to 1\$)
                     DW\_AT\_location ...
                     ...
-60\$: DW\_TAG\_subprogram
+60\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_specification(reference to 34\$)
         DW\_AT\_low\_pc ...
         DW\_AT\_high\_pc ...
@@ -848,26 +848,26 @@ is appropriate.
 
 
 \begin{alltt}
-1\$: DW\_TAG\_unspecified\_type
+1\$: \livelink{chap:DWTAGunspecifiedtype}{DW\_TAG\_unspecified\_type}
         DW\_AT\_name("void")
                 ...
-2\$ DW\_TAG\_base\_type
+2\$ \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("int")
         ...
-3\$: DW\_TAG\_class\_type
+3\$: \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type}
         DW\_AT\_name("A")
         ...
-4\$:    DW\_TAG\_pointer\_type
+4\$:    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
             DW\_AT\_type(reference to 3\$)
             ...
-5\$:    DW\_TAG\_const\_type
+5\$:    \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
             DW\_AT\_type(reference to 3\$)
             ...
-6\$:    DW\_TAG\_pointer\_type
+6\$:    \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}
             DW\_AT\_type(reference to 5\$)
             ...
 
-7\$:    DW\_TAG\_subprogram
+7\$:    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_declaration
             DW\_AT\_name("func1")
             DW\_AT\_type(reference to 1\$)
@@ -875,7 +875,7 @@ is appropriate.
                 ! References a formal parameter in this 
                 ! member function
             ...
-8\$:        DW\_TAG\_formal\_parameter
+8\$:        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 DW\_AT\_artificial(true)
                 DW\_AT\_name("this")
                 DW\_AT\_type(reference to 4\$)
@@ -884,11 +884,11 @@ is appropriate.
                     ! or volatile
                 DW\_AT\_location ...
                 ...
-9\$:        DW\_TAG\_formal\_parameter
+9\$:        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 DW\_AT\_name(x1)
                 DW\_AT\_type(reference to 2\$)
                 ...
-10\$:    DW\_TAG\_subprogram
+10\$:    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
              DW\_AT\_declaration
              DW\_AT\_name("func2")
              DW\_AT\_type(reference to 1\$)
@@ -896,7 +896,7 @@ is appropriate.
              ! References a formal parameter in this 
              ! member function
              ...
-11\$:        DW\_TAG\_formal\_parameter
+11\$:        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                  DW\_AT\_artificial(true)
                  DW\_AT\_name("this")
                  DW\_AT\_type(reference to 6\$)
@@ -904,14 +904,14 @@ is appropriate.
                  !     func2 marked as const
                  DW\_AT\_location ...
                  ...
-12\$:    DW\_TAG\_subprogram
+12\$:    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
              DW\_AT\_declaration
              DW\_AT\_name("func3")
              DW\_AT\_type(reference to 1\$)
              ...
                  ! No object pointer reference formal parameter
                  ! implies func3 is static
-13\$:        DW\_TAG\_formal\_parameter
+13\$:        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                  DW\_AT\_name(x3)
                  DW\_AT\_type(reference to 2\$)
                  ...
@@ -1345,17 +1345,17 @@ Section \refersec{app:inliningexample1concreteinstance}.
     ! Abstract instance for OUTER
     !
 OUTER.AI.1.1:
-    DW\_TAG\_subprogram
+    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_name("OUTER")
         DW\_AT\_inline(DW\_INL\_declared\_inlined)
         ! No low/high PCs
 OUTER.AI.1.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_name("OUTER\_FORMAL")
             DW\_AT\_type(reference to integer)
             ! No location
 OUTER.AI.1.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("OUTER\_LOCAL")
             DW\_AT\_type(reference to integer)
             ! No location
@@ -1363,23 +1363,23 @@ OUTER.AI.1.3:
         ! Abstract instance for INNER
         !
 INNER.AI.1.1:
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("INNER")
             DW\_AT\_inline(DW\_INL\_declared\_inlined)
             ! No low/high PCs
 INNER.AI.1.2:
-            DW\_TAG\_formal\_parameter
+            \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 DW\_AT\_name("INNER\_FORMAL")
                 DW\_AT\_type(reference to integer)
                 ! No location
 INNER.AI.1.3:
-            DW\_TAG\_variable
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 DW\_AT\_name("INNER\_LOCAL")
                 DW\_AT\_type(reference to integer)
                 ! No location
             ...
             0
-        ! No DW\_TAG\_inlined\_subroutine (concrete instance)
+        ! No \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} (concrete instance)
         ! for INNER corresponding to calls of INNER
         ...
         0
@@ -1392,40 +1392,40 @@ INNER.AI.1.3:
 ! Concrete instance for call "OUTER(7)"
 !
 OUTER.CI.1.1:
-    DW\_TAG\_inlined\_subroutine
+    \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
         ! No name
         DW\_AT\_abstract\_origin(reference to OUTER.AI.1.1)
         DW\_AT\_low\_pc(...)
         DW\_AT\_high\_pc(...)
 OUTER.CI.1.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.1.2)
             DW\_AT\_const\_value(7)
 OUTER.CI.1.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.1.3)
             DW\_AT\_location(...)
         !
-        ! No DW\_TAG\_subprogram (abstract instance) for INNER
+        ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} (abstract instance) for INNER
         !
         ! Concrete instance for call INNER(OUTER\_LOCAL)
         !
 INNER.CI.1.1:
-        DW\_TAG\_inlined\_subroutine
+        \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
             ! No name
             DW\_AT\_abstract\_origin(reference to INNER.AI.1.1)
             DW\_AT\_low\_pc(...)
             DW\_AT\_high\_pc(...)
             DW\_AT\_static\_link(...)
 INNER.CI.1.2:
-            DW\_TAG\_formal\_parameter
+            \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 ! No name
                 DW\_AT\_abstract\_origin(reference to INNER.AI.1.2)
                 DW\_AT\_location(...)
 INNER.CI.1.3:
-             DW\_TAG\_variable
+             \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 ! No name
                 DW\_AT\_abstract\_origin(reference to INNER.AI.1.3)
                 DW\_AT\_location(...)
@@ -1484,17 +1484,17 @@ instance of OUTER that contains the calls.
     ! Abstract instance for OUTER
     !
 OUTER.AI.2.1:
-    DW\_TAG\_subprogram
+    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_name("OUTER")
         DW\_AT\_inline(DW\_INL\_declared\_inlined)
         ! No low/high PCs
 OUTER.AI.2.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_name("OUTER\_FORMAL")
             DW\_AT\_type(reference to integer)
             ! No location
 OUTER.AI.2.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("OUTER\_LOCAL")
             DW\_AT\_type(reference to integer)
             ! No location
@@ -1502,17 +1502,17 @@ OUTER.AI.2.3:
         ! Nested out-of-line INNER subprogram
         !
 OUTER.AI.2.4:
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("INNER")
             ! No DW\_AT\_inline
             ! No low/high PCs, frame\_base, etc.
 OUTER.AI.2.5:
-            DW\_TAG\_formal\_parameter
+            \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 DW\_AT\_name("INNER\_FORMAL")
                 DW\_AT\_type(reference to integer)
                 ! No location
 OUTER.AI.2.6:
-            DW\_TAG\_variable
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 DW\_AT\_name("INNER\_LOCAL")
                 DW\_AT\_type(reference to integer)
                 ! No location
@@ -1529,18 +1529,18 @@ OUTER.AI.2.6:
     ! Concrete instance for call "OUTER(7)"
     !
 OUTER.CI.2.1:
-    DW\_TAG\_inlined\_subroutine
+    \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
         ! No name
         DW\_AT\_abstract\_origin(reference to OUTER.AI.2.1)
         DW\_AT\_low\_pc(...)
         DW\_AT\_high\_pc(...)
 OUTER.CI.2.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.2.2)
             DW\_AT\_location(...)
 OUTER.CI.2.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.2.3)
             DW\_AT\_location(...)
@@ -1548,7 +1548,7 @@ OUTER.CI.2.3:
         ! Nested out-of-line INNER subprogram
         !
 OUTER.CI.2.4:
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.2.4)
             DW\_AT\_low\_pc(...)
@@ -1556,12 +1556,12 @@ OUTER.CI.2.4:
             DW\_AT\_frame\_base(...)
             DW\_AT\_static\_link(...)
 OUTER.CI.2.5:
-            DW\_TAG\_formal\_parameter
+            \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 ! No name
                 DW\_AT\_abstract\_origin(reference to OUTER.AI.2.5)
                 DW\_AT\_location(...)
 OUTER.CI.2.6:
-            DW\_TAG\_variable
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 ! No name
                 DW\_AT\_abstract\_origin(reference to OUTER.AT.2.6)
                 DW\_AT\_location(...)
@@ -1634,17 +1634,17 @@ for accessing purposes.)
     ! Abstract instance for OUTER
     !
 OUTER.AI.3.1:
-    DW\_TAG\_subprogram
+    \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_name("OUTER")
         DW\_AT\_inline(DW\_INL\_declared\_inlined)
         ! No low/high PCs
 OUTER.AI.3.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_name("OUTER\_FORMAL")
             DW\_AT\_type(reference to integer)
             ! No location
 OUTER.AI.3.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             DW\_AT\_name("OUTER\_LOCAL")
             DW\_AT\_type(reference to integer)
             ! No location
@@ -1652,19 +1652,19 @@ OUTER.AI.3.3:
         ! Normal INNER
         !
 OUTER.AI.3.4:
-        DW\_TAG\_subprogram
+        \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
             DW\_AT\_name("INNER")
             DW\_AT\_low\_pc(...)
             DW\_AT\_high\_pc(...)
             DW\_AT\_frame\_base(...)
             DW\_AT\_static\_link(...)
 OUTER.AI.3.5:
-            DW\_TAG\_formal\_parameter
+            \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
                 DW\_AT\_name("INNER\_FORMAL")
                 DW\_AT\_type(reference to integer)
                 DW\_AT\_location(...)
 OUTER.AI.3.6:
-            DW\_TAG\_variable
+            \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
                 DW\_AT\_name("INNER\_LOCAL")
                 DW\_AT\_type(reference to integer)
                 DW\_AT\_location(...)
@@ -1681,25 +1681,25 @@ OUTER.AI.3.6:
     ! Concrete instance for call "OUTER(7)"
     !
 OUTER.CI.3.1:
-    DW\_TAG\_inlined\_subroutine
+    \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
         ! No name
         DW\_AT\_abstract\_origin(reference to OUTER.AI.3.1)
         DW\_AT\_low\_pc(...)
         DW\_AT\_high\_pc(...)
         DW\_AT\_frame\_base(...)
 OUTER.CI.3.2:
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.3.2)
             ! No type
             DW\_AT\_location(...)
 OUTER.CI.3.3:
-        DW\_TAG\_variable
+        \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
             ! No name
             DW\_AT\_abstract\_origin(reference to OUTER.AI.3.3)
             ! No type
             DW\_AT\_location(...)
-        ! No DW\_TAG\_subprogram for "INNER"
+        ! No \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} for "INNER"
         ...
         0
 \end{alltt}
@@ -1727,42 +1727,42 @@ Section \refersec{app:constantexpressionsdwarfdescription}.
 
       ! For variable mass
       !
-1\$:  DW\_TAG\_const\_type
+1\$:  \livelink{chap:DWTAGconsttype}{DW\_TAG\_const\_type}
         DW\_AT\_type(reference to "double")
-2\$:  DW\_TAG\_variable
+2\$:  \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("mass")
         DW\_AT\_type(reference to 1\$)
         DW\_AT\_const\_expr(true)
         DW\_AT\_const\_value(9.8)
       ! Abstract instance for square
       !
-10\$: DW\_TAG\_subprogram
+10\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_name("square")
         DW\_AT\_type(reference to "int")
         DW\_AT\_inline(DW\_INL\_inlined)
-11\$:   DW\_TAG\_formal\_parameter
+11\$:   \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_name("x")
             DW\_AT\_type(reference to "int")
       ! Concrete instance for square(9)
       !
-20\$: DW\_TAG\_inlined\_subroutine
+20\$: \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}
         DW\_AT\_abstract\_origin(reference to 10\$)
         DW\_AT\_const\_expr(present)
         DW\_AT\_const\_value(81)
-        DW\_TAG\_formal\_parameter
+        \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_abstract\_origin(reference to 11\$)
             DW\_AT\_const\_value(9)
       ! Anonymous array type for arr
       !
-30\$: DW\_TAG\_array\_type
+30\$: \livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}
         DW\_AT\_type(reference to "float")
         DW\_AT\_byte\_size(324) ! 81*4
-        DW\_TAG\_subrange\_type
+        \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
             DW\_AT\_type(reference to "int")
             DW\_AT\_upper\_bound(reference to 20\$)
       ! Variable arr
       !
-40\$: DW\_TAG\_variable
+40\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("arr")
         DW\_AT\_type(reference to 30\$)
 \end{alltt}
@@ -1788,18 +1788,18 @@ char32_t chr_b = U'h';
 
 ! DWARF description
 !
-1\$: DW\_TAG\_base\_type
+1\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("char16\_t")
         DW\_AT\_encoding(DW\_ATE\_UTF)
         DW\_AT\_byte\_size(2)
-2\$: DW\_TAG\_base\_type
+2\$: \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type}
         DW\_AT\_name("char32\_t")
         DW\_AT\_encoding(DW\_ATE\_UTF)
         DW\_AT\_byte\_size(4)
-3\$: DW\_TAG\_variable
+3\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("chr\_a")
         DW\_AT\_type(reference to 1\$)
-4\$: DW\_TAG\_variable
+4\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("chr\_b")
         DW\_AT\_type(reference to 2\$)
 \end{alltt}
@@ -1825,18 +1825,18 @@ E e1;
 \begin{alltt}
 ! DWARF description
 !
-11\$: DW\_TAG\_enumeration\_type
+11\$: \livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}
         DW\_AT\_name("E")
         DW\_AT\_type(reference to "int")
         DW\_AT\_enum\_class(present)
-12\$:   DW\_TAG\_enumerator
+12\$:   \livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
             DW\_AT\_name("E1")
             DW\_AT\_const\_value(0)
 13\$:
-         DW\_TAG\_enumerator
+         \livelink{chap:DWTAGenumerator}{DW\_TAG\_enumerator}
             DW\_AT\_name("E2")
             DW\_AT\_const\_value(100)
-14\$: DW\_TAG\_variable
+14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("e1")
         DW\_AT\_type(reference to 11\$)
 \end{alltt}
@@ -1864,21 +1864,21 @@ wrapper<int> obj;
 \begin{alltt}
 ! DWARF description
 !
-11\$: DW\_TAG\_structure\_type
+11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("wrapper")
-12\$: DW\_TAG\_template\_type\_parameter
+12\$: \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
         DW\_AT\_name("T")
         DW\_AT\_type(reference to "int")
-13\$ DW\_TAG\_member
+13\$ \livelink{chap:DWTAGmember}{DW\_TAG\_member}
         DW\_AT\_name("comp")
         DW\_AT\_type(reference to 12\$)
-14\$: DW\_TAG\_variable
+14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("obj")
         DW\_AT\_type(reference to 11\$)
 \end{alltt}
 
 The actual type of the component comp is int, but in the DWARF
-the type references the DW\_TAG\_template\_type\_parameter for
+the type references the \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter} for
 T, which in turn references int. This implies that in the
 original template comp was of type T and that was replaced
 with int in the instance.  There exist situations where it is
@@ -1911,28 +1911,28 @@ Section \refersec{app:ctemplateexample2}.
 \begin{alltt}
 ! DWARF description
 !
-11\$: DW\_TAG\_structure\_type
+11\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("wrapper")
-12\$:   DW\_TAG\_template\_type\_parameter
+12\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("T")
             DW\_AT\_type(reference to "int")
-13\$    DW\_TAG\_member
+13\$    \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("comp")
             DW\_AT\_type(reference to 12\$)
-14\$: DW\_TAG\_variable
+14\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("obj")
         DW\_AT\_type(reference to 11\$)
-21\$: DW\_TAG\_subprogram
+21\$: \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}
         DW\_AT\_name("consume")
-22\$:   DW\_TAG\_template\_type\_parameter
+22\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("U")
             DW\_AT\_type(reference to "int")
-23\$:   DW\_TAG\_formal\_parameter
+23\$:   \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}
             DW\_AT\_name("formal")
             DW\_AT\_type(reference to 11\$)
 \end{alltt}
 
-In the DW\_TAG\_subprogram entry for the instance of consume,
+In the \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} entry for the instance of consume,
 U is described as 
 int. 
 The type of formal is 
@@ -1999,27 +1999,27 @@ Beta<long> b;
 \begin{alltt}
 ! DWARF representation for variable 'b'
 !
-20\$: DW\_TAG\_structure\_type
+20\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("Alpha")
-21\$:   DW\_TAG\_template\_type\_parameter
+21\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("T")
             DW\_AT\_type(reference to "long")
-22\$:   DW\_TAG\_template\_type\_parameter
+22\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("U")
             DW\_AT\_type(reference to "long")
-23\$:   DW\_TAG\_member
+23\$:   \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("tango")
             DW\_AT\_type(reference to 21\$)
-24\$:   DW\_TAG\_member
+24\$:   \livelink{chap:DWTAGmember}{DW\_TAG\_member}
             DW\_AT\_name("uniform")
             DW\_AT\_type(reference to 22\$)
-25\$: DW\_TAG\_template\_alias
+25\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
         DW\_AT\_name("Beta")
         DW\_AT\_type(reference to 20\$)
-26\$:   DW\_TAG\_template\_type\_parameter
+26\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("V")
             DW\_AT\_type(reference to "long")
-27\$: DW\_TAG\_variable
+27\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("b")
         DW\_AT\_type(reference to 25\$)
 \end{alltt}
@@ -2041,37 +2041,37 @@ X<Z<int>> z;
 \begin{alltt}
 ! DWARF representation for X<Y<int>>
 !
-30\$: DW\_TAG\_structure\_type
+30\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("Y")
-31\$:   DW\_TAG\_template\_type\_parameter
+31\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("TY")
             DW\_AT\_type(reference to "int")
-32\$: DW\_TAG\_structure\_type
+32\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("X")
-33\$:   DW\_TAG\_template\_type\_parameter
+33\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("TX")
             DW\_AT\_type(reference to 30\$)
 
 ! DWARF representation for X<Z<int>>
 !
-40\$: DW\_TAG\_template\_alias
+40\$: \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias}
 using Z = Y<int>;
         DW\_AT\_name("Z")
         DW\_AT\_type(reference to 30\$)
-41\$:   DW\_TAG\_template\_type\_parameter
+41\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("T")
             DW\_AT\_type(reference to "int")
-42\$: DW\_TAG\_structure\_type
+42\$: \livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type}
         DW\_AT\_name("X")
-43\$:   DW\_TAG\_template\_type\_parameter
+43\$:   \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}
             DW\_AT\_name("TX")
             DW\_AT\_type(reference to 40\$)
 ! Note that 32\$ and 42\$ are actually the same type
 !
-50\$: DW\_TAG\_variable
+50\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("y")
         DW\_AT\_type(reference to \$32)
-51\$: DW\_TAG\_variable
+51\$: \livelink{chap:DWTAGvariable}{DW\_TAG\_variable}
         DW\_AT\_name("z")
         DW\_AT\_type(reference to \$42)
 \end{alltt}
index e992706..9bffa5a 100644 (file)
@@ -1863,7 +1863,7 @@ file linkage name associated with the corresponding entity.
 
 % Some trouble here with hbox full, so we try optional word breaks.
 \textit{Debugging information entries to which DW\-\_AT\-\_linkage\-\_name
-may apply include: DW\-\_TAG\-\_common\-\_block, DW\-\_TAG\-\_constant,
-DW\-\_TAG\-\_entry\-\_point, DW\-\_TAG\-\_subprogram 
-and DW\-\_TAG\-\_variable.
+may apply include: \livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}, \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant},
+\livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}, \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} 
+and \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}.
 }
index 3e3e635..429507d 100644 (file)
@@ -29,17 +29,17 @@ tag \livetarg{chap:DWTAGpartialunit}{DW\_TAG\_partial\_unit}.
 
 In a simple normal compilation, a single compilation unit with
 the tag 
-DW\-\_TAG\-\_compile\-\_unit represents a complete object file
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} represents a complete object file
 and the tag 
-DW\-\_TAG\-\_partial\-\_unit is not used. 
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} is not used. 
 In a compilation
 employing the DWARF space compression and duplicate elimination
 techniques from 
 Appendix \refersec{app:usingcompilationunits}, 
 multiple compilation units using
 the tags 
-DW\-\_TAG\-\_compile\-\_unit and/or 
-DW\-\_TAG\-\_partial\-\_unit are
+\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} and/or 
+\livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} are
 used to represent portions of an object file.
 
 \textit{A normal compilation unit typically represents the text and
@@ -356,18 +356,18 @@ A namespace is represented by a debugging information entry
 with the 
 tag \livetarg{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}. 
 A namespace extension is
-represented by a DW\-\_TAG\-\_namespace entry 
+represented by a \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry 
 with a DW\-\_AT\-\_extension
 attribute referring to the previous extension, or if there
 is no previous extension, to the original 
-DW\-\_TAG\-\_namespace
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}
 entry. A namespace extension entry does not need to duplicate
 information in a previous extension entry of the namespace
 nor need it duplicate information in the original namespace
 entry. (Thus, for a namespace with a name, 
 a DW\_AT\_name
 attribute need only be attached directly to the original
-DW\-\_TAG\-\_namespace entry.)
+\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry.)
 
 Namespace and namespace extension entries may own other
 debugging information entries describing program entities
@@ -566,7 +566,7 @@ points:
 
 \begin{tabular}{lp{9.0cm}}
 \livetarg{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} & A subroutine or function. \\
-DW\_TAG\_inlined\_subroutine & A particular inlined 
+\livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} & A particular inlined 
   instance of a subroutine or function. \\
 \livetarg{chap:DWTAGentrypoint}{DW\_TAG\_entry\_point} & An alternate entry point. \\
 \end{tabular}
@@ -578,7 +578,7 @@ It may also have a DW\_AT\_linkage\_name attribute as
 described in Section \refersec{chap:linkagenames}.
 
 If the name of the subroutine described by an entry with the
-tag DW\_TAG\_subprogram is visible outside of its containing
+tag \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} is visible outside of its containing
 compilation unit, that entry has a DW\_AT\_external attribute,
 which is a flag.
 
@@ -856,7 +856,7 @@ 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 DW\_TAG\_subprogram. With four
+information entry with the 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
@@ -898,7 +898,7 @@ artificially by the compiler for this instantiation.
 \subsection{Inlinable and Inlined Subroutines}
 A declaration or a definition of an inlinable subroutine
 is represented by a debugging information entry with the
-tag DW\_TAG\_subprogram. The entry for a subroutine that is
+tag \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}. The entry for a subroutine that is
 explicitly declared to be available for inline expansion or
 that was expanded inline implicitly by the compiler has a
 DW\_AT\_inline attribute whose value is an integer constant. The
@@ -924,7 +924,7 @@ DW\_INL\_declared\_inlined & Declared inline and inlined by the compiler \\
 \textit{In C++, a function or a constructor declared with
 constexpr is implicitly declared inline. The abstract inline
 instance (see below) is represented by a debugging information
-entry with the tag DW\_TAG\_subprogram. Such an entry has a
+entry with the tag \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}. Such an entry has a
 DW\_AT\_inline attribute whose value is DW\_INL\_inlined.}
 
 
@@ -1039,10 +1039,10 @@ the actual return value of the concrete inlined instance.}
 
 Any debugging information entry that is owned (either
 directly or indirectly) by a debugging information entry
-with the tag DW\_TAG\_inlined\_subroutine is referred to as a
-“concrete inlined instance entry.” Any entry that has
-the tag DW\_TAG\_inlined\_subroutine is known as a “concrete
-inlined instance root.” Any set of concrete inlined instance
+with the tag \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} is referred to as a
+``concrete inlined instance entry.'' Any entry that has
+the tag \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine} 
+is known as a ``concrete inlined instance root.'' Any set of concrete inlined instance
 entries that are all children (either directly or indirectly)
 of some concrete inlined instance root, together with the root
 itself, is known as a ``concrete inlined instance tree.''
@@ -1085,12 +1085,12 @@ origin attribute.
 For each pair of entries that are associated via a
 DW\-\_AT\-\_abstract\-\_origin attribute, both members of the pair
 have the same tag. So, for example, an entry with the tag
-DW\-\_TAG\-\_variable can only be associated with another entry
-that also has the tag DW\-\_TAG\-\_variable. The only exception
+\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable} can only be associated with another entry
+that also has the tag \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}. The only exception
 to this rule is that the root of a concrete instance tree
-(which must always have the tag DW\-\_TAG\-\_\-inlined\_subroutine)
+(which must always have the tag \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_\-inlined\_subroutine})
 can only be associated with the root of its associated abstract
-instance tree (which must have the tag DW\-\_TAG\-\_subprogram).
+instance tree (which must have the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}).
 
 In general, the structure and content of any given concrete
 inlined instance tree will be closely analogous to the
@@ -1167,7 +1167,7 @@ subroutine are as follows:
 \item  The root entry for a concrete out\dash of\dash line instance
 of a given inlined subroutine has the same tag as does its
 associated (abstract) inlined subroutine entry (that is, tag
-DW\_TAG\_subprogram rather than DW\_TAG\_inlined\_subroutine).
+\livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram} rather than \livelink{chap:DWTAGinlinedsubroutine}{DW\_TAG\_inlined\_subroutine}).
 
 \item The root entry for a concrete out\dash of\dash line instance tree
 is normally owned by the same parent entry that also owns
@@ -1234,7 +1234,7 @@ adjust parameters and/or the result (if any) as appropriate
 to the combined calling and called execution contexts.}
 
 A trampoline is represented by a debugging information entry
-with the tag DW\-\_TAG\-\_subprogram or DW\-\_TAG\-\_inlined\-\_subroutine
+with the tag \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram} or \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}
 that has a DW\_AT\_trampoline attribute. The value of that
 attribute indicates the target subroutine of the trampoline,
 that is, the subroutine to which the trampoline passes
@@ -1396,7 +1396,7 @@ machine instructions generated for the block (see Section
 Catch block entries have at least one child entry, an
 entry representing the type of exception accepted by
 that catch block. This child entry has one of the tags
-DW\_TAG\_formal\_parameter or DW\_TAG\_unspecified\_parameters,
+\livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter} or \livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters},
 and will have the same form as other parameter entries.
 
 The siblings immediately following a try block entry are its
index 8d2b856..3b6c935 100644 (file)
@@ -237,9 +237,9 @@ bits on the left are not stored in an instance of the type.
 
 For a data type with a non\dash decimal and non\dash binary scale factor,
 the fixed binary type entry has a DW\_AT\_small attribute which
-references a DW\_TAG\_constant entry. The scale factor value
+references a \livelink{chap:DWTAGconstant}{DW\_TAG\_constant} entry. The scale factor value
 is interpreted in accordance with the value defined by the
-DW\_TAG\_constant entry. The value represented is the product
+\livelink{chap:DWTAGconstant}{DW\_TAG\_constant} entry. The value represented is the product
 of the integer value in memory and the associated constant
 entry for the type.
 
@@ -314,13 +314,13 @@ describing a base type, a user-defined type or another type
 modifier.
 
 A modified type entry describing a pointer or reference
-type (using DW\_TAG\_pointer\_type, DW\_TAG\_reference\_type or
-DW\_TAG\_rvalue\_reference\_type) may have a DW\_AT\_address\_class
+type (using \livelink{chap:DWTAGpointertype}{DW\_TAG\_pointer\_type}, \livelink{chap:DWTAGreferencetype}{DW\_TAG\_reference\_type} or
+\livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type}) may have a DW\_AT\_address\_class
 attribute to describe how objects having the given pointer
 or reference type ought to be dereferenced.
 
 A modified type entry describing a shared qualified type
-(using DW\_TAG\_shared\_type) may have a DW\_AT\_count attribute
+(using \livelink{chap:DWTAGsharedtype}{DW\_TAG\_shared\_type}) may have a DW\_AT\_count attribute
 whose value is a constant expressing the blocksize of the
 type. If no count attribute is present, then the “infinite”
 blocksize is assumed.
@@ -360,21 +360,21 @@ declarations:}
 const unsigned char * volatile p;
     which represents a volatile pointer to a constant
     character. This is encoded in DWARF as:
-        DW_TAG_variable(p) -->
-            DW_TAG_volatile_type -->
-                DW_TAG_pointer_type -->
-                    DW_TAG_const_type -->
-                        DW_TAG_base_type(unsigned char)
+        \livelink{chap:DWTAGvariable}{DW_TAG_variable}(p) -->
+            \livelink{chap:DWTAGvolatiletype}{DW_TAG_volatile_type} -->
+                \livelink{chap:DWTAGpointertype}{DW_TAG_pointer_type} -->
+                    \livelink{chap:DWTAGconsttype}{DW_TAG_const_type} -->
+                        \livelink{chap:DWTAGbasetype}{DW_TAG_base_type}(unsigned char)
 
 volatile unsigned char * const restrict p;
     on the other hand, represents a restricted constant
     pointer to a volatile character. This is encoded as:
-        DW_TAG_variable(p) -->
-            DW_TAG_restrict_type -->
-                DW_TAG_const_type -->
-                    DW_TAG_pointer_type -->
-                        DW_TAG_volatile_type -->
-                            DW_TAG_base_type(unsigned char)
+        \livelink{chap:DWTAGvariable}{DW_TAG_variable}(p) -->
+            \livelink{chap:DWTAGrestricttype}{DW_TAG_restrict_type} -->
+                \livelink{chap:DWTAGconsttype}{DW_TAG_const_type} -->
+                    \livelink{chap:DWTAGpointertype}{DW_TAG_pointer_type} -->
+                        \livelink{chap:DWTAGvolatiletype}{DW_TAG_volatile_type} -->
+                            \livelink{chap:DWTAGbasetype}{DW_TAG_base_type}(unsigned char)
 
 \end{verbatim}
 
@@ -397,7 +397,7 @@ it does not contain a type attribute.
 terms of another type may be called a type alias, a subtype,
 a constrained type and other terms. A type name declared with
 no defining details may be termed an incomplete, forward
-or hidden type. While the DWARF DW\_TAG\_typedef entry was
+or hidden type. While the DWARF \livelink{chap:DWTAGtypedef}{DW\_TAG\_typedef} entry was
 originally inspired by the like named construct in C and C++,
 it is broadly suitable for similar constructs (by whatever
 source syntax) in other languages.}
@@ -463,8 +463,8 @@ 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 DW\_TAG\_subrange\_type or the tag
-DW\_TAG\_enumeration\_type. These entries are children of the
+entry with either the tag \livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type} or the tag
+\livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type}. These entries are children of the
 array type entry and are ordered to reflect the appearance of
 the dimensions in the source program (i.e., leftmost dimension
 first, next to leftmost second, and so on).
@@ -993,7 +993,7 @@ as well as specify the size of the data member) }
 \label{chap:memberfunctionentries}
 
 A member function is represented by a debugging information
-entry with the tag DW\_TAG\_subprogram. The member function entry
+entry with the tag \livelink{chap:DWTAGsubprogram}{DW\_TAG\_subprogram}. The member function entry
 may contain the same attributes and follows the same rules
 as non\dash member global subroutine entries 
 (see Section \refersec{chap:subroutineandentrypointentries}).
@@ -1062,8 +1062,8 @@ constant values. DWARF does not represent the generic template
 definition, but does represent each instantiation.}
 
 A class template instantiation is represented by a
-debugging information entry with the tag DW\_TAG\_class\_type,
-DW\_TAG\_structure\_type or DW\_TAG\_union\_type. With five
+debugging information entry with the tag \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type},
+\livelink{chap:DWTAGstructuretype}{DW\_TAG\_structure\_type} or \livelink{chap:DWTAGuniontype}{DW\_TAG\_union\_type}. With five
 exceptions, such an entry will contain the same attributes
 and have the same types of child entries as would an entry
 for a class type defined explicitly using the instantiation
@@ -1072,7 +1072,7 @@ types and values. The exceptions are:
 \begin{enumerate}[1.]
 \item Each formal parameterized type declaration appearing in the
 template definition is represented by a debugging information
-entry with the tag DW\_TAG\_template\_type\_parameter. Each
+entry with the tag \livelink{chap:DWTAGtemplatetypeparameter}{DW\_TAG\_template\_type\_parameter}. Each
 such entry may have a 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
@@ -1201,16 +1201,16 @@ DW\_AT\_name attribute whose value is a null\dash terminated string
 giving the condition name as it appears in the source program.
 
 The condition entry's parent entry describes the conditional
-variable; normally this will be a DW\_TAG\_variable,
-DW\_TAG\_member or DW\_TAG\_formal\_parameter entry. If the parent
+variable; normally this will be a \livelink{chap:DWTAGvariable}{DW\_TAG\_variable},
+\livelink{chap:DWTAGmember}{DW\_TAG\_member} or \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter} entry. If the parent
 entry has an array type, the condition can test any individual
 element, but not the array as a whole. The condition entry
 implicitly specifies a “comparison type” that is the
 type of an array element if the parent has an array type;
 otherwise it is the type of the parent entry.
 
-The condition entry owns DW\_TAG\_constant and/or
-DW\_TAG\_subrange\_type entries that describe the constant
+The condition entry owns \livelink{chap:DWTAGconstant}{DW\_TAG\_constant} and/or
+\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type} entries that describe the constant
 values associated with the condition. If any child entry has
 a DW\_AT\_type attribute, that attribute should describe a type
 compatible with the comparison type (according to the source
@@ -1266,7 +1266,7 @@ required.
 integral type determined by the compiler from the properties of
 the enumeration literal values. A C++ type declaration written
 using enum class declares a strongly typed enumeration and
-is represented using DW\_TAG\_enumeration\_type in combination
+is represented using \livelink{chap:DWTAGenumerationtype}{DW\_TAG\_enumeration\_type} in combination
 with DW\_AT\_enum\_class.}
 
 Each enumeration literal is represented by a debugging
@@ -1343,13 +1343,13 @@ interpretations:
 \begin{enumerate}[1.]
 \item The formal parameters of a parameter list (that have a
 specific type) are represented by a debugging information entry
-with the tag DW\_TAG\_formal\_parameter. Each formal parameter
+with the tag \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter}. Each formal parameter
 entry has a DW\_AT\_type attribute that refers to the type of
 the formal parameter.
 
 \item The unspecified parameters of a variable parameter list
 are represented by a debugging information entry with the
-tag DW\_TAG\_unspecified\_parameters.
+tag \livelink{chap:DWTAGunspecifiedparameters}{DW\_TAG\_unspecified\_parameters}.
 \end{enumerate}
 
 
@@ -1573,7 +1573,7 @@ files.}
 
 A file type is represented by a debugging information entry
 with the 
-\livetarg{chap:DWTAGfiletype}{tag DW\_TAG\_file\_type}. 
+\livetarg{chap:DWTAGfiletype}{DW\_TAG\_file\_type}. 
 If the file type has a name,
 the file type entry has a DW\_AT\_name attribute, whose value
 is a null\dash terminated string containing the type name as it
@@ -1679,7 +1679,7 @@ the following child entries:
 \item Each formal parameterized type declaration appearing
 in the template alias declaration is represented
 by a debugging information entry with the tag
-DW\-\_TAG\-\_template\-\_type\-\_parameter. Each such entry may have
+\livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}. Each such entry may have
 a 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
@@ -1689,7 +1689,7 @@ type by which the formal is replaced for this instantiation.
 \item Each formal parameterized value declaration
 appearing in the template alias declaration is
 represented by a debugging information entry with the tag
-DW\-\_TAG\-\_template\-\_value\-\_parameter. Each such entry may have
+\livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}. Each such entry may have
 a DW\-\_AT\-\_name attribute, whose value is a null\dash terminated
 string containing the name of the formal value parameter
 as it appears in the source program. The template value
index cd0bd9a..f87289f 100644 (file)
@@ -1,5 +1,8 @@
 # Makefile which tests the python internals for sanity.
 
+all:
+       echo 'make clean' and 'make test' do something.
+       echo default does nothing
 clean:
        -rm -f *.pyc
        -rm -f *.tmp
diff --git a/dwarf5/tools/taglink.py b/dwarf5/tools/taglink.py
new file mode 100644 (file)
index 0000000..1bd1d1f
--- /dev/null
@@ -0,0 +1,124 @@
+# Copyright 2012 DWARF Debugging Information Format Committee
+#
+# All DW_TAG_* entries not in {} are turned into \livelink.
+
+import sys
+import fileio
+
+def ischar(tok,c):
+   if tok._class != "ind":
+      return "n"
+   if len(tok._tex) != 1:
+       return "n"
+   if tok._tex[0] != c:
+       return "n"
+   return "y"
+
+def transformone(tok,stdname,labelname):
+
+  # output is  \livelink{label}{string}
+  t1=fileio.dwtoken()
+  t1.insertid("\livelink")
+  t2=fileio.dwtoken()
+  t2.setIndivid("{")
+  t3=fileio.dwtoken()
+  t3.insertid(labelname)
+  t4=fileio.dwtoken()
+  t4.setIndivid("}")
+  t5 = t2
+  t6=fileio.dwtoken()
+  t6.insertid(''.join(tok._tex)) 
+  t7 = t4
+  return [t1,t2,t3,t4,t5,t6,t7]
+
+def append_to_out(out,addthese):
+  for a in addthese:
+    out += [a]
+
+def isdesiredname(stdname):
+  """ If it is DW_TAG_* we return "y".
+      Else return "n"
+      We don't want something like plain DW_TAG  or 
+      plain DW_TAG_ to get modified.
+  """
+  if stdname.startswith("DW_TAG_"):
+    if len(stdname) > 7:
+      return "y"
+  return "n"
+
+def dwspace(tok):
+  if ischar(tok," ") == "y":
+    return "y"
+  if ischar(tok,"\t") == "y":
+    return "y"
+  return "n"
+  
+# Here we are a bit careful, in that accidental spaces
+# after { or before } should not be confused with
+# not having a {} around a name.
+def leaderislbrace(linetoks,num):
+  cnum = num - 1
+  while cnum >= 1:
+    tok = linetoks[cnum]
+    if dwspace(tok) == "y":
+      cnum = cnum - 1
+      continue
+    if ischar(tok,"{") == "y":
+      return "y"
+    return "n"
+  return "n"
+  
+def trailerisrbrace(linetoks,num):
+  cnum = num + 1
+  while cnum < len(linetoks) :
+    tok = linetoks[cnum]
+    if dwspace(tok) == "y":
+      cnum = cnum + 1
+      continue
+    if ischar(tok,"}") == "y":
+      return "y"
+    return "n"
+  return "n"
+
+def transfunc(linetoks):
+  if len(linetoks) < 1:
+    return linetoks
+  tnumin = 0
+  changes = 0
+  lasttoknum = len(linetoks) -1
+  outtoks = []
+  for t in linetoks:
+    rawtok = ''.join(t._tex)
+    stdname= ''.join(t._std)
+    linkname = "chap:" + ''.join(t._label)
+    if isdesiredname(stdname) == "y":
+      #Look past spaces when looking for { or }
+      if leaderislbrace(linetoks,tnumin) == "n" or trailerisrbrace(linetoks,tnumin) == "n":
+        tmp = transformone(t,stdname,linkname);
+        append_to_out(outtoks,tmp)
+        changes = changes +  1
+      else:
+        outtoks += [t]
+    else:
+      outtoks += [t]
+    tnumin = tnumin+ 1
+    # End of for loop.
+  return outtoks
+
+def read_args():
+  cur = 1
+  filelist = []
+  while  len(sys.argv) > cur:
+    v = sys.argv[cur]
+    filelist += [v]
+    cur = int(cur) + 1
+
+  dwf = fileio.readFilelist(filelist)
+  dwf.dwtransformline(transfunc)
+  dwf.dwwrite()
+
+if __name__ == '__main__':
+  read_args()
+  
+
+
index e094f7c..97f8eb2 100644 (file)
@@ -1,5 +1,5 @@
 Number of files:  1
-Number of lines in  test1.in :   16
+Number of lines in  test1.in :   18
 Number of tokens in line  1  :  0
 
 Number of tokens in line  2  :  14
@@ -11,10 +11,10 @@ ind '   '
 id ' prefix ' ' prefix ' ' prefix ' ' prefix ' 
 ind '   ' 
 other ' ( ' ' ( ' ' ( ' ' ( ' 
-id ' DW\_TAG_foo ' ' DW\_TAG_foo ' ' DW_TAG_foo ' ' DWTAGfoo ' 
+id ' DW\_TAG\_foo ' ' DW\_TAG\_foo ' ' DW_TAG_foo ' ' DWTAGfoo ' 
 other ' , ' ' , ' ' , ' ' , ' 
 ind '   ' 
-id ' DW\_AT_foo ' ' DW\_AT_foo ' ' DW_AT_foo ' ' DWATfoo ' 
+id ' DW\_AT\_foo ' ' DW\_AT\_foo ' ' DW_AT_foo ' ' DWATfoo ' 
 other ' , ' ' , ' ' , ' ' , ' 
 ind '   ' 
 Number of tokens in line  3  :  8
@@ -26,7 +26,11 @@ other ' , ' ' , ' ' , ' ' , '
 ind '   ' 
 id ' DW\_OP_foo ' ' DW\_OP_foo ' ' DW_OP_foo ' ' DWOPfoo ' 
 other ' , ' ' , ' ' , ' ' , ' 
-Number of tokens in line  4  :  18
+Number of tokens in line  4  :  1
+id ' DW\_TAG ' ' DW\_TAG ' ' DW_TAG ' ' DWTAG ' 
+Number of tokens in line  5  :  1
+id ' DW\_TAG_ ' ' DW\_TAG_ ' ' DW_TAG_ ' ' DWTAG ' 
+Number of tokens in line  6  :  18
 id ' DW\_LANG ' ' DW\_LANG ' ' DW_LANG ' ' DWLANG ' 
 other ' , ' ' , ' ' , ' ' , ' 
 ind '   ' 
@@ -45,36 +49,38 @@ ind '   '
 id ' followed ' ' followed ' ' followed ' ' followed ' 
 ind '   ' 
 id ' by ' ' by ' ' by ' ' by ' 
-Number of tokens in line  5  :  6
+Number of tokens in line  7  :  6
 id ' \_lo\_user ' ' \_lo\_user ' ' _lo_user ' ' louser ' 
 ind '   ' 
 id ' or ' ' or ' ' or ' ' or ' 
 ind '   ' 
 id ' \_hi\_user ' ' \_hi\_user ' ' _hi_user ' ' hiuser ' 
 other ' . ' ' . ' ' . ' ' . ' 
-Number of tokens in line  6  :  0
+Number of tokens in line  8  :  0
 
-Number of tokens in line  7  :  1
+Number of tokens in line  9  :  1
 id ' \endlastfoot ' ' \endlastfoot ' ' \endlastfoot ' ' \endlastfoot ' 
-Number of tokens in line  8  :  7
+Number of tokens in line  10  :  9
 id ' \livelink ' ' \livelink ' ' \livelink ' ' \livelink ' 
 ind ' { ' 
 id ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' 
 ind ' } ' 
 ind ' { ' 
+ind '   ' 
+ind '   ' 
 id ' DW\-\_TAG\-\_access\-\_declaration ' ' DW\_TAG\_access\_declaration ' ' DW_TAG_access_declaration ' ' DWTAGaccessdeclaration ' 
 ind ' } ' 
-Number of tokens in line  9  :  5
+Number of tokens in line  11  :  5
 other ' & ' ' & ' ' & ' ' & ' 
 ind '   ' 
 id ' DECL ' ' DECL ' ' DECL ' ' DECL ' 
 ind '   ' 
 id ' \\ ' ' \\ ' ' \\ ' ' \\ ' 
-Number of tokens in line  10  :  0
+Number of tokens in line  12  :  0
 
-Number of tokens in line  11  :  0
+Number of tokens in line  13  :  0
 
-Number of tokens in line  12  :  9
+Number of tokens in line  14  :  9
 id ' information ' ' information ' ' information ' ' information ' 
 ind '   ' 
 id ' entry ' ' entry ' ' entry ' ' entry ' 
@@ -84,7 +90,7 @@ ind '   '
 id ' the ' ' the ' ' the ' ' the ' 
 ind '   ' 
 id ' tag ' ' tag ' ' tag ' ' tag ' 
-Number of tokens in line  13  :  8
+Number of tokens in line  15  :  8
 id ' \livetarg ' ' \livetarg ' ' \livetarg ' ' \livetarg ' 
 ind ' { ' 
 id ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' ' chap:DWTAGaccessdeclaration ' 
@@ -93,9 +99,9 @@ ind ' { '
 id ' DW\_TAG\_access\_declaration ' ' DW\_TAG\_access\_declaration ' ' DW_TAG_access_declaration ' ' DWTAGaccessdeclaration ' 
 ind ' } ' 
 other ' . ' ' . ' ' . ' ' . ' 
-Number of tokens in line  14  :  1
+Number of tokens in line  16  :  1
 id ' Each ' ' Each ' ' Each ' ' Each ' 
-Number of tokens in line  15  :  24
+Number of tokens in line  17  :  24
 id ' such ' ' such ' ' such ' ' such ' 
 ind '   ' 
 id ' entry ' ' entry ' ' entry ' ' entry ' 
@@ -120,5 +126,5 @@ id ' type ' ' type ' ' type ' ' type '
 ind '   ' 
 id ' entry ' ' entry ' ' entry ' ' entry ' 
 other ' . ' ' . ' ' . ' ' . ' 
-Number of tokens in line  16  :  0
+Number of tokens in line  18  :  0
 
index fbf6ef6..5821caf 100644 (file)
@@ -1,11 +1,13 @@
 
-appropriate    prefix (DW\_TAG_foo, DW\_AT_foo, 
+appropriate    prefix (DW\_TAG\_foo, DW\_AT\_foo, 
 DW\_END_line, DW\_ATE_x, DW\_OP_foo,
+DW\_TAG
+DW\_TAG_
 DW\_LANG, DW\_LNE, DW\_CC or DW\_CFA respectively) followed by
 \_lo\_user or \_hi\_user.
 
 \endlastfoot
-\livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}
+\livelink{chap:DWTAGaccessdeclaration}{  DW\-\_TAG\-\_access\-\_declaration}
 & DECL \\
 
 
index ad8b5fc..dd8f445 100644 (file)
@@ -3,8 +3,8 @@ appropriate    prefix (DW\_TAG_foo, DW\_AT_foo,
 DW\_END_line, DW\_ATE_x, DW\_OP_foo,
 DW\_LANG, DW\_LNE, DW\_CC or DW\_CFA respectively) followed by
 \_lo\_user or \_hi\_user.
-this is \livelink{chap:macptr}{macptr} and \livelink{chap:block}{block} .  Which should transform.
-this is \livelink{chap:address}{address} and \livelink{chap:string}{string} .  Which should transform.
+this is \livelink{chap:macptr}{macptr} and block .  Which should transform.
+this is address and string .  Which should transform.
 this should be untouched \livelink{chap:reference}{reference} for example.
 this should be untouched \livetarg{chap:block}{block} for example.
 this should be untouched \livetargi{chap:address}{address} for example.