\item A means of referencing from inside one .debug\_info
compilation unit to another .debug\_info compilation unit
-(DW\-\_FORM\-\_ref\-\_addr provides this).
+(\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} provides this).
\item A means of having multiple contributions to specific sections
(for example, .debug\_info, and so on) in a single object file.
(This is a consequence of separate compilation, not a rule
imposed by this document.)
-\textit{Local labels use references with form DW\-\_FORM\-\_ref4
+\textit{Local labels use references with form \livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}
or
-DW\-\_FORM\-\_ref8.
+\livelink{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}.
(These are affected by relocations
so
-DW\-\_FORM\-\_ref\-\_udata,
-DW\-\_FORM\-\_ref1 and
-DW\-\_FORM\-\_ref2 are
+\livelink{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata},
+\livelink{chap:DWFORMref1}{DW\-\_FORM\-\_ref1} and
+\livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2} are
normally not usable and
-DW\-\_FORM\-\_ref\-\_addr is not necessary
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} is not necessary
for a local label.)}
\textbf{Use of \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} versus
\livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit} entry.
-\textbf{Use of DW\-\_FORM\-\_ref\-\_addr}
+\textbf{Use of \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}}
Use
-DW\-\_FORM\-\_ref\-\_addr to reference from one compilation
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} to reference from one compilation
unit's debugging information entries to those of another
compilation unit.
When referencing into a non-section group .debug\_info,
from another .debug\_info (from anywhere)
-DW\-\_FORM\-\_ref\-\_addr is
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} is
still the form to be used, but a section\dash relative relocation
generated by use of a non-exported name (often called an
``internal name'') may be used for references within the
\paragraph{Duplicate elimination example 1: DWARF section group}
\label{app:duplicateeliminationexample1dwarfsectiongroup}
-
+% FIXME: the DWFORMrefn could use rethinking
\begin{alltt}
==== Section group name:
my.compiler.company.cpp.wa.h.123456
DW.cpp.wa.h.123456.4: ! linker global symbol
\livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("i")
- \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(DW\-\_FORM\-\_refn to DW.cpp.wa.h.123456.2)
+ \livelink{chap:DWATtype}{DW\-\_AT\-\_type}(\livelink{chap:DWFORMrefn}{DW\-\_FORM\-\_refn} to DW.cpp.wa.h.123456.2)
! (This is a local reference, so the more
- ! compact form DW\-\_FORM\-\_refn can be used)
+ ! compact form \livetarg{chap:DWFORMrefn}{DW\-\_FORM\-\_refn}
+ ! for n 1,2,4, or 8 can be used)
\end{alltt}
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
-// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "C"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "C"
0x41 0x03 0x08 0x43 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 8
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "x"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
0x41 0x38 0x0d 0x00
// Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "int"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
+ // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
// Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
// Step 7: Second child ("y")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "y"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "y"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
0x41 0x38 0x0d 0x04
// Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
to an incomplete type N::B, which is also included here as
a declaration, since the complete type is unknown and its
signature is therefore unavailable. There is also a reference
-to N::C, using DW\-\_FORM\-\_sig8 to refer to the type signature
+to N::C, using
+\livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} to refer to the type signature
for that type.
In computing a signature for the type N::A, flatten the type
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}
0x44 0x02
-// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "A"
+// Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "A"
0x41 0x03 0x08 0x41 0x00
-// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 20
+// Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 20
0x41 0x0b 0x0d 0x14
// Step 7: First child ("v\_")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "v\_"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "v\_"
0x41 0x03 0x08 0x76 0x5f 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
0x41 0x38 0x0d 0x00
// Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x54 0x49
// Step 3: 'D' \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
0x44 0x24
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "int"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "int"
0x41 0x03 0x08 0x69 0x6e 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
0x41 0x0b 0x0d 0x04
- // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_sdata DW\-\_ATE\-\_signed
+ // Step 4: 'A' \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ATE\-\_signed
0x41 0x3e 0x0d 0x05
// Step 7: End of \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type} "int"
0x00
// Step 7: Second child ("next")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "next"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "next"
0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
0x41 0x38 0x0d 0x04
// Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#3)
0x54 0x49
// Step 7: Third child ("bp")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "bp"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "bp"
0x41 0x03 0x08 0x62 0x70 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 8
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
0x41 0x38 0x0d 0x08
// Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#4)
0x54 0x49
// Step 7: Fourth child ("c")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "c"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "c"
0x41 0x03 0x08 0x63 0x00
- // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} DW\-\_FORM\-\_sdata DW\-\_ACCESS\-\_private
+ // Step 4: 'A' \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} DW\-\_ACCESS\-\_private
0x41 0x32 0x0d 0x03
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 12
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 12
0x41 0x38 0x0d 0x0c
// Step 6: 'T' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#5)
0x54 0x49
0x43 0x39 0x4e 0x00
// Step 3: 'D' \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}
0x44 0x13
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "C"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "C"
0x41 0x03 0x08 0x43 0x00
- // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_sdata 8
+ // Step 4: 'A' \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 8
0x41 0x0b 0x0d 0x08
// Step 7: First child ("x")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "x"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "x"
0x41 0x03 0x08 0x78 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 0
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 0
0x41 0x38 0x0d 0x00
// Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
// Step 7: Second child ("y")
// Step 3: 'D' \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}
0x44 0x0d
- // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string "y"
+ // Step 4: 'A' \livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} "y"
0x41 0x03 0x08 0x79 0x00
- // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} DW\-\_FORM\-\_sdata 4
+ // Step 4: 'A' \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} 4
0x41 0x38 0x0d 0x04
// Step 6: 'R' \livelink{chap:DWATtype}{DW\-\_AT\-\_type} (type \#2)
0x52 0x49 0x02
at-code
: <ULEB128>
form-encoded-value
- : DW\-\_FORM\-\_sdata value
- : DW\-\_FORM\-\_flag value
- : DW\-\_FORM\-\_string string
- : DW\-\_FORM\-\_block block
-DW\-\_FORM\-\_string
+ : \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} value
+ : \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} value
+ : \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} string
+ : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} block
+\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
: '\\x08'
-DW\-\_FORM\-\_block
+\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}
: '\\x09'
-DW\-\_FORM\-\_flag
+\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}
: '\\x0c'
-DW\-\_FORM\-\_sdata
+\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}
: '\\x0d'
value
: <SLEB128>
unit DWARF information (.debug\_info) points to this common
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 groups can use \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} and internal labels
(section\dash relative relocations) to refer to the main object
file sections, as the section groups here are either deleted
as unused or kept. There is no possibility (aside from error)
\begin{center}
\begin{tabular}{lll}
Form & Role \\ \hline
-DW\-\_FORM\-\_ref\-\_addr& offset in .debug\_info \\
-DW\-\_FORM\-\_sec\-\_offset& offset in a section other than .debug\_info or .debug\_str \\
-DW\-\_FORM\-\_strp&offset in .debug\_str \\
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in .debug\_info \\
+\livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than .debug\_info or .debug\_str \\
+\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in .debug\_str \\
DW\-\_OP\-\_call\-\_ref&offset in .debug\_info \\
\end{tabular}
\end{center}
A 64\dash bit unique signature of the type described in this type
unit.
-\textit{An attribute that refers(using DW\-\_FORM\-\_ref\-\_sig8) to
+\textit{An attribute that refers(using \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) to
the primary type contained in this type unit uses this value.}
form. The series of attribute specifications ends with an
entry containing 0 for the name and 0 for the form.
-The attribute form DW\-\_FORM\-\_indirect is a special case. For
+The attribute form
+\livetarg{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect} is a special case. For
attributes with this form, the attribute value itself in the
.debug\_info or .debug\_types section begins with an unsigned
LEB128 number that represents its form. This allows producers
and which are given a common interpretation according to the
attribute in which the form is used.
-Form DW\-\_FORM\-\_sec\-\_offset is a member of more than one class,
+Form \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} is a member of more than one class,
namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
of classes allowed by the applicable attribute in
Table \refersec{tab:attributeencodings}
determines the class of the form.
-\textit{In DWARF V3 the forms DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 were
+\textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
members of either class constant or one of the classes \livelink{chap:lineptr}{lineptr},
\livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
-DWARF V4 DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 are members of class
-constant in all cases. The new DW\-\_FORM\-\_sec\-\_offset replaces
+DWARF V4 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} are members of class
+constant in all cases. The new \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} replaces
their usage for the other classes.}
Each possible form belongs to one or more of the following classes:
\begin{itemize}
\item address \\
Represented as an object of appropriate size to hold an
-address on the target machine (DW\-\_FORM\-\_addr). The size is
+address on the target machine
+(\livetarg{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}). The size is
encoded in the compilation unit header
(see Section \refersec{datarep:compilationunitheader}).
This address is relocatable in a relocatable object file and
\begin{myindentpara}{1cm}
A 1\dash byte length followed by 0 to 255 contiguous information
-bytes (DW\-\_FORM\-\_block1).
+bytes (\livetarg{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 2\dash byte length followed by 0 to 65,535 contiguous information
-bytes (DW\-\_FORM\-\_block2).
+bytes (\livetarg{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}).
\end{myindentpara}
\begin{myindentpara}{1cm}
A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
-information bytes (DW\-\_FORM\-\_block4).
+information bytes (\livetarg{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}).
\end{myindentpara}
\begin{myindentpara}{1cm}
An unsigned LEB128 length followed by the number of bytes
-specified by the length (DW\-\_FORM\-\_block).
+specified by the length (\livetarg{chap:DWFORMblock}{DW\-\_FORM\-\_block}).
\end{myindentpara}
In all forms, the length is the number of information bytes
\item constant \\
There are six forms of constants. There are fixed length
constant data forms for one, two, four and eight byte values
-(respectively, DW\-\_FORM\-\_data1, DW\-\_FORM\-\_data2, DW\-\_FORM\-\_data4,
-and DW\-\_FORM\-\_data8). There are also variable length constant
+(respectively,
+\livetarg{chap:DWFORMdata1}{DW\-\_FORM\-\_data1},
+\livetarg{chap:DWFORMdata2}{DW\-\_FORM\-\_data2},
+\livetarg{chap:DWFORMdata4}{DW\-\_FORM\-\_data4},
+and \livetarg{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}).
+There are also variable length constant
data forms encoded using LEB128 numbers (see below). Both
-signed (DW\-\_FORM\-\_sdata) and unsigned (DW\-\_FORM\-\_udata) variable
+signed (\livetarg{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}) and unsigned
+(\livetarg{chap:DWFORMudata}{DW\-\_FORM\-\_udata}) variable
length constants are available
-The data in DW\-\_FORM\-\_data1, DW\-\_FORM\-\_data2, DW\-\_FORM\-\_data4 and
-DW\-\_FORM\-\_data8 can be anything. Depending on context, it may
+The data in \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1},
+\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2},
+\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and
+\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}
+can be anything. Depending on context, it may
be a signed integer, an unsigned integer, a floating\dash point
constant, or anything else. A consumer must use context to
know how to interpret the bits, which if they are target
machine data (such as an integer or floating point constant)
will be in target machine byte\dash order.
-\textit{If one of the DW\-\_FORM\-\_data<n> forms is used to represent a
+\textit{If one of the \livetarg{chap:DWFORMdata}{DW\-\_FORM\-\_data}<n> forms is used to represent a
signed or unsigned integer, it can be hard for a consumer
to discover the context necessary to determine which
interpretation is intended. Producers are therefore strongly
-encouraged to use DW\-\_FORM\-\_sdata or DW\-\_FORM\-\_udata for signed and
+encouraged to use \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} or
+\livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata} for signed and
unsigned integers respectively, rather than
-DW\-\_FORM\-\_data\textless n \textgreater.}
+\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data} \textless n \textgreater.}
\item \livelink{chap:exprloc}{exprloc} \\
This is an unsigned LEB128 length followed by the
number of information bytes specified by the length
-(DW\-\_FORM\-\_exprloc). The information bytes contain a DWARF
+(\livetarg{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc}).
+The information bytes contain a DWARF
expression
(see Section \refersec{chap:dwarfexpressions})
or location description
\item flag \\
A flag is represented explicitly as a single byte of data
-(DW\-\_FORM\-\_flag) or implicitly (DW\-\_FORM\-\_flag\-\_present). In the
+(\livetarg{chap:DWFORMflag}{DW\-\_FORM\-\_flag}) or
+implicitly (\livetarg{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present}). In the
first case, if the flag has value zero, it indicates the
absence of the attribute; if the flag has a non\dash zero value,
it indicates the presence of the attribute. In the second
\item \livelink{chap:lineptr}{lineptr} \\
This is an offset into the .debug\_line section
-(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
beginning of the .debug\_line section to the first byte of
the data making up the line number list for the compilation
unit.
\item \livelink{chap:loclistptr}{loclistptr} \\
This is an offset into the .debug\_loc section
-(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
beginning of the .debug\_loc section to the first byte of
the data making up the location list for the compilation
unit.
\item \livelink{chap:macptr}{macptr} \\
This is an offset into the .debug\_macinfo section
-(DW\-\_FORM\-\_sec\-\_offset). It consists of an offset from the
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
beginning of the .debug\_macinfo section to the first byte of
the data making up the macro information list for the compilation
unit.
\item \livelink{chap:rangelistptr}{rangelistptr} \\
This is an offset into the .debug\_ranges section
-(DW\-\_FORM\-\_sec\-\_offset).
+(\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}).
It consists of an
offset from the beginning of the .debug\_ranges section
to the beginning of the non\dash contiguous address ranges
header for the compilation unit containing the reference. There
are five forms for this type of reference. There are fixed
length forms for one, two, four and eight byte offsets
-(respectively, DW\-\_FORM\-\_ref1, DW\-\_FORM\-\_ref2, DW\-\_FORM\-\_ref4,
-and DW\-\_FORM\-\_ref8). There is also an unsigned variable
+(respectively, \livetarg{chap:DWFORMref1}{DW\-\_FORM\-\_ref1},
+\livetarg{chap:DWFORMref2}{DW\-\_FORM\-\_ref2},
+\livetarg{chap:DWFORMref4}{DW\-\_FORM\-\_ref4},
+and \livetarg{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}).
+There is also an unsigned variable
length offset encoded form that uses unsigned LEB128 numbers
-(DW\-\_FORM\-\_ref\-\_udata). Because this type of reference is within
+(\livetarg{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}).
+Because this type of reference is within
the containing compilation unit no relocation of the value
is required.
it may refer to an entry in a different compilation unit
from the unit containing the reference, and may refer to an
entry in a different shared object. This type of reference
-(DW\-\_FORM\-\_ref\-\_addr) is an offset from the beginning of the
+(\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
.debug\_info section of the target executable or shared object;
it is relocatable in a relocatable object file and frequently
relocated in an executable file or shared object. For
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
A debugging information entry that may be referenced by
-another compilation unit using DW\-\_FORM\-\_ref\-\_addr must have a
+another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
global symbolic name.
For a reference from one executable or shared object to
The third type of reference can identify any debugging
information type entry that has been placed in its own
-type unit. This type of reference (DW\-\_FORM\-\_ref\-\_sig8) is the
+type unit. This type of
+reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
64\dash bit type signature
(see Section \refersec{datarep:typesignaturecomputation})
that was computed
\item string \\
A string is a sequence of contiguous non\dash null bytes followed by
one null byte. A string may be represented immediately in the
-debugging information entry itself (DW\-\_FORM\-\_string), or may
+debugging information entry itself
+(\livetarg{chap:DWFORMstring}{DW\-\_FORM\-\_string}), or may
be represented as an offset into a string table contained in
-the .debug\_str section of the object file (DW\-\_FORM\-\_strp). In
-the 32\dash bit DWARF format, the representation of a DW\-\_FORM\-\_strp
+the .debug\_str section of the object file
+(\livetarg{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}). In
+the 32\dash bit DWARF format, the representation of a
+\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}
value is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
it is an 8\dash byte unsigned offset
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
\endfoot
\hline
\endlastfoot
-DW\-\_FORM\-\_addr&0x01&address \\
-DW\-\_FORM\-\_block2&0x03&block \\
-DW\-\_FORM\-\_block4&0x04&block \\
-DW\-\_FORM\-\_data2&0x05&constant \\
-DW\-\_FORM\-\_data4&0x06&constant \\
-DW\-\_FORM\-\_data8&0x07&constant \\
-DW\-\_FORM\-\_string&0x08&string \\
-DW\-\_FORM\-\_block&0x09&block \\
-DW\-\_FORM\-\_block1&0x0a&block \\
-DW\-\_FORM\-\_data1&0x0b&constant \\
-DW\-\_FORM\-\_flag&0x0c&flag \\
-DW\-\_FORM\-\_sdata&0x0d&constant \\
-DW\-\_FORM\-\_strp&0x0e&string \\
-DW\-\_FORM\-\_udata&0x0f&constant \\
-DW\-\_FORM\-\_ref\-\_addr&0x10&reference \\
-DW\-\_FORM\-\_ref1&0x11&reference \\
-DW\-\_FORM\-\_ref2&0x12&reference \\
-DW\-\_FORM\-\_ref4&0x13&reference \\
-DW\-\_FORM\-\_ref8&0x14&reference \\
-DW\-\_FORM\-\_ref\-\_udata&0x15&reference \\
-DW\-\_FORM\-\_indirect&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
-DW\-\_FORM\-\_sec\-\_offset \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
-DW\-\_FORM\-\_exprloc \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
-DW\-\_FORM\-\_flag\-\_present \ddag &0x19&flag \\
-DW\-\_FORM\-\_ref\-\_sig8 \ddag &0x20&reference \\
+\livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address \\
+\livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&block \\
+\livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&block \\
+\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}&0x05&constant \\
+\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4}&0x06&constant \\
+\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}&0x07&constant \\
+\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}&0x08&string \\
+\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}&0x09&block \\
+\livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&block \\
+\livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}&0x0b&constant \\
+\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}&0x0c&flag \\
+\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}&0x0d&constant \\
+\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&0x0e&string \\
+\livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata}&0x0f&constant \\
+\livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}&0x10&reference \\
+\livelink{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}&0x11&reference \\
+\livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}&0x12&reference \\
+\livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}&0x13&reference \\
+\livelink{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}&0x14&reference \\
+\livelink{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}&0x15&reference \\
+\livelink{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect}&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} \ddag &0x17&\livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr}, \livelink{chap:rangelistptr}{rangelistptr} \\
+\livelink{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc} \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
+\livelink{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present} \ddag &0x19&flag \\
+\livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
\end{longtable}
\ddag FORM new in DWARF Version 4
LEB128 value) followed by the encoding of the value according
to the form code. To ensure reproducibility of the signature,
the set of forms used in the signature computation is limited
-to the following: DW\-\_FORM\-\_sdata,
-DW\-\_FORM\-\_flag,
-DW\-\_FORM\-\_string,
-and DW\-\_FORM\-\_block.
+to the following: \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata},
+\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag},
+\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string},
+and \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}.
\item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
\livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type},
\put(280,-70){\vector( 2, 1){70}}
\put(90,-150){\line(2, 1){100}}
- \put(190,-120){\framebox(110,20){DW\-\_FORM\-\_strp (d)} }
+ \put(190,-120){\framebox(110,20){\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp} (d)} }
\put(300,-100){\vector( 4, 1){35}}
\put(190,-140){\vector(-2, -1){100}}
The debug\_abbrev\_offset value in the header is the offset in the
.debug\_abbrev section of the abbreviations for that compilation unit.
(d) .debug\_info and .debug\_types
-Attribute values of class string may have form DW\-\_FORM\-\_strp, whose
+Attribute values of class string may have form \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}, whose
value is the offset in the .debug\_str section of the corresponding string.
\item .debug\_info and .debug\_types \\
-Attribute values of class string may have form DW\-\_FORM\-\_strp, whose
+Attribute values of class string may have form \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}, whose
value is the offset in the .debug\_str section of the corresponding string.
\item .debug\_loc \\
\item .debug\_info \\
An attribute value of class \livelink{chap:loclistptr}{loclistptr} (specifically form
-DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_loc section of a
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) is an offset within the .debug\_loc section of a
location list.
\item .debug\_info \\
An attribute value of class \livelink{chap:rangelistptr}{rangelistptr} (specifically form
-DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_ranges section of
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) is an offset within the .debug\_ranges section of
a range list.
\item .debug\_info \\
An attribute value of class \livelink{chap:macptr}{macptr} (specifically form
-DW\-\_FORM\-\_sec\-\_offset) is an offset within the .debug\_macinfo section
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) is an offset within the .debug\_macinfo section
of the beginning of the macro information for the referencing unit.
\item .debug\_info \\
An attribute value of class \livelink{chap:lineptr}{lineptr} (specifically form
-DW\-\_FORM\-\_sec\-\_offset) is an offset in the .debug\_line section of the
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) is an offset in the .debug\_line section of the
beginning of the line number information for the referencing unit.
\end{enumerate}
DW\-\_LANG\-\_C89
0x0
0x55
-DW\-\_FORM\-\_sec\-\_offset
+\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}
0x0
\vspace{0.01cm}
\hrule
\begin{alltt}
\livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}
DW\-\_CHILDREN\-\_yes
-\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
-\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} DW\-\_FORM\-\_string
-\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} DW\-\_FORM\-\_string
-\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} DW\-\_FORM\-\_data1
-\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} DW\-\_FORM\-\_addr
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} DW\-\_FORM\-\_data1
-\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} DW\-\_FORM\-\_indirect
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+\livelink{chap:DWATproducer}{DW\-\_AT\-\_producer} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+\livelink{chap:DWATlanguage}{DW\-\_AT\-\_language} \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}
+\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}
+\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} \livelink{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect}
0 0
\vspace{0.01cm}
\hrule
2
\livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}
DW\-\_CHILDREN\-\_no
-\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
-\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} DW\-\_FORM\-\_data1
-\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} DW\-\_FORM\-\_data1
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding} \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}
+\livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size} \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}
0
\vspace{0.01cm}
\hrule
3
\livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}
DW\-\_CHILDREN\-\_no
-\livelink{chap:DWATtype}{DW\-\_AT\-\_type} DW\-\_FORM\-\_ref4
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}
0
\vspace{0.01cm}
\hrule
4
\livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}
DW\-\_CHILDREN\-\_no
-\livelink{chap:DWATname}{DW\-\_AT\-\_name} DW\-\_FORM\-\_string
-\livelink{chap:DWATtype}{DW\-\_AT\-\_type} DW\-\_FORM\-\_ref\-\_addr
+\livelink{chap:DWATname}{DW\-\_AT\-\_name} \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
+\livelink{chap:DWATtype}{DW\-\_AT\-\_type} \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}
0
\vspace{0.01cm}
\hrule
\textit{Operand interpretation of
DW\-\_OP\-\_call2, DW\-\_OP\-\_call4 and DW\-\_OP\-\_call\-\_ref is exactly like
-that for DW\-\_FORM\-\_ref2, DW\-\_FORM\-\_ref4 and DW\-\_FORM\-\_ref\-\_addr,
+that for \livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}, \livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4} and \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr},
respectively
(see Section \refersec{datarep:attributeencodings}).
}
name) from DWARF expressions, which compute a final value (such as an array bound).
\item Add support for bundled instructions on machine architectures where instructions do not
occupy a whole number of bytes.
-\item Add a new attribute form for section offsets, DW\-\_FORM\-\_sec\-\_offset, to replace the use
-of DW\-\_FORM\-\_data4 and DW\-\_FORM\-\_data8 for section offsets.
+\item Add a new attribute form for section offsets, \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}, to replace the use
+of \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} for section offsets.
\item Add an attribute, \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram}, to identify the main subprogram of a
program.
\item Define default array lower bound values for each supported language.
(see Section 7.4).
\item
-References that use the attribute form DW\-\_FORM\-\_ref\-\_addr
+References that use the attribute form \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}
are specified to be four bytes in the DWARF 32-bit format and
eight bytes in the DWARF 64-bit format, while DWARF Version
2 specifies that such references have the same size as an
\item \textbf{DW\-\_CFA\-\_def\-\_cfa\-\_expression} \\
The DW\-\_CFA\-\_def\-\_cfa\-\_expression instruction takes a single
-operand encoded as a DW\-\_FORM\-\_exprloc value representing a
+operand encoded as a \livelink{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc} value representing a
DWARF expression. The required action is to establish that
expression as the means by which the current CFA is computed.
See
\item \textbf{DW\-\_CFA\-\_expression} \\
The DW\-\_CFA\-\_expression instruction takes two operands: an
unsigned LEB128 value representing a register number, and
-a DW\-\_FORM\-\_block value representing a DWARF expression. The
+a \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} value representing a DWARF expression. The
required action is to change the rule for the register
indicated by the register number to be an expression(E)
rule where E is the DWARF expression. That is, the DWARF
\item \textbf{DW\-\_CFA\-\_val\-\_expression} \\
The DW\-\_CFA\-\_val\-\_expression instruction takes two operands:
an unsigned LEB128 value representing a register number, and
-a DW\-\_FORM\-\_block value representing a DWARF expression. The
+a \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} value representing a DWARF expression. The
required action is to change the rule for the register
indicated by the register number to be a val\_expression(E)
rule where E is the DWARF expression. That is, the DWARF