12084e0defb65e621a88f68b5832980943517ff2
[dwarf-doc.git] / dwarf5 / latexdoc / datarepresentation.tex
1 \chapter{Data Representation}
2 \label{datarep:datarepresentation}
3
4 This section describes the binary representation of the
5 debugging information entry itself, of the attribute types
6 and of other fundamental elements described above.
7
8
9 \section{Vendor Extensibility}
10 \label{datarep:vendorextensibility}
11
12 To reserve a portion of the DWARF name space and ranges of
13 enumeration values for use for vendor specific extensions,
14 special labels are reserved for tag names, attribute names,
15 base type encodings, location operations, language names,
16 calling conventions and call frame instructions.
17
18 The labels denoting the beginning and end of the reserved
19 value range for vendor specific extensions consist of the
20 appropriate prefix (DW\-\_TAG, DW\-\_AT, DW\-\_END, DW\-\_ATE, DW\-\_OP,
21 DW\-\_LANG, DW\-\_LNE, DW\-\_CC or DW\-\_CFA respectively) followed by
22 \_lo\_user or \_hi\_user. 
23 \textit{For example, for entry tags, the special
24 labels are \livetarg{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user} and 
25 \livetarg{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}.}
26 Values in the
27 range between prefix\_lo\_user and prefix\_hi\_user inclusive,
28 are reserved for vendor specific extensions. Vendors may
29 use values in this range without conflicting with current or
30 future system\dash defined values. All other values are reserved
31 for use by the system.
32
33 \textit{There may also be codes for vendor specific extensions
34 between the number of standard line number opcodes and
35 the first special line number opcode. However, since the
36 number of standard opcodes varies with the DWARF version,
37 the range for extensions is also version dependent. Thus,
38 DW\-\_LNS\-\_lo\-\_user and DW\-\_LNS\-\_hi\-\_user symbols are not defined.}
39
40 Vendor defined tags, attributes, base type encodings, location
41 atoms, language names, line number actions, calling conventions
42 and call frame instructions, conventionally use the form
43 prefix\_vendor\_id\_name, where vendor\_id is some identifying
44 character sequence chosen so as to avoid conflicts with
45 other vendors.
46
47 To ensure that extensions added by one vendor may be safely
48 ignored by consumers that do not understand those extensions,
49 the following rules should be followed:
50
51 \begin{enumerate}[1.]
52 \item New attributes should be added in such a way that a
53 debugger may recognize the format of a new attribute value
54 without knowing the content of that attribute value.
55
56 \item The semantics of any new attributes should not alter
57 the semantics of previously existing attributes.
58
59 \item The semantics of any new tags should not conflict with
60 the semantics of previously existing tags.
61
62 \item Do not add any new forms of attribute value.
63
64 \end{enumerate}
65
66
67 \section{Reserved Values}
68 \label{datarep:reservedvalues}
69 \subsection{Error Values}
70 \label{datarep:errorvalues}
71
72 As a convenience for consumers of DWARF information, the value
73 0 is reserved in the encodings for attribute names, attribute
74 forms, base type encodings, location operations, languages,
75 line number program opcodes, macro information entries and tag
76 names to represent an error condition or unknown value. DWARF
77 does not specify names for these reserved values, since they
78 do not represent valid encodings for the given type and should
79 not appear in DWARF debugging information.
80
81
82 \subsection{Initial Length Values}
83 \label{datarep:initiallengthvalues}
84
85 An initial length field is one of the length fields that occur
86 at the beginning of those DWARF sections that have a header
87 (.debug\_aranges, .debug\_info, .debug\_types, .debug\_line,
88 .debug\_pubnames, and .debug\_pubtypes) or the length field
89 that occurs at the beginning of the CIE and FDE structures
90 in the .debug\_frame section.
91
92 In an initial length field, the values 0xfffffff0 through
93 0xffffffff are reserved by DWARF to indicate some form of
94 extension relative to DWARF Version 2; such values must not
95 be interpreted as a length field. The use of one such value,
96 0xffffffff, is defined below 
97 (see Section \refersec{datarep:32bitand64bitdwarfformats}); 
98 the use of
99 the other values is reserved for possible future extensions.
100
101
102
103 \section{Executable Objects and Shared Objects} 
104 \label{datarep:executableobjectsandsharedobjects}
105
106 The relocated addresses in the debugging information for an
107 executable object are virtual addresses and the relocated
108 addresses in the debugging information for a shared object
109 are offsets relative to the start of the lowest region of
110 memory loaded from that shared object.
111
112 \textit{This requirement makes the debugging information for
113 shared objects position independent.  Virtual addresses in a
114 shared object may be calculated by adding the offset to the
115 base address at which the object was attached. This offset
116 is available in the run\dash time linker’s data structures.}
117
118
119
120 \section{32-Bit and 64-Bit DWARF Formats}
121 \label{datarep:32bitand64bitdwarfformats}
122
123 There are two closely related file formats. In the 32\dash bit DWARF
124 format, all values that represent lengths of DWARF sections
125 and offsets relative to the beginning of DWARF sections are
126 represented using 32\dash bits. In the 64\dash bit DWARF format, all
127 values that represent lengths of DWARF sections and offsets
128 relative to the beginning of DWARF sections are represented
129 using 64\dash bits. A special convention applies to the initial
130 length field of certain DWARF sections, as well as the CIE and
131 FDE structures, so that the 32\dash bit and 64\dash bit DWARF formats
132 can coexist and be distinguished within a single linked object.
133
134 The differences between the 32\dash\   and 64\dash bit 
135 DWARF formats are
136 detailed in the following:
137
138
139 \begin{enumerate}[1.]
140
141 \item  In the 32\dash bit DWARF format, an initial length field
142 (see Section \refersec{datarep:initiallengthvalues}) 
143 is an unsigned 32\dash bit integer (which
144 must be less than 0xfffffff0); in the 64\dash bit DWARF format,
145 an initial length field is 96 bits in size, and has two parts:
146 \begin{itemize}
147 \item The first 32\dash bits have the value 0xffffffff.
148
149 \item  The following 64\dash bits contain the actual length
150 represented as an unsigned 64\dash bit integer.
151 \end{itemize}
152
153 \textit{This representation allows a DWARF consumer to dynamically
154 detect that a DWARF section contribution is using the 64\dash bit
155 format and to adapt its processing accordingly.}
156
157 \item Section offset and section length fields that occur
158 in the headers of DWARF sections (other than initial length
159 fields) are listed following. In the 32\dash bit DWARF format these
160 are 32\dash bit unsigned integer values; in the 64\dash bit DWARF format,
161 they are 64\dash bit unsigned integer values.
162
163 \begin{center}
164 \begin{tabular}{lll}
165 Section &Name & Role  \\ \hline
166 .debug\_ranges & debug\_info\_offset & offset in .debug\_info \\
167 .debug\_frame/CIE & CIE\_id & CIE distinguished value \\
168 .debug\_frame/FDE & CIE\_pointer & offset in .debug\_frame \\
169 .debug\_info & debug\_abbrev\_offset & offset in .debug\_abbrev \\
170 .debug\_line & header\_length & length of header itself \\
171 .debug\_pubnames & debug\_info\_offset & offset in .debug\_info \\
172                 & debug\_info\_length & length of .debug\_info \\
173                 &                   & contribution \\
174 .debug\_pubtypes & debug\_info\_offset & offset in .debug\_info \\
175                 & debug\_info\_length & length of .debug\_info \\
176                 &                   & contribution \\
177 .debug\_types & debug\_abbrev\_offset & offset in .debug\_info \\
178                 & type\_offset & offset in of .debug\_types \\
179
180 \end{tabular}
181 \end{center}
182
183 \textit{The CIE\_id field in a CIE structure must be 64 bits because
184 it overlays the CIE\_pointer in a FDE structure; this implicit
185 union must be accessed to distinguish whether a CIE or FDE is
186 present, consequently, these two fields must exactly overlay
187 each other (both offset and size).}
188
189 \item Within the body of the .debug\_info or .debug\_types
190 section, certain forms of attribute value depend on the choice
191 of DWARF format as follows. For the 32\dash bit DWARF format,
192 the value is a 32\dash bit unsigned integer; for the 64\dash bit DWARF
193 format, the value is a 64\dash bit unsigned integer.
194 \begin{center}
195 \begin{tabular}{lll}
196 Form & Role  \\ \hline
197 \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}& offset in .debug\_info \\
198 \livetarg{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}& offset in a section other than .debug\_info or .debug\_str \\
199 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&offset in .debug\_str \\
200 \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&offset in .debug\_info \\
201 \end{tabular}
202 \end{center}
203
204 \item Within the body of the .debug\_pubnames and
205 .debug\_pubtypes sections, the representation of the first field
206 of each tuple (which represents an offset in the .debug\_info
207 section) depends on the DWARF format as follows: in the
208 32\dash bit DWARF format, this field is a 32\dash bit unsigned integer;
209 in the 64\dash bit DWARF format, it is a 64\dash bit unsigned integer.
210
211 \end{enumerate}
212
213
214 The 32\dash bit and 64\dash bit DWARF format conventions must not be
215 intermixed within a single compilation unit.
216
217 \textit{Attribute values and section header fields that represent
218 addresses in the target program are not affected by these
219 rules.}
220
221 A DWARF consumer that supports the 64\dash bit DWARF format must
222 support executables in which some compilation units use the
223 32\dash bit format and others use the 64\dash bit format provided that
224 the combination links correctly (that is, provided that there
225 are no link\dash time errors due to truncation or overflow). (An
226 implementation is not required to guarantee detection and
227 reporting of all such errors.)
228
229 \textit{It is expected that DWARF producing compilers will not use
230 the 64\dash bit format by default. In most cases, the division of
231 even very large applications into a number of executable and
232 shared objects will suffice to assure that the DWARF sections
233 within each individual linked object are less than 4 GBytes
234 in size. However, for those cases where needed, the 64\dash bit
235 format allows the unusual case to be handled as well. Even
236 in this case, it is expected that only application supplied
237 objects will need to be compiled using the 64\dash bit format;
238 separate 32\dash bit format versions of system supplied shared
239 executable libraries can still be used.}
240
241
242
243 \section{Format of Debugging Information}
244 \label{datarep:formatofdebugginginformation}
245
246 For each compilation unit compiled with a DWARF producer,
247 a contribution is made to the .debug\_info section of
248 the object file. Each such contribution consists of a
249 compilation unit header 
250 (see Section \refersec{datarep:compilationunitheader}) 
251 followed by a
252 single \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit} or \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit} debugging
253 information entry, together with its children.
254
255 For each type defined in a compilation unit, a contribution may
256 be made to the .debug\_types section of the object file. Each
257 such contribution consists of a type unit header 
258 (see Section \refersec{datarep:typeunitheader}) 
259 followed by a \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} entry, together with
260 its children.
261
262 Each debugging information entry begins with a code that
263 represents an entry in a separate abbreviations table. This
264 code is followed directly by a series of attribute values.
265
266 The appropriate entry in the abbreviations table guides the
267 interpretation of the information contained directly in the
268 .debug\_info or .debug\_types section.
269
270 Multiple debugging information entries may share the same
271 abbreviation table entry. Each compilation unit is associated
272 with a particular abbreviation table, but multiple compilation
273 units may share the same table.
274 \subsection{Unit Headers}
275 \label{datarep:unitheaders}
276
277 \subsubsection{Compilation Unit Header}
278 \label{datarep:compilationunitheader}
279
280 \begin{enumerate}[1.]
281
282 \item unit\_length (initial length) \\
283 A 4\dash byte or 12\dash byte unsigned integer representing the length
284 of the .debug\_info contribution for that compilation unit,
285 not including the length field itself. In the 32\dash bit DWARF
286 format, this is a 4\dash byte unsigned integer (which must be less
287 than 0xfffffff0); in the 64\dash bit DWARF format, this consists
288 of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
289 integer that gives the actual length 
290 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
291
292 \item  version (uhalf)
293 A 2\dash byte unsigned integer representing the version of the
294 DWARF information for the compilation unit 
295 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
296 The value in this field is 4.
297
298 \item debug\_abbrev\_offset (section offset) \\
299 A 4\dash byte or 8\dash byte unsigned offset into the .debug\_abbrev
300 section. This offset associates the compilation unit with a
301 particular set of debugging information entry abbreviations. In
302 the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
303 in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
304 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
305
306 \item address\_size (ubyte) \\
307 A 1\dash byte unsigned integer representing the size in bytes of
308 an address on the target architecture. If the system uses
309 segmented addressing, this value represents the size of the
310 offset portion of an address.
311
312
313
314
315 \end{enumerate}
316
317 \subsubsection{Type Unit Header}
318 \label{datarep:typeunitheader}
319
320 The header for the series of debugging information entries
321 contributing to the description of a type that has been
322 placed in its own type unit, within the .debug\_types section,
323 consists of the following information:
324
325 \begin{enumerate}[1.]
326
327 \item unit\_length (initial length) \\
328 A 4\dash byte or 12\dash byte unsigned integer representing the length
329 of the .debug\_types contribution for that compilation unit,
330 not including the length field itself. In the 32\dash bit DWARF
331 format, this is a 4\dash byte unsigned integer (which must be
332 less than 0xfffffff0); in the 64\dash bit DWARF format, this
333 consists of the 4\dash byte value 0xffffffff followed by an 
334 8\dash byte unsigned integer that gives the actual length
335 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
336
337 \item  version (uhalf)
338 A 2\dash byte unsigned integer representing the version of the
339 DWARF information for the compilation unit 
340 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
341 The value in this field is 4.
342
343 \item debug\_abbrev\_offset (section offset) \\
344 A 4\dash byte or 8\dash byte unsigned offset into the .debug\_abbrev
345 section. This offset associates the compilation unit with a
346 particular set of debugging information entry abbreviations. In
347 the 32\dash bit DWARF format, this is a 4\dash byte unsigned length;
348 in the 64\dash bit DWARF format, this is an 8\dash byte unsigned length
349 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
350
351 \item address\_size (ubyte) \\
352 A 1\dash byte unsigned integer representing the size in bytes of
353 an address on the target architecture. If the system uses
354 segmented addressing, this value represents the size of the
355 offset portion of an address.
356
357
358 \item type\_signature (8\dash byte unsigned integer) \\
359 A 64\dash bit unique signature of the type described in this type
360 unit.  
361
362 \textit{An attribute that refers(using \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) to
363 the primary type contained in this type unit uses this value.}
364
365
366 \item type\_offset (section offset) \\
367 A 4\dash byte or 8\dash byte unsigned offset relative to the beginning
368 of the type unit header. This offset refers to the debugging
369 information entry that describes the type. Because the type
370 may be nested inside a namespace or other structures, and may
371 contain references to other types that have not been placed in
372 separate type units, it is not necessarily either the first or
373 the only entry in the type unit. In the 32\dash bit DWARF format,
374 this is a 4\dash byte unsigned length; in the 64\dash bit DWARF format,
375 this is an 8\dash byte unsigned length
376 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
377
378 \end{enumerate}
379
380 \subsection{Debugging Information Entry}
381 \label{datarep:debugginginformationentry}
382
383 Each debugging information entry begins with an unsigned LEB128
384 number containing the abbreviation code for the entry. This
385 code represents an entry within the abbreviations table
386 associated with the compilation unit containing this entry. The
387 abbreviation code is followed by a series of attribute values.
388
389 On some architectures, there are alignment constraints on
390 section boundaries. To make it easier to pad debugging
391 information sections to satisfy such constraints, the
392 abbreviation code 0 is reserved. Debugging information entries
393 consisting of only the abbreviation code 0 are considered
394 null entries.
395
396 \subsection{Abbreviations Tables}
397 \label{datarep:abbreviationstables}
398
399 The abbreviations tables for all compilation units
400 are contained in a separate object file section called
401 .debug\_abbrev. As mentioned before, multiple compilation
402 units may share the same abbreviations table.
403
404 The abbreviations table for a single compilation unit consists
405 of a series of abbreviation declarations. Each declaration
406 specifies the tag and attributes for a particular form of
407 debugging information entry. Each declaration begins with
408 an unsigned LEB128 number representing the abbreviation
409 code itself. It is this code that appears at the beginning
410 of a debugging information entry in the .debug\_info or
411 .debug\_types section. As described above, the abbreviation
412 code 0 is reserved for null debugging information entries. The
413 abbreviation code is followed by another unsigned LEB128
414 number that encodes the entry’s tag. The encodings for the
415 tag names are given in 
416 Table \refersec{tab:tagencodings}.
417
418 Following the tag encoding is a 1\dash byte value that determines
419 whether a debugging information entry using this abbreviation
420 has child entries or not. If the value is DW\-\_CHILDREN\-\_yes,
421 the next physically succeeding entry of any debugging
422 information entry using this abbreviation is the first
423 child of that entry. If the 1\dash byte value following the
424 abbreviation’s tag encoding is DW\-\_CHILDREN\-\_no, the next
425 physically succeeding entry of any debugging information entry
426 using this abbreviation is a sibling of that entry. (Either
427 the first child or sibling entries may be null entries). The
428 encodings for the child determination byte are given in 
429 Table \refersec{tab:childdeterminationencodings}
430 (As mentioned in 
431 Section \refersec{chap:relationshipofdebugginginformationentries}, 
432 each chain of
433 sibling entries is terminated by a null entry.)
434
435 Finally, the child encoding is followed by a series of
436 attribute specifications. Each attribute specification
437 consists of two parts. The first part is an unsigned LEB128
438 number representing the attribute’s name. The second part
439 is an unsigned LEB128 number representing the attribute’s
440 form. The series of attribute specifications ends with an
441 entry containing 0 for the name and 0 for the form.
442
443 The attribute form 
444 \livetarg{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect} is a special case. For
445 attributes with this form, the attribute value itself in the
446 .debug\_info or .debug\_types section begins with an unsigned
447 LEB128 number that represents its form. This allows producers
448 to choose forms for particular attributes dynamically,
449 without having to add a new entry to the abbreviations table.
450
451 The abbreviations for a given compilation unit end with an
452 entry consisting of a 0 byte for the abbreviation code.
453
454 See 
455 Appendix \refersec{app:compilationunitsandabbreviationstableexample} 
456 for a depiction of the organization of the
457 debugging information.
458
459 \subsection{Attribute Encodings}
460 \label{datarep:attributeencodings}
461
462 The encodings for the attribute names are given in 
463 Table \refersec{tab:attributeencodings}.
464
465 The attribute form governs how the value of the attribute is
466 encoded. There are nine classes of form, listed below. Each
467 class is a set of forms which have related representations
468 and which are given a common interpretation according to the
469 attribute in which the form is used.
470
471 Form \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} is a member of more than one class,
472 namely \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}; the list
473 of classes allowed by the applicable attribute in 
474 Table \refersec{tab:attributeencodings}
475 determines the class of the form.
476
477 \textit{In DWARF V3 the forms \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} were
478 members of either class constant or one of the classes \livelink{chap:lineptr}{lineptr},
479 \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr}, depending on context. In
480 DWARF V4 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} are members of class
481 constant in all cases. The new \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset} replaces
482 their usage for the other classes.}
483
484 Each possible form belongs to one or more of the following classes:
485
486 \begin{itemize}
487 \item address \\
488 Represented as an object of appropriate size to hold an
489 address on the target machine 
490 (\livetarg{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}). The size is
491 encoded in the compilation unit header 
492 (see Section \refersec{datarep:compilationunitheader}).
493 This address is relocatable in a relocatable object file and
494 is relocated in an executable file or shared object.
495
496 \item block \\
497 Blocks come in four forms:
498
499 \begin{myindentpara}{1cm}
500 A 1\dash byte length followed by 0 to 255 contiguous information
501 bytes (\livetarg{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}).
502 \end{myindentpara}
503
504 \begin{myindentpara}{1cm}
505 A 2\dash byte length followed by 0 to 65,535 contiguous information
506 bytes (\livetarg{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}).
507 \end{myindentpara}
508
509
510 \begin{myindentpara}{1cm}
511 A 4\dash byte length followed by 0 to 4,294,967,295 contiguous
512 information bytes (\livetarg{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}).
513 \end{myindentpara}
514
515
516 \begin{myindentpara}{1cm}
517 An unsigned LEB128 length followed by the number of bytes
518 specified by the length (\livetarg{chap:DWFORMblock}{DW\-\_FORM\-\_block}).
519 \end{myindentpara}
520
521 In all forms, the length is the number of information bytes
522 that follow. The information bytes may contain any mixture
523 of relocated (or relocatable) addresses, references to other
524 debugging information entries or data bytes.
525
526 \item constant \\
527 There are six forms of constants. There are fixed length
528 constant data forms for one, two, four and eight byte values
529 (respectively, 
530 \livetarg{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}, 
531 \livetarg{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}, 
532 \livetarg{chap:DWFORMdata4}{DW\-\_FORM\-\_data4},
533 and \livetarg{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}). 
534 There are also variable length constant
535 data forms encoded using LEB128 numbers (see below). Both
536 signed (\livetarg{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}) and unsigned 
537 (\livetarg{chap:DWFORMudata}{DW\-\_FORM\-\_udata}) variable
538 length constants are available
539
540 The data in \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}, 
541 \livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}, 
542 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4} and
543 \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8} 
544 can be anything. Depending on context, it may
545 be a signed integer, an unsigned integer, a floating\dash point
546 constant, or anything else. A consumer must use context to
547 know how to interpret the bits, which if they are target
548 machine data (such as an integer or floating point constant)
549 will be in target machine byte\dash order.
550
551 \textit{If one of the \livetarg{chap:DWFORMdata}{DW\-\_FORM\-\_data}<n> forms is used to represent a
552 signed or unsigned integer, it can be hard for a consumer
553 to discover the context necessary to determine which
554 interpretation is intended. Producers are therefore strongly
555 encouraged to use \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} or 
556 \livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata} for signed and
557 unsigned integers respectively, rather than 
558 \livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data} \textless n \textgreater.}
559
560
561 \item \livelink{chap:exprloc}{exprloc} \\
562 This is an unsigned LEB128 length followed by the
563 number of information bytes specified by the length
564 (\livetarg{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc}). 
565 The information bytes contain a DWARF
566 expression 
567 (see Section \refersec{chap:dwarfexpressions}) 
568 or location description 
569 (see Section \refersec{chap:locationdescriptions}).
570
571 \item flag \\
572 A flag is represented explicitly as a single byte of data
573 (\livetarg{chap:DWFORMflag}{DW\-\_FORM\-\_flag}) or 
574 implicitly (\livetarg{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present}). In the
575 first case, if the flag has value zero, it indicates the
576 absence of the attribute; if the flag has a non\dash zero value,
577 it indicates the presence of the attribute. In the second
578 case, the attribute is implicitly indicated as present, and
579 no value is encoded in the debugging information entry itself.
580
581 \item \livelink{chap:lineptr}{lineptr} \\
582 This is an offset into the .debug\_line section
583 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
584 beginning of the .debug\_line section to the first byte of
585 the data making up the line number list for the compilation
586 unit. 
587 It is relocatable in a relocatable object file, and
588 relocated in an executable or shared object. In the 32\dash bit
589 DWARF format, this offset is a 4\dash byte unsigned value;
590 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
591 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
592
593
594 \item \livelink{chap:loclistptr}{loclistptr} \\
595 This is an offset into the .debug\_loc section
596 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
597 beginning of the .debug\_loc section to the first byte of
598 the data making up the location list for the compilation
599 unit. 
600 It is relocatable in a relocatable object file, and
601 relocated in an executable or shared object. In the 32\dash bit
602 DWARF format, this offset is a 4\dash byte unsigned value;
603 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
604 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
605
606
607 \item \livelink{chap:macptr}{macptr} \\
608 This is an offset into the .debug\_macinfo section
609 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). It consists of an offset from the
610 beginning of the .debug\_macinfo section to the first byte of
611 the data making up the macro information list for the compilation
612 unit. 
613 It is relocatable in a relocatable object file, and
614 relocated in an executable or shared object. In the 32\dash bit
615 DWARF format, this offset is a 4\dash byte unsigned value;
616 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
617 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
618
619 \item \livelink{chap:rangelistptr}{rangelistptr} \\
620 This is an offset into the .debug\_ranges section
621 (\livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}). 
622 It consists of an
623 offset from the beginning of the .debug\_ranges section
624 to the beginning of the non\dash contiguous address ranges
625 information for the referencing entity.  
626 It is relocatable in
627 a relocatable object file, and relocated in an executable or
628 shared object. In the 32\dash bit DWARF format, this offset
629 is a 4\dash byte unsigned value; in the 64\dash bit DWARF
630 format, it is an 8\dash byte unsigned value (see Section
631 \refersec{datarep:32bitand64bitdwarfformats}).
632 \end{itemize}
633
634 \textit{Because classes \livelink{chap:lineptr}{lineptr}, \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} and \livelink{chap:rangelistptr}{rangelistptr}
635 share a common representation, it is not possible for an
636 attribute to allow more than one of these classes}
637
638
639 \begin{itemize}
640 \item reference \\
641 There are three types of reference.
642
643 The first type of reference can identify any debugging
644 information entry within the containing unit. This type of
645 reference is an offset from the first byte of the compilation
646 header for the compilation unit containing the reference. There
647 are five forms for this type of reference. There are fixed
648 length forms for one, two, four and eight byte offsets
649 (respectively, \livetarg{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}, 
650 \livetarg{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}, 
651 \livetarg{chap:DWFORMref4}{DW\-\_FORM\-\_ref4},
652 and \livetarg{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}). 
653 There is also an unsigned variable
654 length offset encoded form that uses unsigned LEB128 numbers
655 (\livetarg{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}). 
656 Because this type of reference is within
657 the containing compilation unit no relocation of the value
658 is required.
659
660 The second type of reference can identify any debugging
661 information entry within a .debug\_info section; in particular,
662 it may refer to an entry in a different compilation unit
663 from the unit containing the reference, and may refer to an
664 entry in a different shared object.  This type of reference
665 (\livetarg{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}) is an offset from the beginning of the
666 .debug\_info section of the target executable or shared object;
667 it is relocatable in a relocatable object file and frequently
668 relocated in an executable file or shared object. For
669 references from one shared object or static executable file
670 to another, the relocation and identification of the target
671 object must be performed by the consumer. In the 32\dash bit DWARF
672 format, this offset is a 4\dash byte unsigned value; 
673 in the 64\dash bit DWARF format, it is an 8\dash byte
674 unsigned value 
675 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
676
677 A debugging information entry that may be referenced by
678 another compilation unit using \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr} must have a
679 global symbolic name.
680
681 For a reference from one executable or shared object to
682 another, the reference is resolved by the debugger to identify
683 the shared object or executable and the offset into that
684 object’s .debug\_info section in the same fashion as the run
685 time loader, either when the debug information is first read,
686 or when the reference is used.
687
688 The third type of reference can identify any debugging
689 information type entry that has been placed in its own
690 type unit. This type of 
691 reference (\livetarg{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8}) is the
692 64\dash bit type signature 
693 (see Section \refersec{datarep:typesignaturecomputation}) 
694 that was computed
695 for the type.
696
697 The use of compilation unit relative references will reduce the
698 number of link\dash time relocations and so speed up linking. The
699 use of the second and third type of reference allows for the
700 sharing of information, such as types, across compilation
701 units.
702
703 A reference to any kind of compilation unit identifies the
704 debugging information entry for that unit, not the preceding
705 header.
706
707 \item string \\
708 A string is a sequence of contiguous non\dash null bytes followed by
709 one null byte. A string may be represented immediately in the
710 debugging information entry itself 
711 (\livetarg{chap:DWFORMstring}{DW\-\_FORM\-\_string}), or may
712 be represented as an offset into a string table contained in
713 the .debug\_str section of the object file 
714 (\livetarg{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}). In
715 the 32\dash bit DWARF format, the representation of a 
716 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}
717 value is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
718 it is an 8\dash byte unsigned offset 
719 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
720
721 If the \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8} attribute is specified for the
722 compilation unit entry, string values are encoded using the
723 UTF\dash 8 (Unicode Transformation Format\dash 8) from the Universal
724 Character Set standard (ISO/IEC 10646\dash 1:1993). Otherwise,
725 the string representation is unspecified.
726
727 The Unicode Standard Version 3 is fully compatible with
728 ISO/IEC 10646\dash 1:1993. It contains all the same characters
729 and encoding points as ISO/IEC 10646, as well as additional
730 information about the characters and their use.
731
732 Earlier versions of DWARF did not specify the representation
733 of strings; for compatibility, this version also does
734 not. However, the UTF\dash 8 representation is strongly recommended.
735
736 \end{itemize}
737
738 In no case does an attribute use one of the classes \livelink{chap:lineptr}{lineptr},
739 \livelink{chap:loclistptr}{loclistptr}, \livelink{chap:macptr}{macptr} or \livelink{chap:rangelistptr}{rangelistptr} to point into either the
740 .debug\_info or .debug\_str section.
741
742 The form encodings are listed in 
743 Table \refersec{tab:attributeformencodings}.
744
745 \begin{centering}
746 \setlength{\extrarowheight}{0.1cm}
747 \begin{longtable}{l|l}
748   \caption{Tag encodings} \label{tab:tagencodings} \\
749   \hline \\ \bfseries Tag name&\bfseries Value\\ \hline
750 \endfirsthead
751   \bfseries Tag name&\bfseries Value \\ \hline
752 \endhead
753   \hline \emph{Continued on next page}
754 \endfoot
755   \hline
756 \endlastfoot
757 \livelink{chap:DWTAGarraytype}{DW\-\_TAG\-\_array\-\_type} &0x01 \\
758 \livelink{chap:DWTAGclasstype}{DW\-\_TAG\-\_class\-\_type}&0x02 \\
759 \livelink{chap:DWTAGentrypoint}{DW\-\_TAG\-\_entry\-\_point}&0x03 \\
760 \livelink{chap:DWTAGenumerationtype}{DW\-\_TAG\-\_enumeration\-\_type}&0x04 \\
761 \livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter}&0x05 \\
762 \livelink{chap:DWTAGimporteddeclaration}{DW\-\_TAG\-\_imported\-\_declaration}&0x08 \\
763 \livelink{chap:DWTAGlabel}{DW\-\_TAG\-\_label}&0x0a \\
764 \livelink{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}&0x0b \\
765 \livelink{chap:DWTAGmember}{DW\-\_TAG\-\_member}&0x0d \\
766 \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type}&0x0f \\
767 \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}&0x10 \\
768 \livelink{chap:DWTAGcompileunit}{DW\-\_TAG\-\_compile\-\_unit}&0x11 \\
769 \livelink{chap:DWTAGstringtype}{DW\-\_TAG\-\_string\-\_type}&0x12 \\
770 \livelink{chap:DWTAGstructuretype}{DW\-\_TAG\-\_structure\-\_type}&0x13 \\
771 \livelink{chap:DWTAGsubroutinetype}{DW\-\_TAG\-\_subroutine\-\_type}&0x15 \\
772 \livelink{chap:DWTAGtypedef}{DW\-\_TAG\-\_typedef}&0x16 \\
773 \livelink{chap:DWTAGuniontype}{DW\-\_TAG\-\_union\-\_type}&0x17 \\
774 \livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}&0x18  \\
775 \livelink{chap:DWTAGvariant}{DW\-\_TAG\-\_variant}&0x19  \\
776 \livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}&0x1a  \\
777 \livelink{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}&0x1b  \\
778 \livelink{chap:DWTAGinheritance}{DW\-\_TAG\-\_inheritance}&0x1c  \\
779 \livelink{chap:DWTAGinlinedsubroutine}{DW\-\_TAG\-\_inlined\-\_subroutine}&0x1d  \\
780 \livelink{chap:DWTAGmodule}{DW\-\_TAG\-\_module}&0x1e  \\
781 \livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}&0x1f  \\
782 \livelink{chap:DWTAGsettype}{DW\-\_TAG\-\_set\-\_type}&0x20  \\
783 \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type}&0x21  \\
784 \livelink{chap:DWTAGwithstmt}{DW\-\_TAG\-\_with\-\_stmt}&0x22  \\
785 \livelink{chap:DWTAGaccessdeclaration}{DW\-\_TAG\-\_access\-\_declaration}&0x23  \\
786 \livelink{chap:DWTAGbasetype}{DW\-\_TAG\-\_base\-\_type}&0x24  \\
787 \livelink{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}&0x25  \\
788 \livelink{chap:DWTAGconsttype}{DW\-\_TAG\-\_const\-\_type}&0x26  \\
789 \livelink{chap:DWTAGconstant}{DW\-\_TAG\-\_constant}&0x27  \\
790 \livelink{chap:DWTAGenumerator}{DW\-\_TAG\-\_enumerator}&0x28  \\
791 \livelink{chap:DWTAGfiletype}{DW\-\_TAG\-\_file\-\_type}&0x29  \\
792 \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}&0x2a  \\
793 \livelink{chap:DWTAGnamelist}{DW\-\_TAG\-\_namelist}&0x2b    \\
794 \livelink{chap:DWTAGnamelistitem}{DW\-\_TAG\-\_namelist\-\_item}&0x2c    \\
795 \livelink{chap:DWTAGpackedtype}{DW\-\_TAG\-\_packed\-\_type}&0x2d    \\
796 \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}&0x2e    \\
797 \livelink{chap:DWTAGtemplatetypeparameter}{DW\-\_TAG\-\_template\-\_type\-\_parameter}&0x2f    \\
798 \livelink{chap:DWTAGtemplatevalueparameter}{DW\-\_TAG\-\_template\-\_value\-\_parameter}&0x30    \\
799 \livelink{chap:DWTAGthrowntype}{DW\-\_TAG\-\_thrown\-\_type}&0x31    \\
800 \livelink{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}&0x32    \\
801 \livelink{chap:DWTAGvariantpart}{DW\-\_TAG\-\_variant\-\_part}&0x33    \\
802 \livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}&0x34    \\
803 \livelink{chap:DWTAGvolatiletype}{DW\-\_TAG\-\_volatile\-\_type}&0x35    \\
804 \livelink{chap:DWTAGdwarfprocedure}{DW\-\_TAG\-\_dwarf\-\_procedure}&0x36     \\
805 \livelink{chap:DWTAGrestricttype}{DW\-\_TAG\-\_restrict\-\_type}&0x37      \\
806 \livelink{chap:DWTAGinterfacetype}{DW\-\_TAG\-\_interface\-\_type}&0x38      \\
807 \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace}&0x39      \\
808 \livelink{chap:DWTAGimportedmodule}{DW\-\_TAG\-\_imported\-\_module}&0x3a      \\
809 \livelink{chap:DWTAGunspecifiedtype}{DW\-\_TAG\-\_unspecified\-\_type}&0x3b      \\
810 \livelink{chap:DWTAGpartialunit}{DW\-\_TAG\-\_partial\-\_unit}&0x3c      \\
811 \livelink{chap:DWTAGimportedunit}{DW\-\_TAG\-\_imported\-\_unit}&0x3d      \\
812 \livelink{chap:DWTAGcondition}{DW\-\_TAG\-\_condition}&0x3f      \\
813 \livelink{chap:DWTAGsharedtype}{DW\-\_TAG\-\_shared\-\_type}&0x40      \\
814 \livelink{chap:DWTAGtypeunit}{DW\-\_TAG\-\_type\-\_unit} \ddag &0x41      \\
815 \livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type} \ddag &0x42      \\
816 \livelink{chap:DWTAGtemplatealias}{DW\-\_TAG\-\_template\-\_alias} \ddag &0x43      \\
817 \livelink{chap:DWTAGlouser}{DW\-\_TAG\-\_lo\-\_user}&0x4080      \\
818 \livelink{chap:DWTAGhiuser}{DW\-\_TAG\-\_hi\-\_user}&0xffff      \\
819 \end{longtable}
820 \ddag  TAG new in DWARF Version 4 
821 \end{centering}
822
823
824 \begin{figure}[here]
825 \centering
826 \setlength{\extrarowheight}{0.1cm}
827 \caption{Child determination encodings}
828 \label{tab:childdeterminationencodings}
829 \begin{tabular}{l|l} \hline
830 Child determination name& Value\\ \hline
831 DW\-\_CHILDREN\-\_no&0x00 \\ 
832 DW\-\_CHILDREN\-\_yes&0x01 \\ \hline
833 \end{tabular}
834 \end{figure}
835
836
837 \begin{centering}
838 \setlength{\extrarowheight}{0.1cm}
839 \begin{longtable}{l|l|l}
840   \caption{Attribute encodings} \label{tab:attributeencodings} \\
841   \hline \\ \bfseries Attribute name&\bfseries Value &\bfseries Classes \\ \hline
842 \endfirsthead
843   \bfseries Attribute name&\bfseries Value &\bfseries Classes\\ \hline
844 \endhead
845   \hline \emph{Continued on next page}
846 \endfoot
847   \hline
848 \endlastfoot
849 \livelink{chap:DWATsibling}{DW\-\_AT\-\_sibling}&0x01&reference \\
850 \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}&0x02&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
851 \livelink{chap:DWATname}{DW\-\_AT\-\_name}&0x03&string   \\
852 \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}&0x09&constant   \\
853 \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}&0x0b&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
854 \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}&0x0c&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
855 \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}&0x0d&constant, \livelink{chap:exprloc}{exprloc}, reference   \\
856 \livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list}&0x10&\livelink{chap:lineptr}{lineptr}   \\
857 \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc}&0x11&address   \\
858 \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc}&0x12&address, constant   \\
859 \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}&0x13&constant   \\
860 \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}&0x15&reference   \\
861 \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}&0x16&constant   \\
862 \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}&0x17&constant   \\
863 \livelink{chap:DWATimport}{DW\-\_AT\-\_import}&0x18&reference   \\
864 \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}   \\
865 \livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference   \\
866 \livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string   \\
867 \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&block, constant, string   \\
868 \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference     \\
869 \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference     \\
870 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant     \\
871 \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}&0x21&flag     \\
872 \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}&0x22&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
873 \livelink{chap:DWATproducer}{DW\-\_AT\-\_producer}&0x25&string     \\
874 \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}&0x27&flag     \\
875 \livelink{chap:DWATreturnaddr}{DW\-\_AT\-\_return\-\_addr}&0x2a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
876 % FIXME: lower case , not Constant
877 \livelink{chap:DWATstartscope}{DW\-\_AT\-\_start\-\_scope}&0x2c&Constant, \livelink{chap:rangelistptr}{rangelistptr}     \\
878 \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}&0x2e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
879 \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}&0x2f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
880 \livelink{chap:DWATabstractorigin}{DW\-\_AT\-\_abstract\-\_origin}&0x31&reference     \\
881 \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}&0x32&constant     \\
882 \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}&0x33&constant     \\
883 \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}&0x34&flag     \\
884 \livelink{chap:DWATbasetypes}{DW\-\_AT\-\_base\-\_types}&0x35&reference     \\
885 \livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}&0x36&constant     \\
886 \livelink{chap:DWATcount}{DW\-\_AT\-\_count}&0x37&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
887 \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}&0x38&constant, \livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
888 \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column}&0x39&constant     \\
889 \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant     \\
890 \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant     \\
891 \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&flag     \\
892 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&block     \\
893 \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant     \\
894 \livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&flag     \\
895 \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}     \\
896 \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}&0x41&reference     \\
897 \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}&0x42&constant    \\
898 \livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info}&0x43&\livelink{chap:macptr}{macptr}    \\
899 \livelink{chap:DWATnamelistitem}{DW\-\_AT\-\_namelist\-\_item}&0x44&reference    \\
900 \livelink{chap:DWATpriority}{DW\-\_AT\-\_priority}&0x45&reference    \\
901 \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}&0x46&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
902 \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification}&0x47&reference    \\
903 \livelink{chap:DWATstaticlink}{DW\-\_AT\-\_static\-\_link}&0x48&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
904 \livelink{chap:DWATtype}{DW\-\_AT\-\_type}&0x49&reference    \\
905 \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}&0x4a&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
906 \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}&0x4b&flag    \\
907 \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}&0x4c&constant    \\
908 \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}&0x4d&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr}    \\
909
910
911 \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}&0x4e&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
912 \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}&0x4f&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
913 \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}&0x50&\livelink{chap:exprloc}{exprloc}     \\
914 \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}&0x51&constant, \livelink{chap:exprloc}{exprloc}, reference     \\
915 \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc}&0x52&address     \\
916 \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}&0x53&flag     \\
917 \livelink{chap:DWATextension}{DW\-\_AT\-\_extension}&0x54&reference     \\
918 \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges}&0x55&\livelink{chap:rangelistptr}{rangelistptr}     \\
919 \livelink{chap:DWATtrampoline}{DW\-\_AT\-\_trampoline}&0x56&address, flag, reference, string     \\
920 \livelink{chap:DWATcallcolumn}{DW\-\_AT\-\_call\-\_column}&0x57&constant     \\
921 \livelink{chap:DWATcallfile}{DW\-\_AT\-\_call\-\_file}&0x58&constant     \\
922 \livelink{chap:DWATcallline}{DW\-\_AT\-\_call\-\_line}&0x59&constant     \\
923 \livelink{chap:DWATdescription}{DW\-\_AT\-\_description}&0x5a&string     \\
924 \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}&0x5b&constant     \\
925 \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}&0x5c&constant     \\
926 \livelink{chap:DWATsmall}{DW\-\_AT\-\_small} &0x5d&reference     \\
927 \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}&0x5e&constant     \\
928 \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}&0x5f&constant     \\
929 \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}&0x60&string      \\
930 \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}&0x61&flag     \\
931
932
933 \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}&0x62&flag     \\
934 \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}&0x63&flag     \\
935 \livelink{chap:DWATobjectpointer}{DW\-\_AT\-\_object\-\_pointer}&0x64&reference     \\
936 \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}&0x65&constant     \\
937 \livelink{chap:DWATelemental}{DW\-\_AT\-\_elemental}&0x66&flag     \\
938 \livelink{chap:DWATpure}{DW\-\_AT\-\_pure}&0x67&flag     \\
939 \livelink{chap:DWATrecursive}{DW\-\_AT\-\_recursive}&0x68&flag     \\
940 \livelink{chap:DWATsignature}{DW\-\_AT\-\_signature} \ddag &0x69&reference     \\ 
941 \livelink{chap:DWATmainsubprogram}{DW\-\_AT\-\_main\-\_subprogram} \ddag &0x6a&flag     \\
942 \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset} \ddag &0x6b&constant     \\
943 \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr} \ddag &0x6c&flag     \\
944 \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class} \ddag &0x6d&flag     \\
945 \livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} \ddag &0x6e&string     \\
946 \livetarg{chap:DWATlouser}{DW\-\_AT\-\_lo\-\_user}&0x2000 & ---     \\
947 \livetarg{chap:DWAThiuser}{DW\-\_AT\-\_hi\-\_user}&0x3fff& ---     \\
948
949 \end{longtable}
950 \ddag  Attribute new in DWARF Version 4 
951 \end{centering}
952
953 \begin{centering}
954 \setlength{\extrarowheight}{0.1cm}
955 \begin{longtable}{l|l|l}
956   \caption{Attribute form encodings} \label{tab:attributeformencodings} \\
957   \hline \\ \bfseries Form name&\bfseries Value &\bfseries Classes \\ \hline
958 \endfirsthead
959   \bfseries Form name&\bfseries Value &\bfseries Classes\\ \hline
960 \endhead
961   \hline \emph{Continued on next page}
962 \endfoot
963   \hline
964 \endlastfoot
965 \livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address  \\
966 \livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&block \\
967 \livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&block  \\
968 \livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}&0x05&constant \\
969 \livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4}&0x06&constant \\
970 \livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}&0x07&constant \\
971 \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}&0x08&string \\
972 \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}&0x09&block \\
973 \livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&block \\
974 \livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}&0x0b&constant \\
975 \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}&0x0c&flag \\
976 \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}&0x0d&constant    \\
977 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}&0x0e&string         \\
978 \livelink{chap:DWFORMudata}{DW\-\_FORM\-\_udata}&0x0f&constant         \\
979 \livelink{chap:DWFORMrefaddr}{DW\-\_FORM\-\_ref\-\_addr}&0x10&reference         \\
980 \livelink{chap:DWFORMref1}{DW\-\_FORM\-\_ref1}&0x11&reference          \\
981 \livelink{chap:DWFORMref2}{DW\-\_FORM\-\_ref2}&0x12&reference         \\
982 \livelink{chap:DWFORMref4}{DW\-\_FORM\-\_ref4}&0x13&reference         \\
983 \livelink{chap:DWFORMref8}{DW\-\_FORM\-\_ref8}&0x14&reference \\
984 \livelink{chap:DWFORMrefudata}{DW\-\_FORM\-\_ref\-\_udata}&0x15&reference  \\
985 \livelink{chap:DWFORMindirect}{DW\-\_FORM\-\_indirect}&0x16&(see Section \refersec{datarep:abbreviationstables}) \\
986 \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} \\
987 \livelink{chap:DWFORMexprloc}{DW\-\_FORM\-\_exprloc} \ddag &0x18&\livelink{chap:exprloc}{exprloc} \\
988 \livelink{chap:DWFORMflagpresent}{DW\-\_FORM\-\_flag\-\_present} \ddag &0x19&flag \\
989 \livelink{chap:DWFORMrefsig8}{DW\-\_FORM\-\_ref\-\_sig8} \ddag &0x20&reference \\
990  
991 \end{longtable}
992 \ddag  FORM new in DWARF Version 4 
993 \end{centering}
994
995 \section{Variable Length Data}
996 \label{datarep:variablelengthdata}
997 Integers may be encoded using ``Little Endian Base 128''
998 (LEB128) numbers. LEB128 is a scheme for encoding integers
999 densely that exploits the assumption that most integers are
1000 small in magnitude.
1001
1002 This encoding is equally suitable whether the target machine
1003 architecture represents data in big\dash\  endian or little\dash endian
1004 order. It is ``little\dash endian'' only in the sense that it
1005 avoids using space to represent the ``big'' end of an
1006 unsigned integer, when the big end is all zeroes or sign
1007 extension bits.
1008
1009 Unsigned LEB128 (ULEB128) numbers are encoded as follows:
1010 start at the low order end of an unsigned integer and chop
1011 it into 7\dash bit chunks. Place each chunk into the low order 7
1012 bits of a byte. Typically, several of the high order bytes
1013 will be zero; discard them. Emit the remaining bytes in a
1014 stream, starting with the low order byte; set the high order
1015 bit on each byte except the last emitted byte. The high bit
1016 of zero on the last byte indicates to the decoder that it
1017 has encountered the last byte.
1018
1019 The integer zero is a special case, consisting of a single
1020 zero byte.
1021
1022 Table \refersec{tab:examplesofunsignedleb128encodings}
1023 gives some examples of unsigned LEB128 numbers. The
1024 0x80 in each case is the high order bit of the byte, indicating
1025 that an additional byte follows.
1026
1027
1028 The encoding for signed, two’s complement LEB128 (SLEB128)
1029 numbers is similar, except that the criterion for discarding
1030 high order bytes is not whether they are zero, but whether
1031 they consist entirely of sign extension bits. Consider the
1032 32\dash bit integer -2. The three high level bytes of the number
1033 are sign extension, thus LEB128 would represent it as a single
1034 byte containing the low order 7 bits, with the high order
1035 bit cleared to indicate the end of the byte stream. Note
1036 that there is nothing within the LEB128 representation that
1037 indicates whether an encoded number is signed or unsigned. The
1038 decoder must know what type of number to expect. 
1039 Table \refersec{tab:examplesofunsignedleb128encodings}
1040 gives some examples of unsigned LEB128 numbers and 
1041 Table \refersec{tab:examplesofsignedleb128encodings}
1042 gives some examples of signed LEB128 numbers.
1043
1044 Appendix \refersec{app:variablelengthdataencodingdecodinginformative} 
1045 gives algorithms for encoding and decoding these forms.
1046
1047
1048 \begin{centering}
1049 \setlength{\extrarowheight}{0.1cm}
1050 \begin{longtable}{l|l|l}
1051   \caption{Examples of unsigned LEB32 encodings} \label{tab:examplesofunsignedleb128encodings} \\
1052   \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
1053 \endfirsthead
1054   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
1055 \endhead
1056   \hline \emph{Continued on next page}
1057 \endfoot
1058   \hline
1059 \endlastfoot
1060 2&2& --- \\
1061 127&127& ---\\
1062 128& 0 + 0x80 & 1 \\
1063 129& 1 + 0x80 & 1 \\
1064 130& 2 + 0x80 & 1 \\
1065 12857& 57 + 0x80 & 100 \\
1066
1067 \end{longtable}
1068 \end{centering}
1069
1070
1071
1072 \begin{centering}
1073 \setlength{\extrarowheight}{0.1cm}
1074 \begin{longtable}{l|l|l}
1075   \caption{Examples of signed LEB32 encodings} \label{tab:examplesofsignedleb128encodings} \\
1076   \hline \\ \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
1077 \endfirsthead
1078   \bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
1079 \endhead
1080   \hline \emph{Continued on next page}
1081 \endfoot
1082   \hline
1083 \endlastfoot
1084 2&2& --- \\
1085 -2&0x7e& ---\\
1086 127& 127 + 0x80 & 0 \\
1087 -127& 1 + 0x80 & 0x7f \\
1088 128& 0 + 0x80 & 1 \\
1089 -128& 0 + 0x80 & 0x7f \\
1090 129& 1 + 0x80 & 1 \\
1091 -129& -x7f + 0x80 & 0xtc \\
1092
1093 \end{longtable}
1094 \end{centering}
1095
1096
1097
1098 \section{DWARF Expressions and Location Descriptions}
1099 \label{datarep:dwarfexpressionsandlocationdescriptions}
1100 \subsection{DWARF Expressions}
1101 \label{datarep:dwarfexpressions}
1102
1103 A DWARF expression is stored in a block of contiguous
1104 bytes. The bytes form a sequence of operations. Each operation
1105 is a 1\dash byte code that identifies that operation, followed by
1106 zero or more bytes of additional data. The encodings for the
1107 operations are described in 
1108 Table \refersec{tab:dwarfoperationencodings}. 
1109
1110 \begin{centering}
1111 \setlength{\extrarowheight}{0.1cm}
1112 \begin{longtable}{l|l|l|l}
1113   \caption{DWARF operation encodings} \label{tab:dwarfoperationencodings} \\
1114   \hline \\ & &\bfseries No. of  &\\ 
1115   \bfseries Operation&\bfseries Code &\bfseries Operands &\bfseries Notes\\ \hline
1116 \endfirsthead
1117    & &\bfseries No. of &\\ 
1118   \bfseries Operation&\bfseries Code &\bfseries  Operands &\bfseries Notes\\ \hline
1119 \endhead
1120   \hline \emph{Continued on next page}
1121 \endfoot
1122   \hline
1123 \endlastfoot
1124
1125 \livelink{chap:DWOPaddr}{DW\-\_OP\-\_addr}&0x03&1 & constant address  \\ 
1126 & & &(size target specific) \\
1127
1128 \livelink{chap:DWOPderef}{DW\-\_OP\-\_deref}&0x06&0 & \\
1129
1130
1131 \livelink{chap:DWOPconst1u}{DW\-\_OP\-\_const1u}&0x08&1&1\dash byte constant  \\
1132 \livelink{chap:DWOPconst1s}{DW\-\_OP\-\_const1s}&0x09&1&1\dash byte constant   \\
1133 \livelink{chap:DWOPconst2u}{DW\-\_OP\-\_const2u}&0x0a&1&2\dash byte constant   \\
1134 \livelink{chap:DWOPconst2s}{DW\-\_OP\-\_const2s}&0x0b&1&2\dash byte constant   \\
1135 \livelink{chap:DWOPconst4u}{DW\-\_OP\-\_const4u}&0x0c&1&4\dash byte constant    \\
1136 \livelink{chap:DWOPconst4s}{DW\-\_OP\-\_const4s}&0x0d&1&4\dash byte constant   \\
1137 \livelink{chap:DWOPconst8u}{DW\-\_OP\-\_const8u}&0x0e&1&8\dash byte constant   \\
1138 \livelink{chap:DWOPconst8s}{DW\-\_OP\-\_const8s}&0x0f&1&8\dash byte constant   \\
1139 \livelink{chap:DWOPconstu}{DW\-\_OP\-\_constu}&0x10&1&ULEB128 constant   \\
1140 \livelink{chap:DWOPconsts}{DW\-\_OP\-\_consts}&0x11&1&SLEB128 constant   \\
1141 \livelink{chap:DWOPdup}{DW\-\_OP\-\_dup}&0x12&0 &   \\
1142 \livelink{chap:DWOPdrop}{DW\-\_OP\-\_drop}&0x13&0  &   \\
1143 \livelink{chap:DWOPover}{DW\-\_OP\-\_over}&0x14&0 &   \\
1144 \livelink{chap:DWOPpick}{DW\-\_OP\-\_pick}&0x15&1&1\dash byte stack index   \\
1145 \livelink{chap:DWOPswap}{DW\-\_OP\-\_swap}&0x16&0 &   \\
1146 \livelink{chap:DWOProt}{DW\-\_OP\-\_rot}&0x17&0 &   \\
1147 \livelink{chap:DWOPxderef}{DW\-\_OP\-\_xderef}&0x18&0 &   \\
1148 \livelink{chap:DWOPabs}{DW\-\_OP\-\_abs}&0x19&0 &   \\
1149 \livelink{chap:DWOPand}{DW\-\_OP\-\_and}&0x1a&0 &   \\
1150 \livelink{chap:DWOPdiv}{DW\-\_OP\-\_div}&0x1b&0 &   \\
1151
1152
1153
1154 \livelink{chap:DWOPminus}{DW\-\_OP\-\_minus}&0x1c&0 & \\
1155 \livelink{chap:DWOPmod}{DW\-\_OP\-\_mod}&0x1d&0 & \\
1156 \livelink{chap:DWOPmul}{DW\-\_OP\-\_mul}&0x1e&0 & \\
1157 \livelink{chap:DWOPneg}{DW\-\_OP\-\_neg}&0x1f&0 & \\
1158 \livelink{chap:DWOPnot}{DW\-\_OP\-\_not}&0x20&0 & \\
1159 \livelink{chap:DWOPor}{DW\-\_OP\-\_or}&0x21&0 & \\
1160 \livelink{chap:DWOPplus}{DW\-\_OP\-\_plus}&0x22&0 & \\
1161 \livelink{chap:DWOPplusuconst}{DW\-\_OP\-\_plus\-\_uconst}&0x23&1&ULEB128 addend \\
1162 \livelink{chap:DWOPshl}{DW\-\_OP\-\_shl}&0x24&0 & \\
1163 \livelink{chap:DWOPshr}{DW\-\_OP\-\_shr}&0x25&0 & \\
1164 \livelink{chap:DWOPshra}{DW\-\_OP\-\_shra}&0x26&0 & \\
1165 \livelink{chap:DWOPxor}{DW\-\_OP\-\_xor}&0x27&0 & \\
1166 \livelink{chap:DWOPskip}{DW\-\_OP\-\_skip}&0x2f&1&signed 2\dash byte constant \\
1167 \livelink{chap:DWOPbra}{DW\-\_OP\-\_bra}&0x28&1 & signed 2\dash byte constant \\
1168 \livelink{chap:DWOPeq}{DW\-\_OP\-\_eq}&0x29&0 & \\
1169 \livelink{chap:DWOPge}{DW\-\_OP\-\_ge}&0x2a&0 & \\
1170 \livelink{chap:DWOPgt}{DW\-\_OP\-\_gt}&0x2b&0 & \\
1171 \livelink{chap:DWOPle}{DW\-\_OP\-\_le}&0x2c&0 & \\
1172 \livelink{chap:DWOPlt}{DW\-\_OP\-\_lt}&0x2d&0  & \\
1173 \livelink{chap:DWOPne}{DW\-\_OP\-\_ne}&0x2e&0 & \\ \hline
1174
1175
1176
1177 \livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0}&0x30 & 0 & \\
1178
1179 \livelink{chap:DWOPlit1}{DW\-\_OP\-\_lit1}&0x31 & 0& literals 0 .. 31 = \\
1180 \ldots & & & (\livelink{chap:DWOPlit0}{DW\-\_OP\-\_lit0} + literal) \\
1181 \livelink{chap:DWOPlit31}{DW\-\_OP\-\_lit31}&0x4f & 0 & \\ \hline
1182
1183 \livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} & 0x50 & 0 & \\
1184 \livelink{chap:DWOPreg1}{DW\-\_OP\-\_reg1} & 0x51 & 0&reg 0 .. 31 = \\
1185 \ldots & & & (\livelink{chap:DWOPreg0}{DW\-\_OP\-\_reg0} + regnum) \\
1186 \livelink{chap:DWOPreg31}{DW\-\_OP\-\_reg31} & 0x6f & 0 & \\ \hline
1187
1188 \livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} & 0x70 &1 & SLEB128 offset \\
1189 \livelink{chap:DWOPbreg1}{DW\-\_OP\-\_breg1} & 0x71 & 1 &base register 0 .. 31 = \\
1190 ... & &              &(\livelink{chap:DWOPbreg0}{DW\-\_OP\-\_breg0} + regnum) \\
1191 \livelink{chap:DWOPbreg31}{DW\-\_OP\-\_breg31} & 0x8f & 1 & \\ \hline
1192
1193 \livelink{chap:DWOPregx}{DW\-\_OP\-\_regx} & 0x90 &1&ULEB128 register \\
1194 \livelink{chap:DWOPfbreg}{DW\-\_OP\-\_fbreg} & 0x91&1&SLEB128 offset \\
1195 \livelink{chap:DWOPbregx}{DW\-\_OP\-\_bregx} & 0x92&2 &ULEB128 register followed \\
1196 & & & by SLEB128 offset \\
1197 \livelink{chap:DWOPpiece}{DW\-\_OP\-\_piece} & 0x93 &1& ULEB128 size of piece addressed \\
1198 \livelink{chap:DWOPderefsize}{DW\-\_OP\-\_deref\-\_size} & 0x94 &1& 1-byte size of data retrieved \\
1199 \livelink{chap:DWOPxderefsize}{DW\-\_OP\-\_xderef\-\_size} & 0x95&1&1-byte size of data retrieved \\
1200 \livelink{chap:DWOPnop}{DW\-\_OP\-\_nop} & 0x96 &0& \\
1201
1202
1203 \livelink{chap:DWOPpushobjectaddress}{DW\-\_OP\-\_push\-\_object\-\_address}&0x97&0 &  \\
1204 \livelink{chap:DWOPcall2}{DW\-\_OP\-\_call2}&0x98&1& 2\dash byte offset of DIE \\
1205 \livelink{chap:DWOPcall4}{DW\-\_OP\-\_call4}&0x99&1& 4\dash byte offset of DIE \\
1206 \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}&0x9a&1& 4\dash\  or 8\dash byte\\
1207      &&& offset of DIE \\
1208 \livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address}&0x9b &0& \\
1209 \livelink{chap:DWOPcallframecfa}{DW\-\_OP\-\_call\-\_frame\-\_cfa} &0x9c &0& \\
1210 \livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece}&0x9d &2&ULEB128 size followed by \\
1211 &&&ULEB128 offset\\
1212 \livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value}&0x9e &2&ULEB128 size followed by \\
1213 &&&block of that size\\
1214 \livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} &0x9f &0& \\
1215 \livetarg{chap:DWOPlouser}{DW\-\_OP\-\_lo\-\_user} &0xe0 && \\
1216 \livetarg{chap:DWOPhiuser}{DW\-\_OP\-\_hi\-\_user} &0xff && \\
1217
1218 \end{longtable}
1219 \end{centering}
1220
1221
1222 \subsection{Location Descriptions}
1223 \label{datarep:locationdescriptions}
1224
1225 A location description is used to compute the 
1226 location of a variable or other entity.
1227
1228 \subsection{Location Lists}
1229 \label{datarep:locationlists}
1230
1231 Each entry in a location list is either a location list entry,
1232 a base address selection entry, or an end of list entry.
1233
1234 A location list entry consists of two address offsets followed
1235 by a 2\dash byte length, followed by a block of contiguous bytes
1236 that contains a DWARF location description. The length
1237 specifies the number of bytes in that block. The two offsets
1238 are the same size as an address on the target machine.
1239
1240 A base address selection entry and an end of list entry each
1241 consist of two (constant or relocated) address offsets. The two
1242 offsets are the same size as an address on the target machine.
1243
1244 For a location list to be specified, the base address of
1245 the corresponding compilation unit must be defined 
1246 (see Section  \refersec{chap:normalandpartialcompilationunitentries}).
1247
1248 \section{Base Type Attribute Encodings}
1249 \label{datarep:basetypeattributeencodings}
1250
1251 The encodings of the constants used in the \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
1252 attribute are given in 
1253 Table \refersec{tab:basetypeencodingvalues}
1254
1255 \begin{centering}
1256 \setlength{\extrarowheight}{0.1cm}
1257 \begin{longtable}{l|c}
1258   \caption{Base type encoding values} \label{tab:basetypeencodingvalues} \\
1259   \hline \\ \bfseries Base type encoding code name&\bfseries Value \\ \hline
1260 \endfirsthead
1261   \bfseries Base type encoding code name&\bfseries Value\\ \hline
1262 \endhead
1263   \hline \emph{Continued on next page}
1264 \endfoot
1265   \hline
1266 \endlastfoot
1267
1268 \livelink{chap:DWATEaddress}{DW\-\_ATE\-\_address}&0x01 \\
1269 \livelink{chap:DWATEboolean}{DW\-\_ATE\-\_boolean}&0x02 \\
1270 \livelink{chap:DWATEcomplexfloat}{DW\-\_ATE\-\_complex\-\_float}&0x03 \\
1271 \livelink{chap:DWATEfloat}{DW\-\_ATE\-\_float}&0x04 \\
1272 \livelink{chap:DWATEsigned}{DW\-\_ATE\-\_signed}&0x05 \\
1273 \livelink{chap:DWATEsignedchar}{DW\-\_ATE\-\_signed\-\_char}&0x06 \\
1274 \livelink{chap:DWATEunsigned}{DW\-\_ATE\-\_unsigned}&0x07 \\
1275 \livelink{chap:DWATEunsignedchar}{DW\-\_ATE\-\_unsigned\-\_char}&0x08 \\
1276 \livelink{chap:DWATEimaginaryfloat}{DW\-\_ATE\-\_imaginary\-\_float}&0x09 \\
1277 \livelink{chap:DWATEpackeddecimal}{DW\-\_ATE\-\_packed\-\_decimal}&0x0a \\
1278 \livelink{chap:DWATEnumericstring}{DW\-\_ATE\-\_numeric\-\_string}&0x0b \\
1279 \livelink{chap:DWATEedited}{DW\-\_ATE\-\_edited}&0x0c \\
1280 \livelink{chap:DWATEsignedfixed}{DW\-\_ATE\-\_signed\-\_fixed}&0x0d \\
1281 \livelink{chap:DWATEunsignedfixed}{DW\-\_ATE\-\_unsigned\-\_fixed}&0x0e \\
1282 \livelink{chap:DWATEdecimalfloat}{DW\-\_ATE\-\_decimal\-\_float} & 0x0f \\
1283 \livelink{chap:DWATEUTF}{DW\-\_ATE\-\_UTF} \ddag & 0x10 \\
1284 \livetarg{chap:DWATElouser}{DW\-\_ATE\-\_lo\-\_user} & 0x80 \\
1285 \livetarg{chap:DWATEhiuser}{DW\-\_ATE\-\_hi\-\_user} & 0xff \\
1286
1287 \end{longtable}
1288 \ddag  Base type encoding new in DWARF Version 4
1289 \end{centering}
1290
1291
1292 The encodings of the constants used in the 
1293 \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign} attribute 
1294 are given in 
1295 Table \refersec{tab:decimalsignencodings}.
1296
1297
1298 \begin{centering}
1299 \setlength{\extrarowheight}{0.1cm}
1300 \begin{longtable}{l|c}
1301   \caption{Decimal sign encodings} \label{tab:decimalsignencodings} \\
1302   \hline \\ \bfseries Decimal sign code name&\bfseries Value \\ \hline
1303 \endfirsthead
1304   \bfseries Decimal sign code name&\bfseries Value\\ \hline
1305 \endhead
1306   \hline \emph{Continued on next page}
1307 \endfoot
1308   \hline
1309 \endlastfoot
1310
1311 DW\-\_DS\-\_unsigned & 0x01  \\
1312 DW\-\_DS\-\_leading\-\_overpunch & 0x02  \\
1313 DW\-\_DS\-\_trailing\-\_overpunch & 0x03  \\
1314 DW\-\_DS\-\_leading\-\_separate & 0x04  \\
1315 DW\-\_DS\-\_trailing\-\_separate & 0x05  \\
1316
1317 \end{longtable}
1318 \end{centering}
1319
1320 The encodings of the constants used in the 
1321 \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity} attribute are given in 
1322 Table \refersec{tab:endianityencodings}.
1323
1324 \begin{centering}
1325 \setlength{\extrarowheight}{0.1cm}
1326 \begin{longtable}{l|c}
1327   \caption{Endianity encodings} \label{tab:endianityencodings}\\
1328   \hline \\ \bfseries Endian code name&\bfseries Value \\ \hline
1329 \endfirsthead
1330   \bfseries Endian code name&\bfseries Value\\ \hline
1331 \endhead
1332   \hline \emph{Continued on next page}
1333 \endfoot
1334   \hline
1335 \endlastfoot
1336
1337 DW\-\_END\-\_default  & 0x00 \\
1338 DW\-\_END\-\_big & 0x01 \\
1339 DW\-\_END\-\_little & 0x02 \\
1340 DW\-\_END\-\_lo\-\_user & 0x40 \\
1341 DW\-\_END\-\_hi\-\_user & 0xff \\
1342
1343 \end{longtable}
1344 \end{centering}
1345
1346 \section{Accessibility Codes}
1347 \label{datarep:accessibilitycodes}
1348 The encodings of the constants used in the \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
1349 attribute are given in 
1350 Table \refersec{tab:accessibilityencodings}.
1351
1352 \begin{centering}
1353 \setlength{\extrarowheight}{0.1cm}
1354 \begin{longtable}{l|c}
1355   \caption{Accessibility encodings} \label{tab:accessibilityencodings}\\
1356   \hline \\ \bfseries Accessibility code name&\bfseries Value \\ \hline
1357 \endfirsthead
1358   \bfseries Accessibility code name&\bfseries Value\\ \hline
1359 \endhead
1360   \hline \emph{Continued on next page}
1361 \endfoot
1362   \hline
1363 \endlastfoot
1364
1365 \livelink{chap:DWACCESSpublic}{DW\-\_ACCESS\-\_public}&0x01  \\
1366 \livelink{chap:DWACCESSprotected}{DW\-\_ACCESS\-\_protected}&0x02 \\
1367 \livelink{chap:DWACCESSprivate}{DW\-\_ACCESS\-\_private}&0x03 \\
1368
1369 \end{longtable}
1370 \end{centering}
1371
1372
1373 \section{Visibility Codes}
1374 \label{datarep:visibilitycodes}
1375 The encodings of the constants used in the 
1376 \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility} attribute are given in 
1377 Table \refersec{tab:visibilityencodings}. 
1378
1379 \begin{centering}
1380 \setlength{\extrarowheight}{0.1cm}
1381 \begin{longtable}{l|c}
1382   \caption{Visibility encodings} \label{tab:visibilityencodings}\\
1383   \hline \\ \bfseries Visiibility code name&\bfseries Value \\ \hline
1384 \endfirsthead
1385   \bfseries Visibility code name&\bfseries Value\\ \hline
1386 \endhead
1387   \hline \emph{Continued on next page}
1388 \endfoot
1389   \hline
1390 \endlastfoot
1391
1392 DW\-\_VIS\-\_local&0x01 \\
1393 DW\-\_VIS\-\_exported&0x02 \\
1394 DW\-\_VIS\-\_qualified&0x03 \\
1395
1396 \end{longtable}
1397 \end{centering}
1398
1399 \section{Virtuality Codes}
1400 \label{datarep:vitualitycodes}
1401
1402 The encodings of the constants used in the 
1403 \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality} attribute are given in 
1404 Table \refersec{tab:virtualityencodings}.
1405
1406 \begin{centering}
1407 \setlength{\extrarowheight}{0.1cm}
1408 \begin{longtable}{l|c}
1409   \caption{Virtuality encodings} \label{tab:virtualityencodings}\\
1410   \hline \\ \bfseries Virtuality code name&\bfseries Value \\ \hline
1411 \endfirsthead
1412   \bfseries Virtuality code name&\bfseries Value\\ \hline
1413 \endhead
1414   \hline \emph{Continued on next page}
1415 \endfoot
1416   \hline
1417 \endlastfoot
1418
1419 DW\-\_VIRTUALITY\-\_none&0x00 \\
1420 DW\-\_VIRTUALITY\-\_virtual&0x01 \\
1421 DW\-\_VIRTUALITY\-\_pure\-\_virtual&0x02 \\
1422
1423
1424
1425 \end{longtable}
1426 \end{centering}
1427
1428 The value 
1429 DW\-\_VIRTUALITY\-\_none is equivalent to the absence of the 
1430 \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
1431 attribute.
1432
1433 \section{Source Languages}
1434 \label{datarep:sourcelanguages}
1435
1436 The encodings of the constants used in the \livelink{chap:DWATlanguage}{DW\-\_AT\-\_language}
1437 attribute are given in 
1438 Table \refersec{tab:languageencodings}.
1439 Names marked with
1440 % If we don't force a following space it looks odd
1441 \dag \  
1442 and their associated values are reserved, but the
1443 languages they represent are not well supported. 
1444 Table \refersec{tab:languageencodings}
1445 also shows the default lower bound, if any, assumed for
1446 an omitted \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound} attribute in the context of a
1447 \livelink{chap:DWTAGsubrangetype}{DW\-\_TAG\-\_subrange\-\_type} debugging information entry for each
1448 defined language.
1449
1450 \begin{centering}
1451 \setlength{\extrarowheight}{0.1cm}
1452 \begin{longtable}{l|c|c}
1453   \caption{Language encodings} \label{tab:languageencodings}\\
1454   \hline \\ \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound \\ \hline
1455 \endfirsthead
1456   \bfseries Language name&\bfseries Value &\bfseries Default Lower Bound\\ \hline
1457 \endhead
1458   \hline \emph{Continued on next page}
1459 \endfoot
1460   \hline
1461 \endlastfoot
1462
1463 DW\-\_LANG\-\_C89&0x0001&0       \\
1464 DW\-\_LANG\-\_C&0x0002&0       \\
1465 DW\-\_LANG\-\_Ada83 \dag &0x0003&1       \\
1466 DW\-\_LANG\-\_C\-\_plus\-\_plus &0x0004&0       \\
1467 DW\-\_LANG\-\_Cobol74 \dag &0x0005&1       \\
1468 DW\-\_LANG\-\_Cobol85 \dag &0x0006&1       \\
1469 DW\-\_LANG\-\_Fortran77&0x0007&1       \\
1470 DW\-\_LANG\-\_Fortran90&0x0008&1       \\
1471 DW\-\_LANG\-\_Pascal83&0x0009&1       \\
1472 DW\-\_LANG\-\_Modula2&0x000a&1       \\
1473 DW\-\_LANG\-\_Java&0x000b&0       \\
1474 DW\-\_LANG\-\_C99&0x000c&0       \\
1475 DW\-\_LANG\-\_Ada95 \dag &0x000d&1       \\
1476 DW\-\_LANG\-\_Fortran95 &0x000e&1       \\
1477 DW\-\_LANG\-\_PLI \dag &0x000f&1 \\
1478 DW\-\_LANG\-\_ObjC&0x0010&0 \\
1479 DW\-\_LANG\-\_ObjC\-\_plus\-\_plus&0x0011&0 \\
1480 DW\-\_LANG\-\_UPC&0x0012&0 \\
1481 DW\-\_LANG\-\_D&0x0013&0 \\
1482 DW\-\_LANG\-\_Python \dag &0x0014&0 \\
1483 DW\-\_LANG\-\_lo\-\_user&0x8000 & \\
1484 DW\-\_LANG\-\_hi\-\_user&0xffff & \\
1485
1486 \end{longtable}
1487 \dag See text
1488 \end{centering}
1489
1490 \section{Address Class Encodings}
1491 \label{datarep:addressclassencodings}
1492
1493 The value of the common address class encoding 
1494 \livelink{chap:DWADDRnone}{DW\-\_ADDR\-\_none} is 0.
1495
1496
1497 \section{Identifier Case}
1498 \label{datarep:identifiercase}
1499
1500 The encodings of the constants used in the 
1501 \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} attribute are given in 
1502 Table \refersec{tab:identifiercaseencodings}.
1503
1504 \begin{centering}
1505 \setlength{\extrarowheight}{0.1cm}
1506 \begin{longtable}{l|c}
1507   \caption{Identifier case encodings} \label{tab:identifiercaseencodings}\\
1508   \hline \\ \bfseries Identifier case name&\bfseries Value \\ \hline
1509 \endfirsthead
1510   \bfseries Identifier case name&\bfseries Value\\ \hline
1511 \endhead
1512   \hline \emph{Continued on next page}
1513 \endfoot
1514   \hline
1515 \endlastfoot
1516 DW\-\_ID\-\_case\-\_sensitive&0x00     \\
1517 DW\-\_ID\-\_up\-\_case&0x01     \\
1518 DW\-\_ID\-\_down\-\_case&0x02     \\
1519 DW\-\_ID\-\_case\-\_insensitive&0x03     \\
1520 \end{longtable}
1521 \end{centering}
1522
1523 \section{Calling Convention Encodings}
1524 \label{datarep:callingconventionencodings}
1525 The encodings of the constants used in the 
1526 \livelink{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention} attribute are given in
1527 Table \refersec{tab:callingconventionencodings}.
1528
1529 \begin{centering}
1530 \setlength{\extrarowheight}{0.1cm}
1531 \begin{longtable}{l|c}
1532   \caption{Calling convention encodings} \label{tab:callingconventionencodings}\\
1533   \hline \\ \bfseries Calling Convention name&\bfseries Value \\ \hline
1534 \endfirsthead
1535   \bfseries Calling Convention name&\bfseries Value\\ \hline
1536 \endhead
1537   \hline \emph{Continued on next page}
1538 \endfoot
1539   \hline
1540 \endlastfoot
1541
1542 DW\-\_CC\-\_normal&0x01     \\
1543 DW\-\_CC\-\_program&0x02     \\
1544 DW\-\_CC\-\_nocall&0x03     \\
1545 DW\-\_CC\-\_lo\-\_user&0x40     \\
1546 DW\-\_CC\-\_hi\-\_user&0xff     \\
1547
1548 \end{longtable}
1549 \end{centering}
1550
1551 \section{Inline Codes}
1552 \label{datarep:inlinecodes}
1553
1554 The encodings of the constants used in the 
1555 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
1556 Table \refersec{tab:inlineencodings}.
1557
1558 \begin{centering}
1559 \setlength{\extrarowheight}{0.1cm}
1560 \begin{longtable}{l|c}
1561   \caption{Inline encodings} \label{tab:inlineencodings}\\
1562   \hline \\ \bfseries Iline Code name&\bfseries Value \\ \hline
1563 \endfirsthead
1564   \bfseries Iline Code name&\bfseries Value\\ \hline
1565 \endhead
1566   \hline \emph{Continued on next page}
1567 \endfoot
1568   \hline
1569 \endlastfoot
1570
1571 DW\-\_INL\-\_not\-\_inlined&0x00      \\
1572 DW\-\_INL\-\_inlined&0x01      \\
1573 DW\-\_INL\-\_declared\-\_not\-\_inlined&0x02      \\
1574 DW\-\_INL\-\_declared\-\_inlined&0x03      \\
1575
1576 \end{longtable}
1577 \end{centering}
1578
1579 % this clearpage is ugly, but the following table came
1580 % out oddly without it.
1581 \clearpage
1582 \section{Array Ordering}
1583 \label{datarep:arrayordering}
1584
1585 The encodings of the constants used in the 
1586 \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering} attribute are given in 
1587 Table \refersec{tab:orderingencodings}.
1588
1589 \begin{centering}
1590 \setlength{\extrarowheight}{0.1cm}
1591 \begin{longtable}{l|c}
1592   \caption{Ordering encodings} \label{tab:orderingencodings}\\
1593   \hline \\ \bfseries Ordering name&\bfseries Value \\ \hline
1594 \endfirsthead
1595   \bfseries Ordering name&\bfseries Value\\ \hline
1596 \endhead
1597   \hline \emph{Continued on next page}
1598 \endfoot
1599   \hline
1600 \endlastfoot
1601
1602 DW\-\_ORD\-\_row\-\_major&0x00  \\
1603 DW\-\_ORD\-\_col\-\_major&0x01  \\
1604
1605 \end{longtable}
1606 \end{centering}
1607
1608
1609 \section{Discriminant Lists}
1610 \label{datarep:discriminantlists}
1611
1612 The descriptors used in the 
1613 \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list} attribute are 
1614 encoded as 1\dash byte constants. The
1615 defined values are given in 
1616 Table \refersec{tab:discriminantdescriptorencodings}.
1617
1618 % Odd that the 'Name' field captalized here, it is not caps elsewhere.
1619 \begin{centering}
1620 \setlength{\extrarowheight}{0.1cm}
1621 \begin{longtable}{l|c}
1622   \caption{Discriminant descriptor encodings} \label{tab:discriminantdescriptorencodings}\\
1623   \hline \\ \bfseries Descriptor Name&\bfseries Value \\ \hline
1624 \endfirsthead
1625   \bfseries Descriptor Name&\bfseries Value\\ \hline
1626 \endhead
1627   \hline \emph{Continued on next page}
1628 \endfoot
1629   \hline
1630 \endlastfoot
1631
1632 DW\-\_DSC\-\_label&0x00 \\
1633 DW\-\_DSC\-\_range&0x01 \\
1634
1635 \end{longtable}
1636 \end{centering}
1637
1638 \section{Name Lookup Tables}
1639 \label{datarep:namelookuptables}
1640
1641 Each set of entries in the table of global names contained
1642 in the .debug\_pubnames and .debug\_pubtypes sections begins
1643 with a header consisting of:
1644
1645
1646 \begin{enumerate}[1.]
1647 \item unit\_length (initial length) \\
1648 A 4\dash byte or 12\dash byte unsigned integer representing the length
1649 of the .debug\_info contribution for that compilation unit,
1650 not including the length field itself. In the 32\dash bit DWARF
1651 format, this is a 4\dash byte unsigned integer (which must be less
1652 than 0xfffffff0); in the 64\dash bit DWARF format, this consists
1653 of the 4\dash byte value 0xffffffff followed by an 8\dash byte unsigned
1654 integer that gives the actual length
1655 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
1656
1657 \item  version (uhalf)
1658 A 2\dash byte unsigned integer representing the version of the
1659 DWARF information for the compilation unit
1660 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}).
1661 The value in this field is 4.
1662
1663 % Some say unsigned offset this just says offset: FIXME
1664 \item debug\_info\_offset (section offset) \\
1665 A 4\dash byte or 8\dash byte offset into the .debug\_info
1666 section of the compilation unit header.
1667 In
1668 the 32\dash bit DWARF format, this is a 4\dash byte unsigned offset;
1669 in the 64\dash bit DWARF format, this is an 8\dash byte unsigned offsets
1670 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
1671
1672 \item  debug\_info\_length (section length) \\
1673 A 4\dash byte or 8\dash byte length containing the size in bytes of the
1674 contents of the .debug\_info section generated to represent
1675 this compilation unit. In the 32\dash bit DWARF format, this is
1676 a 4\dash byte unsigned length; in the 64\dash bit DWARF format, this
1677 is an 8-byte unsigned length 
1678 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
1679
1680
1681 \end{enumerate}
1682
1683 This header is followed by a series of tuples. Each tuple
1684 consists of a 4\dash byte or 8\dash byte offset followed by a string
1685 of non\dash null bytes terminated by one null byte. 
1686 In the 32\dash bit
1687 DWARF format, this is a 4\dash byte offset; in the 64\dash bit DWARF
1688 format, it is an 8\dash byte offset. 
1689 Each set is terminated by an
1690 offset containing the value 0.
1691
1692
1693 \section{Address Range Table}
1694 \label{datarep:addrssrangetable}
1695
1696 Each set of entries in the table of address ranges contained
1697 in the .debug\_aranges section begins with a header containing:
1698
1699 \begin{enumerate}[1.]
1700 % FIXME The unit length text is not fully consistent across
1701 % these tables.
1702
1703 \item unit\_length (initial length) \\
1704 A 4-byte or 12-byte length containing the length of the
1705 set of entries for this compilation unit, not including the
1706 length field itself. In the 32-bit DWARF format, this is a
1707 4-byte unsigned integer (which must be less than 0xfffffff0);
1708 in the 64-bit DWARF format, this consists of the 4-byte value
1709 0xffffffff followed by an 8-byte unsigned integer that gives
1710 the actual length 
1711 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
1712
1713 \item version (uhalf) \\
1714 A 2\dash byte version identifier containing the value 2 
1715 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
1716
1717 \item debug\_info\_offset (section offset) \\
1718 A 4\dash byte or 8\dash byte offset into the .debug\_info section of
1719 the compilation unit header. In the 32\dash bit DWARF format,
1720 this is a 4\dash byte unsigned offset; in the 64\dash bit DWARF format,
1721 this is an 8\dash byte unsigned offset 
1722 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
1723
1724 \item address\_size (ubyte) \\
1725 A 1\dash byte unsigned integer containing the size in bytes of an
1726 address (or the offset portion of an address for segmented
1727 addressing) on the target system.
1728
1729 \item segment\_size (ubyte) \\
1730 A 1\dash byte unsigned integer containing the size in bytes of a
1731 segment selector on the target system.
1732
1733 \end{enumerate}
1734
1735 This header is followed by a series of tuples. Each tuple
1736 consists of a segment, an address and a length. 
1737 The segment
1738 size is given by the segment\_size field of the header; the
1739 address and length size are each given by the address\_size
1740 field of the header. 
1741 The first tuple following the header in
1742 each set begins at an offset that is a multiple of the size
1743 of a single tuple (that is, the size of a segment selector
1744 plus twice the size of an address). 
1745 The header is padded, if
1746 necessary, to that boundary. Each set of tuples is terminated
1747 by a 0 for the segment, a 0 for the address and 0 for the
1748 length. If the segment\_size field in the header is zero,
1749 the segment selectors are omitted from all tuples, including
1750 the terminating tuple.
1751
1752
1753 \section{Line Number Information}
1754 \label{datarep:linenumberinformation}
1755
1756 The version number in the line number program header is 4
1757 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
1758
1759 The boolean values ``true'' and ``false'' 
1760 used by the line number information program are encoded
1761 as a single byte containing the value 0 
1762 for ``false,'' and a non-zero value for ``true.''
1763
1764 The encodings for the standard opcodes are given in 
1765 Table \refersec{tab:linenumberstandardopcodeencodings}.
1766
1767 % Odd that the 'Name' field captalized here, it is not caps elsewhere.
1768 \begin{centering}
1769 \setlength{\extrarowheight}{0.1cm}
1770 \begin{longtable}{l|c}
1771   \caption{Line Number Standard Opcode encodings} \label{tab:linenumberstandardopcodeencodings}\\
1772   \hline \\ \bfseries Opcode Name&\bfseries Value \\ \hline
1773 \endfirsthead
1774   \bfseries Opcode Name&\bfseries Value\\ \hline
1775 \endhead
1776   \hline \emph{Continued on next page}
1777 \endfoot
1778   \hline
1779 \endlastfoot
1780
1781 DW\-\_LNS\-\_copy&0x01 \\
1782 DW\-\_LNS\-\_advance\-\_pc&0x02 \\
1783 DW\-\_LNS\-\_advance\-\_line&0x03 \\
1784 DW\-\_LNS\-\_set\-\_file&0x04 \\
1785 DW\-\_LNS\-\_set\-\_column&0x05 \\
1786 DW\-\_LNS\-\_negate\-\_stmt&0x06 \\
1787 DW\-\_LNS\-\_set\-\_basic\-\_block&0x07 \\
1788 DW\-\_LNS\-\_const\-\_add\-\_pc*0x08 \\
1789 DW\-\_LNS\-\_fixed\-\_advance\-\_pc&0x09 \\
1790 DW\-\_LNS\-\_set\-\_prologue\-\_end&0x0a \\
1791 DW\-\_LNS\-\_set\-\_epilogue\-\_begin&0x0b \\
1792 DW\-\_LNS\-\_set\-\_isa&0x0c \\
1793
1794 \end{longtable}
1795 \end{centering}
1796
1797
1798 The encodings for the extended opcodes are given in 
1799 Table \refersec{tab:linenumberextendedopcodeencodings}.
1800
1801 \begin{centering}
1802 \setlength{\extrarowheight}{0.1cm}
1803 \begin{longtable}{l|c}
1804   \caption{Line Number Extended Opcode encodings} \label{tab:linenumberextendedopcodeencodings}\\
1805   \hline \\ \bfseries Opcode Name&\bfseries Value \\ \hline
1806 \endfirsthead
1807   \bfseries Opcode Name&\bfseries Value\\ \hline
1808 \endhead
1809   \hline \emph{Continued on next page}
1810 \endfoot
1811   \hline
1812 \endlastfoot
1813
1814 DW\-\_LNE\-\_end\-\_sequence&0x01    \\
1815 DW\-\_LNE\-\_set\-\_address&0x02\\
1816 DW\-\_LNE\-\_define\-\_file&0x03\\
1817 DW\-\_LNE\-\_set\-\_discriminator \ddag &0x04   \\
1818 DW\-\_LNE\-\_lo\-\_user&0x80   \\
1819 DW\-\_LNE\-\_hi\-\_user&0xff   \\
1820
1821 \end{longtable}
1822 \ddag Extended opcode new in DWARF Version 4.
1823 \end{centering}
1824
1825 \section{Macro Information}
1826 \label{datarep:macroinformation}
1827
1828 The source line numbers and source file indices encoded in the
1829 macro information section are represented as unsigned LEB128
1830 numbers as are the constants in a DW\-\_MACINFO\-\_vendor\-\_ext entry.
1831
1832 The macinfo type is encoded as a single byte. 
1833 The encodings are given in 
1834 Table \refersec{tab:macinfotypeencodings}.
1835
1836
1837 \begin{centering}
1838 \setlength{\extrarowheight}{0.1cm}
1839 \begin{longtable}{l|c}
1840   \caption{Macinfo Type Encodings} \label{tab:macinfotypeencodings}\\
1841   \hline \\ \bfseries Macinfo Type Name&\bfseries Value \\ \hline
1842 \endfirsthead
1843   \bfseries Macinfo Type Name&\bfseries Value\\ \hline
1844 \endhead
1845   \hline \emph{Continued on next page}
1846 \endfoot
1847   \hline
1848 \endlastfoot
1849
1850 DW\-\_MACINFO\-\_define&0x01 \\
1851 DW\-\_MACINFO\-\_undef&0x02 \\
1852 DW\-\_MACINFO\-\_start\-\_file&0x03 \\
1853 DW\-\_MACINFO\-\_end\-\_file&0x04 \\
1854 DW\-\_MACINFO\-\_vendor\-\_ext&0xff \\
1855
1856 \end{longtable}
1857 \end{centering}
1858
1859 \section{Call Frame Information}
1860 \label{datarep:callframeinformation}
1861
1862 In the 32\dash bit DWARF format, the value of the CIE id in the
1863 CIE header is 0xffffffff; in the 64\dash bit DWARF format, the
1864 value is 0xffffffffffffffff.
1865
1866 The value of the CIE version number is 4 
1867 (see Appendix \refersec{app:dwarfsectionversionnumbersinformative}). 
1868
1869 Call frame instructions are encoded in one or more bytes. The
1870 primary opcode is encoded in the high order two bits of
1871 the first byte (that is, opcode = byte >> 6). An operand
1872 or extended opcode may be encoded in the low order 6
1873 bits. Additional operands are encoded in subsequent bytes.
1874 The instructions and their encodings are presented in
1875 Table \refersec{tab:callframeinstructionencodings}.
1876
1877 \begin{centering}
1878 \setlength{\extrarowheight}{0.1cm}
1879 \begin{longtable}{l|c|c|l|l}
1880   \caption{Call frame instruction encodings} \label{tab:callframeinstructionencodings} \\
1881   \hline \\ &\bfseries High 2 &\bfseries Low 6 &  & \\
1882   \bfseries Instruction&\bfseries Bits &\bfseries Bits &\bfseries Operand 1 &\bfseries Operand 2\\ \hline
1883 \endfirsthead
1884    & \bfseries High 2 &\bfseries Low 6 &  &\\
1885   \bfseries Instruction&\bfseries Bits &\bfseries Bits &\bfseries Operand 1 &\bfseries Operand 2\\ \hline
1886 \endhead
1887   \hline \emph{Continued on next page}
1888 \endfoot
1889   \hline
1890 \endlastfoot
1891
1892 DW\-\_CFA\-\_advance\-\_loc&0x1&delta & \\
1893 DW\-\_CFA\-\_offset&0x2&register&ULEB128 offset \\
1894 DW\-\_CFA\-\_restore&0x3&register & & \\
1895 DW\-\_CFA\-\_nop&0&0 & & \\
1896 DW\-\_CFA\-\_set\-\_loc&0&0x01&address & \\
1897 DW\-\_CFA\-\_advance\-\_loc1&0&0x02&1\dash byte delta & \\
1898 DW\-\_CFA\-\_advance\-\_loc2&0&0x03&2\dash byte delta & \\
1899 DW\-\_CFA\-\_advance\-\_loc4&0&0x04&4\dash byte delta & \\
1900 DW\-\_CFA\-\_offset\-\_extended&0&0x05&ULEB128 register&ULEB128 offset \\
1901 DW\-\_CFA\-\_restore\-\_extended&0&0x06&ULEB128 register & \\
1902 DW\-\_CFA\-\_undefined&0&0x07&ULEB128 register & \\
1903 DW\-\_CFA\-\_same\-\_value&0&0x08 &ULEB128 register & \\
1904 DW\-\_CFA\-\_register&0&0x09&ULEB128 register &ULEB128 offset \\
1905 DW\-\_CFA\-\_remember\-\_state&0&0x0a & & \\
1906 DW\-\_CFA\-\_restore\-\_state&0&0x0b & & \\
1907 DW\-\_CFA\-\_def\-\_cfa&0&0x0c &ULEB128 register&ULEB128 offset \\
1908 DW\-\_CFA\-\_def\-\_cfa\-\_register&0&0x0d&ULEB128 register & \\
1909 DW\-\_CFA\-\_def\-\_cfa\-\_offset&0&0x0e &ULEB128 offset & \\
1910 DW\-\_CFA\-\_def\-\_cfa\-\_expression&0&0x0f &BLOCK  \\
1911 DW\-\_CFA\-\_expression&0&0x10&ULEB128 register & BLOCK \\
1912
1913 DW\-\_CFA\-\_offset\-\_extended\-\_sf&0&0x11&ULEB128 register&SLEB128 offset \\
1914 DW\-\_CFA\-\_def\-\_cfa\-\_sf&0&0x12&ULEB128 register&SLEB128 offset \\
1915 DW\-\_CFA\-\_def\-\_cfa\-\_offset\-\_sf&0&0x13&SLEB128 offset & \\
1916 DW\-\_CFA\-\_val\-\_offset&0&0x14&ULEB128&ULEB128 \\
1917 DW\-\_CFA\-\_val\-\_offset\-\_sf&0&0x15&ULEB128&SLEB128 \\
1918 DW\-\_CFA\-\_val\-\_expression&0&0x16&ULEB128&BLOCK  \\
1919 DW\-\_CFA\-\_lo\-\_user&0&0x1c   & & \\
1920 DW\-\_CFA\-\_hi\-\_user&0&0x3f & & \\
1921 \end{longtable}
1922 \end{centering}
1923
1924 \section{Non-continguous Address Ranges}
1925 \label{datarep:noncontiguousaddressranges}
1926
1927 Each entry in a range list 
1928 (see Section \refersec{chap:noncontiguousaddressranges})
1929 is either a
1930 range list entry, a base address selection entry, or an end
1931 of list entry.
1932
1933 A range list entry consists of two relative addresses. The
1934 addresses are the same size as addresses on the target machine.
1935
1936 A base address selection entry and an end of list entry each
1937 consist of two (constant or relocated) addresses. The two
1938 addresses are the same size as addresses on the target machine.
1939
1940 For a range list to be specified, the base address of the
1941 corresponding compilation unit must be defined 
1942 (see Section \refersec{chap:normalandpartialcompilationunitentries}).
1943
1944
1945 \section{Dependencies and Constraints}
1946 \label{datarep:dependenciesandconstraints}
1947
1948 The debugging information in this format is intended to
1949 exist in the .debug\_abbrev, .debug\_aranges, .debug\_frame,
1950 .debug\_info, .debug\_line, .debug\_loc, .debug\_macinfo,
1951 .debug\_pubnames, .debug\_pubtypes, .debug\_ranges, .debug\_str
1952 and .debug\_types sections of an object file, or equivalent
1953 separate file or database. The information is not 
1954 word\dash aligned. Consequently: •
1955
1956 \begin{itemize}
1957 \item For the 32\dash bit DWARF format and a target architecture with
1958 32\dash bit addresses, an assembler or compiler must provide a way
1959 to produce 2\dash byte and 4\dash byte quantities without alignment
1960 restrictions, and the linker must be able to relocate a
1961 4\dash byte address or section offset that occurs at an arbitrary
1962 alignment.
1963
1964 \item For the 32\dash bit DWARF format and a target architecture with
1965 64\dash bit addresses, an assembler or compiler must provide a
1966 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
1967 alignment restrictions, and the linker must be able to relocate
1968 an 8\dash byte address or 4\dash byte section offset that occurs at an
1969 arbitrary alignment.
1970
1971 \item For the 64\dash bit DWARF format and a target architecture with
1972 32\dash bit addresses, an assembler or compiler must provide a
1973 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
1974 alignment restrictions, and the linker must be able to relocate
1975 a 4\dash byte address or 8\dash byte section offset that occurs at an
1976 arbitrary alignment.
1977
1978 \textit{It is expected that this will be required only for very large
1979 32\dash bit programs or by those architectures which support
1980 a mix of 32\dash bit and 64\dash bit code and data within the same
1981 executable object.}
1982
1983 \item For the 64\dash bit DWARF format and a target architecture with
1984 64\dash bit addresses, an assembler or compiler must provide a
1985 way to produce 2\dash byte, 4\dash byte and 8\dash byte quantities without
1986 alignment restrictions, and the linker must be able to
1987 relocate an 8\dash byte address or section offset that occurs at
1988 an arbitrary alignment.
1989 \end{itemize}
1990
1991 \section{Integer Representation Names}
1992 \label{datarep:integerrepresentationnames}
1993
1994 The sizes of the integers used in the lookup by name, lookup
1995 by address, line number and call frame information sections
1996 are given in
1997 Table 41 \refersec{tab:integerrepresentationnames}.
1998
1999 \begin{centering}
2000 \setlength{\extrarowheight}{0.1cm}
2001 \begin{longtable}{c|l}
2002   \caption{Integer Representation Names} \label{tab:integerrepresentationnames}\\
2003   \hline \\ \bfseries Representation Name&\bfseries Representation \\ \hline
2004 \endfirsthead
2005   \bfseries Representation Name&\bfseries Representation\\ \hline
2006 \endhead
2007   \hline \emph{Continued on next page}
2008 \endfoot
2009   \hline
2010 \endlastfoot
2011
2012 sbyte&  signed, 1\dash byte integer \\
2013 ubyte&unsigned, 1\dash byte integer \\
2014 uhalf&unsigned, 2\dash byte integer \\
2015 uword&unsigned, 4\dash byte integer \\
2016
2017 \end{longtable}
2018 \end{centering}
2019
2020 \section{Type Signature Computation}
2021 \label{datarep:typesignaturecomputation}
2022
2023 A type signature is computed only by the DWARF producer;
2024 it is used by a DWARF consumer to resolve type references to
2025 the type definitions that are contained in type units.
2026
2027 The type signature for a type T0 is formed from the MD5
2028 hash of a flattened description of the type. The flattened
2029 description of the type is a byte sequence derived from the
2030 DWARF encoding of the type as follows:
2031
2032 \begin{enumerate}[1.]
2033
2034 \item Start with an empty sequence S and a list V of visited
2035 types, where V is initialized to a list containing the type
2036 T0 as its single element. Elements in V are indexed from 1,
2037 so that V[1] is T0.
2038
2039 \item If the debugging information entry represents a type that
2040 is nested inside another type or a namespace, append to S
2041 the type’s context as follows: For each surrounding type
2042 or namespace, beginning with the outermost such construct,
2043 append the letter 'C', the DWARF tag of the construct, and
2044 the name (taken from the \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute) of the type
2045 or namespace (including its trailing null byte).
2046
2047 \item  Append to S the letter 'D', followed by the DWARF tag of
2048 the debugging information entry.
2049
2050 \item For each of the following attributes that are present in
2051 the debugging information entry, in the order listed below,
2052 append to S a marker letter (see below), the DWARF attribute
2053 code, and the attribute value.
2054
2055 \begin{itemize}
2056 \item \livelink{chap:DWATname}{DW\-\_AT\-\_name}
2057 \item \livelink{chap:DWATaccessibility}{DW\-\_AT\-\_accessibility}
2058 \item \livelink{chap:DWATaddressclass}{DW\-\_AT\-\_address\-\_class}
2059 \item \livelink{chap:DWATallocated}{DW\-\_AT\-\_allocated}
2060 \item \livelink{chap:DWATartificial}{DW\-\_AT\-\_artificial}
2061 \item \livelink{chap:DWATassociated}{DW\-\_AT\-\_associated}
2062 \item \livelink{chap:DWATbinaryscale}{DW\-\_AT\-\_binary\-\_scale}
2063 \item \livelink{chap:DWATbitoffset}{DW\-\_AT\-\_bit\-\_offset}
2064 \item \livelink{chap:DWATbitsize}{DW\-\_AT\-\_bit\-\_size}
2065 \item \livelink{chap:DWATbitstride}{DW\-\_AT\-\_bit\-\_stride}
2066 \item \livelink{chap:DWATbytesize}{DW\-\_AT\-\_byte\-\_size}
2067 \item \livelink{chap:DWATbytestride}{DW\-\_AT\-\_byte\-\_stride}
2068 \item \livelink{chap:DWATconstexpr}{DW\-\_AT\-\_const\-\_expr}
2069 \item \livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
2070 \item \livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}
2071 \item \livelink{chap:DWATcount}{DW\-\_AT\-\_count}
2072 \item \livelink{chap:DWATdatabitoffset}{DW\-\_AT\-\_data\-\_bit\-\_offset}
2073 \item \livelink{chap:DWATdatalocation}{DW\-\_AT\-\_data\-\_location}
2074 \item \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location}
2075 \item \livelink{chap:DWATdecimalscale}{DW\-\_AT\-\_decimal\-\_scale}
2076 \item \livelink{chap:DWATdecimalsign}{DW\-\_AT\-\_decimal\-\_sign}
2077 \item \livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}
2078 \item \livelink{chap:DWATdigitcount}{DW\-\_AT\-\_digit\-\_count}
2079 \item \livelink{chap:DWATdiscr}{DW\-\_AT\-\_discr}
2080 \item \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
2081 \item \livelink{chap:DWATdiscrvalue}{DW\-\_AT\-\_discr\-\_value}
2082 \item \livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}
2083 \item \livelink{chap:DWATenumclass}{DW\-\_AT\-\_enum\-\_class}
2084 \item \livelink{chap:DWATendianity}{DW\-\_AT\-\_endianity}
2085 \item \livelink{chap:DWATexplicit}{DW\-\_AT\-\_explicit}
2086 \item \livelink{chap:DWATisoptional}{DW\-\_AT\-\_is\-\_optional}
2087 \item \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}
2088 \item \livelink{chap:DWATlowerbound}{DW\-\_AT\-\_lower\-\_bound}
2089 \item \livelink{chap:DWATmutable}{DW\-\_AT\-\_mutable}
2090 \item \livelink{chap:DWATordering}{DW\-\_AT\-\_ordering}
2091 \item \livelink{chap:DWATpicturestring}{DW\-\_AT\-\_picture\-\_string}
2092 \item \livelink{chap:DWATprototyped}{DW\-\_AT\-\_prototyped}
2093 \item \livelink{chap:DWATsmall}{DW\-\_AT\-\_small}
2094 \item \livelink{chap:DWATsegment}{DW\-\_AT\-\_segment}
2095 \item \livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}
2096 \item \livelink{chap:DWATthreadsscaled}{DW\-\_AT\-\_threads\-\_scaled}
2097 \item \livelink{chap:DWATupperbound}{DW\-\_AT\-\_upper\-\_bound}
2098 \item \livelink{chap:DWATuselocation}{DW\-\_AT\-\_use\-\_location}
2099 \item \livelink{chap:DWATuseUTF8}{DW\-\_AT\-\_use\-\_UTF8}
2100 \item \livelink{chap:DWATvariableparameter}{DW\-\_AT\-\_variable\-\_parameter}
2101 \item \livelink{chap:DWATvirtuality}{DW\-\_AT\-\_virtuality}
2102 \item \livelink{chap:DWATvisibility}{DW\-\_AT\-\_visibility}
2103 \item \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
2104 \end{itemize}
2105
2106 Note that except for the initial \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
2107 attributes are appended in order according to the alphabetical
2108 spelling of their identifier.
2109
2110 If an implementation defines any vendor-specific attributes,
2111 any such attributes that are essential to the definition of
2112 the type should also be included at the end of the above list,
2113 in their own alphabetical suborder.
2114
2115 An attribute that refers to another type entry T is processed
2116 as follows: (a) If T is in the list V at some V[x], use the
2117 letter 'R' as the marker and use the unsigned LEB128 encoding
2118 of x as the attribute value; otherwise, (b) use the letter 'T'
2119 as the marker, process the type T recursively by performing
2120 Steps 2 through 7, and use the result as the attribute value.
2121
2122 Other attribute values use the letter 'A' as the marker, and
2123 the value consists of the form code (encoded as an unsigned
2124 LEB128 value) followed by the encoding of the value according
2125 to the form code. To ensure reproducibility of the signature,
2126 the set of forms used in the signature computation is limited
2127 to the following: \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}, 
2128 \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}, 
2129 \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string},
2130 and \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}.
2131
2132 \item If the tag in Step 3 is one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
2133 \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}, 
2134 \livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
2135 \livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, 
2136 or \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, and the referenced
2137 type (via the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
2138 \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) has a
2139 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to S the letter 'N', the DWARF
2140 attribute code (\livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
2141 \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend}), the context of
2142 the type (according to the method in Step 2), the letter 'E',
2143 and the name of the type. For \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, if the referenced
2144 entry is a \livelink{chap:DWTAGsubprogram}{DW\-\_TAG\-\_subprogram}, the context is omitted and the
2145 name to be used is the ABI-specific name of the subprogram
2146 (e.g., the mangled linker name).
2147
2148
2149 \item 6.If the tag in Step 3 is not one of \livelink{chap:DWTAGpointertype}{DW\-\_TAG\-\_pointer\-\_type},
2150 \livelink{chap:DWTAGreferencetype}{DW\-\_TAG\-\_reference\-\_type}, 
2151 \livelink{chap:DWTAGrvaluereferencetype}{DW\-\_TAG\-\_rvalue\-\_reference\-\_type},
2152 \livelink{chap:DWTAGptrtomembertype}{DW\-\_TAG\-\_ptr\-\_to\-\_member\-\_type}, or 
2153 \livelink{chap:DWTAGfriend}{DW\-\_TAG\-\_friend}, but has
2154 a \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute, or if the referenced type (via
2155 the \livelink{chap:DWATtype}{DW\-\_AT\-\_type} or 
2156 \livelink{chap:DWATfriend}{DW\-\_AT\-\_friend} attribute) does not have a
2157 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, the attribute is processed according to
2158 the method in Step 4 for an attribute that refers to another
2159 type entry.
2160
2161
2162 \item Visit each child C of the debugging information
2163 entry as follows: If C is a nested type entry or a member
2164 function entry, and has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute, append to
2165 S the letter 'S', the tag of C, and its name; otherwise,
2166 process C recursively by performing Steps 3 through 7,
2167 appending the result to S. Following the last child (or if
2168 there are no children), append a zero byte.
2169 \end{enumerate}
2170
2171
2172
2173 For the purposes of this algorithm, if a debugging information
2174 entry S has a 
2175 \livelink{chap:DWATspecification}{DW\-\_AT\-\_specification} 
2176 attribute that refers to
2177 another entry D (which has a 
2178 \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} 
2179 attribute),
2180 then S inherits the attributes and children of D, and S is
2181 processed as if those attributes and children were present in
2182 the entry S. Exception: if a particular attribute is found in
2183 both S and D, the attribute in S is used and the corresponding
2184 one in D is ignored.
2185
2186 DWARF tag and attribute codes are appended to the sequence
2187 as unsigned LEB128 values, using the values defined earlier
2188 in this chapter.
2189
2190 \textit{A grammar describing this computation may be found in
2191 Appendix \refersec{app:typesignaturecomputationgrammar}.
2192 }
2193
2194 \textit{An attribute that refers to another type entry should
2195 be recursively processed or replaced with the name of the
2196 referent (in Step 4, 5 or 6). If neither treatment applies to
2197 an attribute that references another type entry, the entry
2198 that contains that attribute should not be considered for a
2199 separate type unit.}
2200
2201 \textit{If a debugging information entry contains an attribute from
2202 the list above that would require an unsupported form, that
2203 entry should not be considered for a separate type unit.}
2204
2205 \textit{A type should be considered for a separate type unit only
2206 if all of the type entries that it contains or refers to in
2207 Steps 6 and 7 can themselves each be considered for a separate
2208 type unit.}
2209
2210 Where the DWARF producer may reasonably choose two or more
2211 different forms for a given attribute, it should choose
2212 the simplest possible form in computing the signature. (For
2213 example, a constant value should be preferred to a location
2214 expression when possible.)
2215
2216 Once the string S has been formed from the DWARF encoding,
2217 an MD5 hash is computed for the string and the lower 64 bits
2218 are taken as the type signature.
2219
2220 \textit{The string S is intended to be a flattened representation of
2221 the type that uniquely identifies that type (i.e., a different
2222 type is highly unlikely to produce the same string).}
2223
2224 \textit{A debugging information entry should not be placed in a
2225 separate type unit if any of the following apply:}
2226
2227 \begin{itemize}
2228
2229 \item \textit{The entry has an attribute whose value is a location
2230 expression, and the location expression contains a reference to
2231 another debugging information entry (e.g., a \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}
2232 operator), as it is unlikely that the entry will remain
2233 identical across compilation units.}
2234
2235 \item \textit{The entry has an attribute whose value refers
2236 to a code location or a location list.}
2237
2238 \item \textit{The entry has an attribute whose value refers
2239 to another debugging information entry that does not represent
2240 a type.}
2241 \end{itemize}
2242
2243
2244 \textit{Certain attributes are not included in the type signature:}
2245
2246 \begin{itemize}
2247 \item \textit{The \livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration} attribute is not included because it
2248 indicates that the debugging information entry represents an
2249 incomplete declaration, and incomplete declarations should
2250 not be placed in separate type units.}
2251
2252 \item \textit{The \livelink{chap:DWATdescription}{DW\-\_AT\-\_description} attribute is not included because
2253 it does not provide any information unique to the defining
2254 declaration of the type.}
2255
2256 \item \textit{The \livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}, \livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}, and
2257 \livelink{chap:DWATdeclcolumn}{DW\-\_AT\-\_decl\-\_column} attributes are not included because they
2258 may vary from one source file to the next, and would prevent
2259 two otherwise identical type declarations from producing the
2260 same hash.}
2261
2262 \end{itemize}